From 81db3f3227c7d30d2d0e4c396a9366e07406574a Mon Sep 17 00:00:00 2001 From: Hunter Henrichsen Date: Tue, 2 Jan 2024 14:32:10 -0700 Subject: [PATCH] first commit --- .github/workflows/deploy.yml | 50 + animations/.gitignore | 15 + animations/package-lock.json | 1471 + animations/package.json | 21 + animations/src/motion-canvas.d.ts | 1 + animations/src/project.meta | 3 + animations/src/project.ts | 7 + animations/src/scenes/example.meta | 3 + animations/src/scenes/example.tsx | 15 + animations/tsconfig.json | 4 + animations/vite.config.ts | 18 + dist/animations/project.js | 59 + dist/assets/index-d983fe7f.js | 23 + dist/index.html | 20 + dist/public/animations/project.js | 59 + index.html | 19 + node_modules/.bin/esbuild | 12 + node_modules/.bin/esbuild.cmd | 17 + node_modules/.bin/esbuild.ps1 | 28 + node_modules/.bin/nanoid | 12 + node_modules/.bin/nanoid.cmd | 17 + node_modules/.bin/nanoid.ps1 | 28 + node_modules/.bin/rollup | 12 + node_modules/.bin/rollup.cmd | 17 + node_modules/.bin/rollup.ps1 | 28 + node_modules/.bin/vite | 12 + node_modules/.bin/vite.cmd | 17 + node_modules/.bin/vite.ps1 | 28 + node_modules/.package-lock.json | 549 + node_modules/@esbuild/win32-x64/README.md | 3 + node_modules/@esbuild/win32-x64/esbuild.exe | Bin 0 -> 9550848 bytes node_modules/@esbuild/win32-x64/package.json | 17 + node_modules/@motion-canvas/core/LICENSE | 21 + .../@motion-canvas/core/lib/app/Exporter.d.ts | 87 + .../core/lib/app/Exporter.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Exporter.js | 2 + .../core/lib/app/ImageExporter.d.ts | 35 + .../core/lib/app/ImageExporter.d.ts.map | 1 + .../core/lib/app/ImageExporter.js | 89 + .../@motion-canvas/core/lib/app/Logger.d.ts | 38 + .../core/lib/app/Logger.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Logger.js | 68 + .../core/lib/app/PlaybackManager.d.ts | 59 + .../core/lib/app/PlaybackManager.d.ts.map | 1 + .../core/lib/app/PlaybackManager.js | 212 + .../core/lib/app/PlaybackStatus.d.ts | 26 + .../core/lib/app/PlaybackStatus.d.ts.map | 1 + .../core/lib/app/PlaybackStatus.js | 40 + .../@motion-canvas/core/lib/app/Player.d.ts | 117 + .../core/lib/app/Player.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Player.js | 376 + .../core/lib/app/Presenter.d.ts | 68 + .../core/lib/app/Presenter.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Presenter.js | 236 + .../@motion-canvas/core/lib/app/Project.d.ts | 36 + .../core/lib/app/Project.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Project.js | 4 + .../core/lib/app/ProjectMetadata.d.ts | 48 + .../core/lib/app/ProjectMetadata.d.ts.map | 1 + .../core/lib/app/ProjectMetadata.js | 44 + .../@motion-canvas/core/lib/app/Renderer.d.ts | 73 + .../core/lib/app/Renderer.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Renderer.js | 233 + .../core/lib/app/SettingsMetadata.d.ts | 21 + .../core/lib/app/SettingsMetadata.d.ts.map | 1 + .../core/lib/app/SettingsMetadata.js | 20 + .../@motion-canvas/core/lib/app/Stage.d.ts | 31 + .../core/lib/app/Stage.d.ts.map | 1 + .../@motion-canvas/core/lib/app/Stage.js | 74 + .../core/lib/app/TimeEstimator.d.ts | 52 + .../core/lib/app/TimeEstimator.d.ts.map | 1 + .../core/lib/app/TimeEstimator.js | 65 + .../core/lib/app/bootstrap.d.ts | 17 + .../core/lib/app/bootstrap.d.ts.map | 1 + .../@motion-canvas/core/lib/app/bootstrap.js | 41 + .../@motion-canvas/core/lib/app/index.d.ts | 19 + .../core/lib/app/index.d.ts.map | 1 + .../@motion-canvas/core/lib/app/index.js | 19 + .../@motion-canvas/core/lib/app/presets.d.ts | 7 + .../core/lib/app/presets.d.ts.map | 1 + .../@motion-canvas/core/lib/app/presets.js | 20 + .../core/lib/decorators/decorate.d.ts | 2 + .../core/lib/decorators/decorate.d.ts.map | 1 + .../core/lib/decorators/decorate.js | 10 + .../core/lib/decorators/deprecated.d.ts | 5 + .../core/lib/decorators/deprecated.d.ts.map | 1 + .../core/lib/decorators/deprecated.js | 23 + .../core/lib/decorators/index.d.ts | 9 + .../core/lib/decorators/index.d.ts.map | 1 + .../core/lib/decorators/index.js | 9 + .../core/lib/decorators/lazy.d.ts | 14 + .../core/lib/decorators/lazy.d.ts.map | 1 + .../core/lib/decorators/lazy.js | 27 + .../core/lib/decorators/threadable.d.ts | 2 + .../core/lib/decorators/threadable.d.ts.map | 1 + .../core/lib/decorators/threadable.js | 7 + .../core/lib/events/AsyncEventDispatcher.d.ts | 44 + .../lib/events/AsyncEventDispatcher.d.ts.map | 1 + .../core/lib/events/AsyncEventDispatcher.js | 33 + .../core/lib/events/EventDispatcher.d.ts | 37 + .../core/lib/events/EventDispatcher.d.ts.map | 1 + .../core/lib/events/EventDispatcher.js | 29 + .../core/lib/events/EventDispatcherBase.d.ts | 55 + .../lib/events/EventDispatcherBase.d.ts.map | 1 + .../core/lib/events/EventDispatcherBase.js | 68 + .../core/lib/events/FlagDispatcher.d.ts | 53 + .../core/lib/events/FlagDispatcher.d.ts.map | 1 + .../core/lib/events/FlagDispatcher.js | 63 + .../core/lib/events/ValueDispatcher.d.ts | 80 + .../core/lib/events/ValueDispatcher.d.ts.map | 1 + .../core/lib/events/ValueDispatcher.js | 97 + .../@motion-canvas/core/lib/events/index.d.ts | 11 + .../core/lib/events/index.d.ts.map | 1 + .../@motion-canvas/core/lib/events/index.js | 11 + .../@motion-canvas/core/lib/flow/all.d.ts | 18 + .../@motion-canvas/core/lib/flow/all.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/all.js | 25 + .../@motion-canvas/core/lib/flow/any.d.ts | 18 + .../@motion-canvas/core/lib/flow/any.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/any.js | 25 + .../@motion-canvas/core/lib/flow/chain.d.ts | 36 + .../core/lib/flow/chain.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/chain.js | 47 + .../@motion-canvas/core/lib/flow/delay.d.ts | 29 + .../core/lib/flow/delay.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/delay.js | 40 + .../@motion-canvas/core/lib/flow/every.d.ts | 42 + .../core/lib/flow/every.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/every.js | 61 + .../@motion-canvas/core/lib/flow/index.d.ts | 17 + .../core/lib/flow/index.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/index.js | 17 + .../@motion-canvas/core/lib/flow/loop.d.ts | 38 + .../core/lib/flow/loop.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/loop.js | 40 + .../@motion-canvas/core/lib/flow/loopFor.d.ts | 25 + .../core/lib/flow/loopFor.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/loopFor.js | 42 + .../core/lib/flow/loopUntil.d.ts | 25 + .../core/lib/flow/loopUntil.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/loopUntil.js | 29 + .../@motion-canvas/core/lib/flow/noop.d.ts | 6 + .../core/lib/flow/noop.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/noop.js | 9 + .../@motion-canvas/core/lib/flow/run.d.ts | 29 + .../@motion-canvas/core/lib/flow/run.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/run.js | 14 + .../core/lib/flow/scheduling.d.ts | 34 + .../core/lib/flow/scheduling.d.ts.map | 1 + .../core/lib/flow/scheduling.js | 55 + .../core/lib/flow/sequence.d.ts | 22 + .../core/lib/flow/sequence.d.ts.map | 1 + .../@motion-canvas/core/lib/flow/sequence.js | 31 + .../@motion-canvas/core/lib/index.d.ts | 16 + .../@motion-canvas/core/lib/index.d.ts.map | 1 + node_modules/@motion-canvas/core/lib/index.js | 16 + .../core/lib/media/AudioData.d.ts | 20 + .../core/lib/media/AudioData.d.ts.map | 1 + .../core/lib/media/AudioData.js | 2 + .../core/lib/media/AudioManager.d.ts | 34 + .../core/lib/media/AudioManager.d.ts.map | 1 + .../core/lib/media/AudioManager.js | 150 + .../@motion-canvas/core/lib/media/index.d.ts | 9 + .../core/lib/media/index.d.ts.map | 1 + .../@motion-canvas/core/lib/media/index.js | 9 + .../core/lib/media/loadImage.d.ts | 8 + .../core/lib/media/loadImage.d.ts.map | 1 + .../core/lib/media/loadImage.js | 29 + .../core/lib/meta/BoolMetaField.d.ts | 9 + .../core/lib/meta/BoolMetaField.d.ts.map | 1 + .../core/lib/meta/BoolMetaField.js | 14 + .../core/lib/meta/ColorMetaField.d.ts | 11 + .../core/lib/meta/ColorMetaField.d.ts.map | 1 + .../core/lib/meta/ColorMetaField.js | 18 + .../core/lib/meta/EnumMetaField.d.ts | 15 + .../core/lib/meta/EnumMetaField.d.ts.map | 1 + .../core/lib/meta/EnumMetaField.js | 22 + .../core/lib/meta/ExporterMetaFile.d.ts | 35 + .../core/lib/meta/ExporterMetaFile.d.ts.map | 1 + .../core/lib/meta/ExporterMetaFile.js | 68 + .../core/lib/meta/MetaField.d.ts | 80 + .../core/lib/meta/MetaField.d.ts.map | 1 + .../@motion-canvas/core/lib/meta/MetaField.js | 104 + .../core/lib/meta/MetaFile.d.ts | 35 + .../core/lib/meta/MetaFile.d.ts.map | 1 + .../@motion-canvas/core/lib/meta/MetaFile.js | 96 + .../core/lib/meta/MetaOption.d.ts | 5 + .../core/lib/meta/MetaOption.d.ts.map | 1 + .../core/lib/meta/MetaOption.js | 2 + .../core/lib/meta/NumberMetaField.d.ts | 16 + .../core/lib/meta/NumberMetaField.d.ts.map | 1 + .../core/lib/meta/NumberMetaField.js | 34 + .../core/lib/meta/ObjectMetaField.d.ts | 43 + .../core/lib/meta/ObjectMetaField.d.ts.map | 1 + .../core/lib/meta/ObjectMetaField.js | 65 + .../core/lib/meta/RangeMetaField.d.ts | 34 + .../core/lib/meta/RangeMetaField.d.ts.map | 1 + .../core/lib/meta/RangeMetaField.js | 47 + .../core/lib/meta/StringMetaField.d.ts | 12 + .../core/lib/meta/StringMetaField.d.ts.map | 1 + .../core/lib/meta/StringMetaField.js | 19 + .../core/lib/meta/Vector2MetaField.d.ts | 11 + .../core/lib/meta/Vector2MetaField.d.ts.map | 1 + .../core/lib/meta/Vector2MetaField.js | 18 + .../@motion-canvas/core/lib/meta/index.d.ts | 18 + .../core/lib/meta/index.d.ts.map | 1 + .../@motion-canvas/core/lib/meta/index.js | 18 + .../core/lib/plugin/DefaultPlugin.d.ts | 8 + .../core/lib/plugin/DefaultPlugin.d.ts.map | 1 + .../core/lib/plugin/DefaultPlugin.js | 14 + .../core/lib/plugin/Plugin.d.ts | 44 + .../core/lib/plugin/Plugin.d.ts.map | 1 + .../@motion-canvas/core/lib/plugin/Plugin.js | 2 + .../@motion-canvas/core/lib/plugin/index.d.ts | 3 + .../core/lib/plugin/index.d.ts.map | 1 + .../@motion-canvas/core/lib/plugin/index.js | 3 + .../core/lib/plugin/makePlugin.d.ts | 15 + .../core/lib/plugin/makePlugin.d.ts.map | 1 + .../core/lib/plugin/makePlugin.js | 16 + .../core/lib/scenes/GeneratorScene.d.ts | 92 + .../core/lib/scenes/GeneratorScene.d.ts.map | 1 + .../core/lib/scenes/GeneratorScene.js | 267 + .../core/lib/scenes/Inspectable.d.ts | 71 + .../core/lib/scenes/Inspectable.d.ts.map | 1 + .../core/lib/scenes/Inspectable.js | 4 + .../core/lib/scenes/LifecycleEvents.d.ts | 18 + .../core/lib/scenes/LifecycleEvents.d.ts.map | 1 + .../core/lib/scenes/LifecycleEvents.js | 45 + .../core/lib/scenes/Random.d.ts | 64 + .../core/lib/scenes/Random.d.ts.map | 1 + .../@motion-canvas/core/lib/scenes/Random.js | 99 + .../@motion-canvas/core/lib/scenes/Scene.d.ts | 268 + .../core/lib/scenes/Scene.d.ts.map | 1 + .../@motion-canvas/core/lib/scenes/Scene.js | 25 + .../core/lib/scenes/SceneMetadata.d.ts | 15 + .../core/lib/scenes/SceneMetadata.d.ts.map | 1 + .../core/lib/scenes/SceneMetadata.js | 13 + .../core/lib/scenes/SceneState.d.ts | 34 + .../core/lib/scenes/SceneState.d.ts.map | 1 + .../core/lib/scenes/SceneState.js | 35 + .../core/lib/scenes/Slides.d.ts | 33 + .../core/lib/scenes/Slides.d.ts.map | 1 + .../@motion-canvas/core/lib/scenes/Slides.js | 115 + .../core/lib/scenes/Threadable.d.ts | 19 + .../core/lib/scenes/Threadable.d.ts.map | 1 + .../core/lib/scenes/Threadable.js | 4 + .../core/lib/scenes/Variables.d.ts | 24 + .../core/lib/scenes/Variables.d.ts.map | 1 + .../core/lib/scenes/Variables.js | 39 + .../@motion-canvas/core/lib/scenes/index.d.ts | 16 + .../core/lib/scenes/index.d.ts.map | 1 + .../@motion-canvas/core/lib/scenes/index.js | 16 + .../scenes/timeEvents/EditableTimeEvents.d.ts | 35 + .../timeEvents/EditableTimeEvents.d.ts.map | 1 + .../scenes/timeEvents/EditableTimeEvents.js | 147 + .../scenes/timeEvents/ReadOnlyTimeEvents.d.ts | 20 + .../timeEvents/ReadOnlyTimeEvents.d.ts.map | 1 + .../scenes/timeEvents/ReadOnlyTimeEvents.js | 36 + .../timeEvents/SerializedTimeEvent.d.ts | 14 + .../timeEvents/SerializedTimeEvent.d.ts.map | 1 + .../scenes/timeEvents/SerializedTimeEvent.js | 2 + .../core/lib/scenes/timeEvents/TimeEvent.d.ts | 32 + .../lib/scenes/timeEvents/TimeEvent.d.ts.map | 1 + .../core/lib/scenes/timeEvents/TimeEvent.js | 2 + .../lib/scenes/timeEvents/TimeEvents.d.ts | 36 + .../lib/scenes/timeEvents/TimeEvents.d.ts.map | 1 + .../core/lib/scenes/timeEvents/TimeEvents.js | 2 + .../core/lib/scenes/timeEvents/index.d.ts | 6 + .../core/lib/scenes/timeEvents/index.d.ts.map | 1 + .../core/lib/scenes/timeEvents/index.js | 6 + .../lib/signals/CompoundSignalContext.d.ts | 18 + .../signals/CompoundSignalContext.d.ts.map | 1 + .../core/lib/signals/CompoundSignalContext.js | 62 + .../core/lib/signals/ComputedContext.d.ts | 14 + .../core/lib/signals/ComputedContext.d.ts.map | 1 + .../core/lib/signals/ComputedContext.js | 36 + .../core/lib/signals/DependencyContext.d.ts | 31 + .../lib/signals/DependencyContext.d.ts.map | 1 + .../core/lib/signals/DependencyContext.js | 87 + .../core/lib/signals/SignalContext.d.ts | 111 + .../core/lib/signals/SignalContext.d.ts.map | 1 + .../core/lib/signals/SignalContext.js | 230 + .../core/lib/signals/createComputed.d.ts | 3 + .../core/lib/signals/createComputed.d.ts.map | 1 + .../core/lib/signals/createComputed.js | 5 + .../core/lib/signals/createComputedAsync.d.ts | 4 + .../lib/signals/createComputedAsync.d.ts.map | 1 + .../core/lib/signals/createComputedAsync.js | 14 + .../core/lib/signals/createSignal.d.ts | 4 + .../core/lib/signals/createSignal.d.ts.map | 1 + .../core/lib/signals/createSignal.js | 6 + .../core/lib/signals/index.d.ts | 16 + .../core/lib/signals/index.d.ts.map | 1 + .../@motion-canvas/core/lib/signals/index.js | 16 + .../core/lib/signals/symbols.d.ts | 2 + .../core/lib/signals/symbols.d.ts.map | 1 + .../core/lib/signals/symbols.js | 2 + .../core/lib/signals/types.d.ts | 51 + .../core/lib/signals/types.d.ts.map | 1 + .../@motion-canvas/core/lib/signals/types.js | 2 + .../core/lib/signals/utils.d.ts | 5 + .../core/lib/signals/utils.d.ts.map | 1 + .../@motion-canvas/core/lib/signals/utils.js | 10 + .../core/lib/threading/Thread.d.ts | 69 + .../core/lib/threading/Thread.d.ts.map | 1 + .../core/lib/threading/Thread.js | 99 + .../core/lib/threading/ThreadGenerator.d.ts | 39 + .../lib/threading/ThreadGenerator.d.ts.map | 1 + .../core/lib/threading/ThreadGenerator.js | 17 + .../core/lib/threading/cancel.d.ts | 17 + .../core/lib/threading/cancel.d.ts.map | 1 + .../core/lib/threading/cancel.js | 26 + .../core/lib/threading/index.d.ts | 12 + .../core/lib/threading/index.d.ts.map | 1 + .../core/lib/threading/index.js | 12 + .../core/lib/threading/join.d.ts | 35 + .../core/lib/threading/join.d.ts.map | 1 + .../@motion-canvas/core/lib/threading/join.js | 33 + .../core/lib/threading/names.d.ts | 3 + .../core/lib/threading/names.d.ts.map | 1 + .../core/lib/threading/names.js | 11 + .../core/lib/threading/threads.d.ts | 46 + .../core/lib/threading/threads.d.ts.map | 1 + .../core/lib/threading/threads.js | 84 + .../core/lib/transitions/fadeTransition.d.ts | 8 + .../lib/transitions/fadeTransition.d.ts.map | 1 + .../core/lib/transitions/fadeTransition.js | 16 + .../core/lib/transitions/index.d.ts | 11 + .../core/lib/transitions/index.d.ts.map | 1 + .../core/lib/transitions/index.js | 11 + .../core/lib/transitions/slideTransition.d.ts | 17 + .../lib/transitions/slideTransition.d.ts.map | 1 + .../core/lib/transitions/slideTransition.js | 14 + .../core/lib/transitions/useTransition.d.ts | 8 + .../lib/transitions/useTransition.d.ts.map | 1 + .../core/lib/transitions/useTransition.js | 25 + .../lib/transitions/zoomInTransition.d.ts | 10 + .../lib/transitions/zoomInTransition.d.ts.map | 1 + .../core/lib/transitions/zoomInTransition.js | 33 + .../lib/transitions/zoomOutTransition.d.ts | 10 + .../transitions/zoomOutTransition.d.ts.map | 1 + .../core/lib/transitions/zoomOutTransition.js | 33 + .../core/lib/tweening/index.d.ts | 10 + .../core/lib/tweening/index.d.ts.map | 1 + .../@motion-canvas/core/lib/tweening/index.js | 10 + .../lib/tweening/interpolationFunctions.d.ts | 39 + .../tweening/interpolationFunctions.d.ts.map | 1 + .../lib/tweening/interpolationFunctions.js | 119 + .../core/lib/tweening/spring.d.ts | 20 + .../core/lib/tweening/spring.d.ts.map | 1 + .../core/lib/tweening/spring.js | 103 + .../core/lib/tweening/timingFunctions.d.ts | 46 + .../lib/tweening/timingFunctions.d.ts.map | 1 + .../core/lib/tweening/timingFunctions.js | 232 + .../core/lib/tweening/tween.d.ts | 3 + .../core/lib/tweening/tween.d.ts.map | 1 + .../@motion-canvas/core/lib/tweening/tween.js | 21 + .../@motion-canvas/core/lib/types/BBox.d.ts | 61 + .../core/lib/types/BBox.d.ts.map | 1 + .../@motion-canvas/core/lib/types/BBox.js | 225 + .../@motion-canvas/core/lib/types/Canvas.d.ts | 3 + .../core/lib/types/Canvas.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Canvas.js | 2 + .../@motion-canvas/core/lib/types/Color.d.ts | 41 + .../core/lib/types/Color.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Color.js | 42 + .../@motion-canvas/core/lib/types/Matrix.d.ts | 3 + .../core/lib/types/Matrix.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Matrix.js | 8 + .../core/lib/types/Matrix2D.d.ts | 361 + .../core/lib/types/Matrix2D.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Matrix2D.js | 551 + .../@motion-canvas/core/lib/types/Origin.d.ts | 37 + .../core/lib/types/Origin.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Origin.js | 76 + .../core/lib/types/Spacing.d.ts | 35 + .../core/lib/types/Spacing.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Spacing.js | 67 + .../@motion-canvas/core/lib/types/Type.d.ts | 6 + .../core/lib/types/Type.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Type.js | 5 + .../@motion-canvas/core/lib/types/Vector.d.ts | 188 + .../core/lib/types/Vector.d.ts.map | 1 + .../@motion-canvas/core/lib/types/Vector.js | 351 + .../@motion-canvas/core/lib/types/index.d.ts | 15 + .../core/lib/types/index.d.ts.map | 1 + .../@motion-canvas/core/lib/types/index.js | 15 + .../core/lib/utils/DetailedError.d.ts | 5 + .../core/lib/utils/DetailedError.d.ts.map | 1 + .../core/lib/utils/DetailedError.js | 7 + .../core/lib/utils/Semaphore.d.ts | 12 + .../core/lib/utils/Semaphore.d.ts.map | 1 + .../core/lib/utils/Semaphore.js | 25 + .../core/lib/utils/beginSlide.d.ts | 3 + .../core/lib/utils/beginSlide.d.ts.map | 1 + .../core/lib/utils/beginSlide.js | 12 + .../core/lib/utils/capitalize.d.ts | 2 + .../core/lib/utils/capitalize.d.ts.map | 1 + .../core/lib/utils/capitalize.js | 4 + .../core/lib/utils/createRef.d.ts | 15 + .../core/lib/utils/createRef.d.ts.map | 1 + .../core/lib/utils/createRef.js | 21 + .../core/lib/utils/createRefArray.d.ts | 27 + .../core/lib/utils/createRefArray.d.ts.map | 1 + .../core/lib/utils/createRefArray.js | 49 + .../core/lib/utils/createRefMap.d.ts | 50 + .../core/lib/utils/createRefMap.d.ts.map | 1 + .../core/lib/utils/createRefMap.js | 77 + .../@motion-canvas/core/lib/utils/debug.d.ts | 24 + .../core/lib/utils/debug.d.ts.map | 1 + .../@motion-canvas/core/lib/utils/debug.js | 47 + .../core/lib/utils/deprecate.d.ts | 9 + .../core/lib/utils/deprecate.d.ts.map | 1 + .../core/lib/utils/deprecate.js | 15 + .../core/lib/utils/errorToLog.d.ts | 3 + .../core/lib/utils/errorToLog.d.ts.map | 1 + .../core/lib/utils/errorToLog.js | 8 + .../core/lib/utils/getContext.d.ts | 2 + .../core/lib/utils/getContext.d.ts.map | 1 + .../core/lib/utils/getContext.js | 8 + .../@motion-canvas/core/lib/utils/index.d.ts | 27 + .../core/lib/utils/index.d.ts.map | 1 + .../@motion-canvas/core/lib/utils/index.js | 27 + .../@motion-canvas/core/lib/utils/math.d.ts | 15 + .../core/lib/utils/math.d.ts.map | 1 + .../@motion-canvas/core/lib/utils/math.js | 15 + .../core/lib/utils/proxyUtils.d.ts | 25 + .../core/lib/utils/proxyUtils.d.ts.map | 1 + .../core/lib/utils/proxyUtils.js | 136 + .../@motion-canvas/core/lib/utils/range.d.ts | 40 + .../core/lib/utils/range.d.ts.map | 1 + .../@motion-canvas/core/lib/utils/range.js | 18 + .../core/lib/utils/useContext.d.ts | 13 + .../core/lib/utils/useContext.d.ts.map | 1 + .../core/lib/utils/useContext.js | 18 + .../core/lib/utils/useDuration.d.ts | 26 + .../core/lib/utils/useDuration.d.ts.map | 1 + .../core/lib/utils/useDuration.js | 32 + .../core/lib/utils/usePlayback.d.ts | 8 + .../core/lib/utils/usePlayback.d.ts.map | 1 + .../core/lib/utils/usePlayback.js | 20 + .../core/lib/utils/useRandom.d.ts | 14 + .../core/lib/utils/useRandom.d.ts.map | 1 + .../core/lib/utils/useRandom.js | 8 + .../core/lib/utils/useScene.d.ts | 17 + .../core/lib/utils/useScene.d.ts.map | 1 + .../@motion-canvas/core/lib/utils/useScene.js | 33 + .../core/lib/utils/useThread.d.ts | 8 + .../core/lib/utils/useThread.d.ts.map | 1 + .../core/lib/utils/useThread.js | 21 + .../core/lib/utils/useTime.d.ts | 19 + .../core/lib/utils/useTime.d.ts.map | 1 + .../@motion-canvas/core/lib/utils/useTime.js | 22 + node_modules/@motion-canvas/core/package.json | 39 + node_modules/@motion-canvas/core/project.d.ts | 29 + .../@motion-canvas/core/tsconfig.project.json | 14 + node_modules/@motion-canvas/player/LICENSE | 21 + .../@motion-canvas/player/dist/main.js | 1377 + .../@motion-canvas/player/package.json | 30 + .../@motion-canvas/player/types/main.d.ts | 8 + node_modules/@nodelib/fs.scandir/LICENSE | 21 + node_modules/@nodelib/fs.scandir/README.md | 171 + .../@nodelib/fs.scandir/out/adapters/fs.d.ts | 20 + .../@nodelib/fs.scandir/out/adapters/fs.js | 19 + .../@nodelib/fs.scandir/out/constants.d.ts | 4 + .../@nodelib/fs.scandir/out/constants.js | 17 + .../@nodelib/fs.scandir/out/index.d.ts | 12 + node_modules/@nodelib/fs.scandir/out/index.js | 26 + .../fs.scandir/out/providers/async.d.ts | 7 + .../fs.scandir/out/providers/async.js | 104 + .../fs.scandir/out/providers/common.d.ts | 1 + .../fs.scandir/out/providers/common.js | 13 + .../fs.scandir/out/providers/sync.d.ts | 5 + .../@nodelib/fs.scandir/out/providers/sync.js | 54 + .../@nodelib/fs.scandir/out/settings.d.ts | 20 + .../@nodelib/fs.scandir/out/settings.js | 24 + .../@nodelib/fs.scandir/out/types/index.d.ts | 20 + .../@nodelib/fs.scandir/out/types/index.js | 2 + .../@nodelib/fs.scandir/out/utils/fs.d.ts | 2 + .../@nodelib/fs.scandir/out/utils/fs.js | 19 + .../@nodelib/fs.scandir/out/utils/index.d.ts | 2 + .../@nodelib/fs.scandir/out/utils/index.js | 5 + node_modules/@nodelib/fs.scandir/package.json | 44 + node_modules/@nodelib/fs.stat/LICENSE | 21 + node_modules/@nodelib/fs.stat/README.md | 126 + .../@nodelib/fs.stat/out/adapters/fs.d.ts | 13 + .../@nodelib/fs.stat/out/adapters/fs.js | 17 + node_modules/@nodelib/fs.stat/out/index.d.ts | 12 + node_modules/@nodelib/fs.stat/out/index.js | 26 + .../@nodelib/fs.stat/out/providers/async.d.ts | 4 + .../@nodelib/fs.stat/out/providers/async.js | 36 + .../@nodelib/fs.stat/out/providers/sync.d.ts | 3 + .../@nodelib/fs.stat/out/providers/sync.js | 23 + .../@nodelib/fs.stat/out/settings.d.ts | 16 + node_modules/@nodelib/fs.stat/out/settings.js | 16 + .../@nodelib/fs.stat/out/types/index.d.ts | 4 + .../@nodelib/fs.stat/out/types/index.js | 2 + node_modules/@nodelib/fs.stat/package.json | 37 + node_modules/@nodelib/fs.walk/LICENSE | 21 + node_modules/@nodelib/fs.walk/README.md | 215 + node_modules/@nodelib/fs.walk/out/index.d.ts | 14 + node_modules/@nodelib/fs.walk/out/index.js | 34 + .../@nodelib/fs.walk/out/providers/async.d.ts | 12 + .../@nodelib/fs.walk/out/providers/async.js | 30 + .../@nodelib/fs.walk/out/providers/index.d.ts | 4 + .../@nodelib/fs.walk/out/providers/index.js | 9 + .../fs.walk/out/providers/stream.d.ts | 12 + .../@nodelib/fs.walk/out/providers/stream.js | 34 + .../@nodelib/fs.walk/out/providers/sync.d.ts | 10 + .../@nodelib/fs.walk/out/providers/sync.js | 14 + .../@nodelib/fs.walk/out/readers/async.d.ts | 30 + .../@nodelib/fs.walk/out/readers/async.js | 97 + .../@nodelib/fs.walk/out/readers/common.d.ts | 7 + .../@nodelib/fs.walk/out/readers/common.js | 31 + .../@nodelib/fs.walk/out/readers/reader.d.ts | 6 + .../@nodelib/fs.walk/out/readers/reader.js | 11 + .../@nodelib/fs.walk/out/readers/sync.d.ts | 15 + .../@nodelib/fs.walk/out/readers/sync.js | 59 + .../@nodelib/fs.walk/out/settings.d.ts | 30 + node_modules/@nodelib/fs.walk/out/settings.js | 26 + .../@nodelib/fs.walk/out/types/index.d.ts | 8 + .../@nodelib/fs.walk/out/types/index.js | 2 + node_modules/@nodelib/fs.walk/package.json | 44 + node_modules/@types/chroma-js/LICENSE | 21 + node_modules/@types/chroma-js/README.md | 15 + node_modules/@types/chroma-js/index.d.ts | 534 + node_modules/@types/chroma-js/package.json | 35 + node_modules/anymatch/LICENSE | 15 + node_modules/anymatch/README.md | 87 + node_modules/anymatch/index.d.ts | 20 + node_modules/anymatch/index.js | 104 + node_modules/anymatch/package.json | 48 + .../binary-extensions/binary-extensions.json | 260 + .../binary-extensions.json.d.ts | 3 + node_modules/binary-extensions/index.d.ts | 14 + node_modules/binary-extensions/index.js | 1 + node_modules/binary-extensions/license | 9 + node_modules/binary-extensions/package.json | 38 + node_modules/binary-extensions/readme.md | 41 + node_modules/braces/CHANGELOG.md | 184 + node_modules/braces/LICENSE | 21 + node_modules/braces/README.md | 593 + node_modules/braces/index.js | 170 + node_modules/braces/lib/compile.js | 57 + node_modules/braces/lib/constants.js | 57 + node_modules/braces/lib/expand.js | 113 + node_modules/braces/lib/parse.js | 333 + node_modules/braces/lib/stringify.js | 32 + node_modules/braces/lib/utils.js | 112 + node_modules/braces/package.json | 77 + node_modules/chokidar/LICENSE | 21 + node_modules/chokidar/README.md | 308 + node_modules/chokidar/index.js | 973 + node_modules/chokidar/lib/constants.js | 65 + node_modules/chokidar/lib/fsevents-handler.js | 524 + node_modules/chokidar/lib/nodefs-handler.js | 654 + node_modules/chokidar/package.json | 85 + node_modules/chokidar/types/index.d.ts | 188 + node_modules/chroma-js/.eslintrc.cjs | 15 + node_modules/chroma-js/CHANGELOG.md | 80 + node_modules/chroma-js/LICENSE | 54 + node_modules/chroma-js/chroma-light.js | 1169 + node_modules/chroma-js/chroma-light.min.js | 58 + node_modules/chroma-js/chroma.js | 3583 + node_modules/chroma-js/chroma.min.js | 58 + node_modules/chroma-js/index-light.js | 31 + node_modules/chroma-js/index.js | 72 + node_modules/chroma-js/package.json | 74 + node_modules/chroma-js/readme.md | 112 + node_modules/chroma-js/src/Color.js | 50 + node_modules/chroma-js/src/chroma.js | 9 + .../chroma-js/src/colors/colorbrewer.js | 69 + node_modules/chroma-js/src/colors/w3cx11.js | 165 + .../chroma-js/src/generator/average.js | 82 + .../chroma-js/src/generator/bezier.js | 69 + node_modules/chroma-js/src/generator/blend.js | 58 + .../chroma-js/src/generator/cubehelix.js | 78 + node_modules/chroma-js/src/generator/mix.js | 18 + .../chroma-js/src/generator/random.js | 12 + node_modules/chroma-js/src/generator/scale.js | 366 + .../chroma-js/src/interpolator/_hsx.js | 57 + .../chroma-js/src/interpolator/hcg.js | 11 + .../chroma-js/src/interpolator/hsi.js | 11 + .../chroma-js/src/interpolator/hsl.js | 11 + .../chroma-js/src/interpolator/hsv.js | 11 + .../chroma-js/src/interpolator/index.js | 1 + .../chroma-js/src/interpolator/lab.js | 19 + .../chroma-js/src/interpolator/lch.js | 12 + .../chroma-js/src/interpolator/lrgb.js | 18 + .../chroma-js/src/interpolator/num.js | 14 + .../chroma-js/src/interpolator/oklab.js | 19 + .../chroma-js/src/interpolator/oklch.js | 11 + .../chroma-js/src/interpolator/rgb.js | 17 + .../chroma-js/src/io/cmyk/cmyk2rgb.js | 16 + node_modules/chroma-js/src/io/cmyk/index.js | 24 + .../chroma-js/src/io/cmyk/rgb2cmyk.js | 17 + node_modules/chroma-js/src/io/css/css2rgb.js | 94 + node_modules/chroma-js/src/io/css/hsl2css.js | 28 + node_modules/chroma-js/src/io/css/index.js | 26 + node_modules/chroma-js/src/io/css/rgb2css.js | 30 + node_modules/chroma-js/src/io/delta-e.coffee | 29 + node_modules/chroma-js/src/io/distance.coffee | 13 + node_modules/chroma-js/src/io/gl/index.js | 19 + node_modules/chroma-js/src/io/hcg/hcg2rgb.js | 43 + node_modules/chroma-js/src/io/hcg/index.js | 24 + node_modules/chroma-js/src/io/hcg/rgb2hcg.js | 23 + node_modules/chroma-js/src/io/hex/hex2rgb.js | 48 + node_modules/chroma-js/src/io/hex/index.js | 22 + node_modules/chroma-js/src/io/hex/rgb2hex.js | 26 + node_modules/chroma-js/src/io/hsi/hsi2rgb.js | 45 + node_modules/chroma-js/src/io/hsi/index.js | 24 + node_modules/chroma-js/src/io/hsi/rgb2hsi.js | 32 + node_modules/chroma-js/src/io/hsl/hsl2rgb.js | 40 + node_modules/chroma-js/src/io/hsl/index.js | 24 + node_modules/chroma-js/src/io/hsl/rgb2hsl.js | 42 + node_modules/chroma-js/src/io/hsv/hsv2rgb.js | 36 + node_modules/chroma-js/src/io/hsv/index.js | 24 + node_modules/chroma-js/src/io/hsv/rgb2hsv.js | 32 + node_modules/chroma-js/src/io/input.js | 4 + node_modules/chroma-js/src/io/lab/index.js | 24 + .../chroma-js/src/io/lab/lab-constants.js | 16 + node_modules/chroma-js/src/io/lab/lab2rgb.js | 38 + node_modules/chroma-js/src/io/lab/rgb2lab.js | 32 + node_modules/chroma-js/src/io/lch/hcl2rgb.js | 9 + node_modules/chroma-js/src/io/lch/index.js | 26 + node_modules/chroma-js/src/io/lch/lab2lch.js | 12 + node_modules/chroma-js/src/io/lch/lch2lab.js | 18 + node_modules/chroma-js/src/io/lch/lch2rgb.js | 13 + node_modules/chroma-js/src/io/lch/rgb2lch.js | 11 + node_modules/chroma-js/src/io/named/index.js | 30 + node_modules/chroma-js/src/io/num/index.js | 24 + node_modules/chroma-js/src/io/num/num2rgb.js | 13 + node_modules/chroma-js/src/io/num/rgb2num.js | 8 + node_modules/chroma-js/src/io/oklab/index.js | 24 + .../chroma-js/src/io/oklab/oklab2rgb.js | 33 + .../chroma-js/src/io/oklab/rgb2oklab.js | 28 + node_modules/chroma-js/src/io/oklch/index.js | 24 + .../chroma-js/src/io/oklch/oklch2rgb.js | 13 + .../chroma-js/src/io/oklch/rgb2oklch.js | 11 + node_modules/chroma-js/src/io/rgb/index.js | 35 + node_modules/chroma-js/src/io/temp/index.js | 21 + .../chroma-js/src/io/temp/rgb2temperature.js | 29 + .../chroma-js/src/io/temp/temperature2rgb.js | 23 + node_modules/chroma-js/src/ops/alpha.js | 13 + node_modules/chroma-js/src/ops/clipped.js | 5 + node_modules/chroma-js/src/ops/darken.js | 17 + node_modules/chroma-js/src/ops/get.js | 13 + node_modules/chroma-js/src/ops/luminance.js | 52 + node_modules/chroma-js/src/ops/mix.js | 7 + node_modules/chroma-js/src/ops/premultiply.js | 12 + node_modules/chroma-js/src/ops/saturate.js | 16 + node_modules/chroma-js/src/ops/set.js | 43 + node_modules/chroma-js/src/utils/analyze.js | 191 + node_modules/chroma-js/src/utils/clip_rgb.js | 15 + node_modules/chroma-js/src/utils/contrast.js | 12 + node_modules/chroma-js/src/utils/delta-e.js | 47 + node_modules/chroma-js/src/utils/distance.js | 17 + node_modules/chroma-js/src/utils/index.js | 16 + node_modules/chroma-js/src/utils/last.js | 8 + node_modules/chroma-js/src/utils/limit.js | 3 + node_modules/chroma-js/src/utils/scales.js | 10 + node_modules/chroma-js/src/utils/type.js | 8 + node_modules/chroma-js/src/utils/unpack.js | 16 + node_modules/chroma-js/src/utils/valid.js | 10 + node_modules/esbuild/LICENSE.md | 21 + node_modules/esbuild/README.md | 3 + node_modules/esbuild/bin/esbuild | 221 + node_modules/esbuild/install.js | 287 + node_modules/esbuild/lib/main.d.ts | 660 + node_modules/esbuild/lib/main.js | 2393 + node_modules/esbuild/package.json | 42 + node_modules/fast-glob/LICENSE | 21 + node_modules/fast-glob/README.md | 830 + node_modules/fast-glob/out/index.d.ts | 40 + node_modules/fast-glob/out/index.js | 102 + .../fast-glob/out/managers/tasks.d.ts | 22 + node_modules/fast-glob/out/managers/tasks.js | 110 + .../fast-glob/out/providers/async.d.ts | 9 + node_modules/fast-glob/out/providers/async.js | 23 + .../fast-glob/out/providers/filters/deep.d.ts | 16 + .../fast-glob/out/providers/filters/deep.js | 62 + .../out/providers/filters/entry.d.ts | 16 + .../fast-glob/out/providers/filters/entry.js | 63 + .../out/providers/filters/error.d.ts | 8 + .../fast-glob/out/providers/filters/error.js | 15 + .../out/providers/matchers/matcher.d.ts | 33 + .../out/providers/matchers/matcher.js | 45 + .../out/providers/matchers/partial.d.ts | 4 + .../out/providers/matchers/partial.js | 38 + .../fast-glob/out/providers/provider.d.ts | 19 + .../fast-glob/out/providers/provider.js | 48 + .../fast-glob/out/providers/stream.d.ts | 11 + .../fast-glob/out/providers/stream.js | 31 + .../fast-glob/out/providers/sync.d.ts | 9 + node_modules/fast-glob/out/providers/sync.js | 23 + .../out/providers/transformers/entry.d.ts | 8 + .../out/providers/transformers/entry.js | 26 + node_modules/fast-glob/out/readers/async.d.ts | 10 + node_modules/fast-glob/out/readers/async.js | 35 + .../fast-glob/out/readers/reader.d.ts | 15 + node_modules/fast-glob/out/readers/reader.js | 33 + .../fast-glob/out/readers/stream.d.ts | 14 + node_modules/fast-glob/out/readers/stream.js | 55 + node_modules/fast-glob/out/readers/sync.d.ts | 12 + node_modules/fast-glob/out/readers/sync.js | 43 + node_modules/fast-glob/out/settings.d.ts | 164 + node_modules/fast-glob/out/settings.js | 59 + node_modules/fast-glob/out/types/index.d.ts | 31 + node_modules/fast-glob/out/types/index.js | 2 + node_modules/fast-glob/out/utils/array.d.ts | 2 + node_modules/fast-glob/out/utils/array.js | 22 + node_modules/fast-glob/out/utils/errno.d.ts | 2 + node_modules/fast-glob/out/utils/errno.js | 7 + node_modules/fast-glob/out/utils/fs.d.ts | 4 + node_modules/fast-glob/out/utils/fs.js | 19 + node_modules/fast-glob/out/utils/index.d.ts | 8 + node_modules/fast-glob/out/utils/index.js | 17 + node_modules/fast-glob/out/utils/path.d.ts | 13 + node_modules/fast-glob/out/utils/path.js | 68 + node_modules/fast-glob/out/utils/pattern.d.ts | 47 + node_modules/fast-glob/out/utils/pattern.js | 188 + node_modules/fast-glob/out/utils/stream.d.ts | 4 + node_modules/fast-glob/out/utils/stream.js | 17 + node_modules/fast-glob/out/utils/string.d.ts | 2 + node_modules/fast-glob/out/utils/string.js | 11 + node_modules/fast-glob/package.json | 81 + node_modules/fastq/.github/dependabot.yml | 11 + node_modules/fastq/.github/workflows/ci.yml | 50 + node_modules/fastq/LICENSE | 13 + node_modules/fastq/README.md | 309 + node_modules/fastq/bench.js | 66 + node_modules/fastq/example.js | 14 + node_modules/fastq/example.mjs | 11 + node_modules/fastq/index.d.ts | 37 + node_modules/fastq/package.json | 52 + node_modules/fastq/queue.js | 289 + node_modules/fastq/test/example.ts | 81 + node_modules/fastq/test/promise.js | 248 + node_modules/fastq/test/test.js | 566 + node_modules/fastq/test/tsconfig.json | 11 + node_modules/fill-range/LICENSE | 21 + node_modules/fill-range/README.md | 237 + node_modules/fill-range/index.js | 249 + node_modules/fill-range/package.json | 69 + node_modules/fs-extra/LICENSE | 15 + node_modules/fs-extra/README.md | 292 + node_modules/fs-extra/lib/copy/copy-sync.js | 161 + node_modules/fs-extra/lib/copy/copy.js | 238 + node_modules/fs-extra/lib/copy/index.js | 7 + node_modules/fs-extra/lib/empty/index.js | 39 + node_modules/fs-extra/lib/ensure/file.js | 69 + node_modules/fs-extra/lib/ensure/index.js | 23 + node_modules/fs-extra/lib/ensure/link.js | 64 + .../fs-extra/lib/ensure/symlink-paths.js | 99 + .../fs-extra/lib/ensure/symlink-type.js | 31 + node_modules/fs-extra/lib/ensure/symlink.js | 82 + node_modules/fs-extra/lib/esm.mjs | 68 + node_modules/fs-extra/lib/fs/index.js | 140 + node_modules/fs-extra/lib/index.js | 16 + node_modules/fs-extra/lib/json/index.js | 16 + node_modules/fs-extra/lib/json/jsonfile.js | 11 + .../fs-extra/lib/json/output-json-sync.js | 12 + node_modules/fs-extra/lib/json/output-json.js | 12 + node_modules/fs-extra/lib/mkdirs/index.js | 14 + node_modules/fs-extra/lib/mkdirs/make-dir.js | 27 + node_modules/fs-extra/lib/mkdirs/utils.js | 21 + node_modules/fs-extra/lib/move/index.js | 7 + node_modules/fs-extra/lib/move/move-sync.js | 55 + node_modules/fs-extra/lib/move/move.js | 76 + .../fs-extra/lib/output-file/index.js | 40 + .../fs-extra/lib/path-exists/index.js | 12 + node_modules/fs-extra/lib/remove/index.js | 17 + node_modules/fs-extra/lib/util/stat.js | 154 + node_modules/fs-extra/lib/util/utimes.js | 26 + node_modules/fs-extra/package.json | 71 + node_modules/glob-parent/CHANGELOG.md | 110 + node_modules/glob-parent/LICENSE | 15 + node_modules/glob-parent/README.md | 137 + node_modules/glob-parent/index.js | 42 + node_modules/glob-parent/package.json | 48 + node_modules/graceful-fs/LICENSE | 15 + node_modules/graceful-fs/README.md | 143 + node_modules/graceful-fs/clone.js | 23 + node_modules/graceful-fs/graceful-fs.js | 448 + node_modules/graceful-fs/legacy-streams.js | 118 + node_modules/graceful-fs/package.json | 53 + node_modules/graceful-fs/polyfills.js | 355 + node_modules/is-binary-path/index.d.ts | 17 + node_modules/is-binary-path/index.js | 7 + node_modules/is-binary-path/license | 9 + node_modules/is-binary-path/package.json | 40 + node_modules/is-binary-path/readme.md | 34 + node_modules/is-extglob/LICENSE | 21 + node_modules/is-extglob/README.md | 107 + node_modules/is-extglob/index.js | 20 + node_modules/is-extglob/package.json | 69 + node_modules/is-glob/LICENSE | 21 + node_modules/is-glob/README.md | 206 + node_modules/is-glob/index.js | 150 + node_modules/is-glob/package.json | 81 + node_modules/is-number/LICENSE | 21 + node_modules/is-number/README.md | 187 + node_modules/is-number/index.js | 18 + node_modules/is-number/package.json | 82 + node_modules/jsonfile/CHANGELOG.md | 171 + node_modules/jsonfile/LICENSE | 15 + node_modules/jsonfile/README.md | 230 + node_modules/jsonfile/index.js | 88 + node_modules/jsonfile/package.json | 40 + node_modules/jsonfile/utils.js | 14 + node_modules/merge2/LICENSE | 21 + node_modules/merge2/README.md | 144 + node_modules/merge2/index.js | 144 + node_modules/merge2/package.json | 43 + node_modules/micromatch/LICENSE | 21 + node_modules/micromatch/README.md | 1011 + node_modules/micromatch/index.js | 467 + node_modules/micromatch/package.json | 119 + node_modules/nanoid/LICENSE | 20 + node_modules/nanoid/README.md | 39 + node_modules/nanoid/async/index.browser.cjs | 34 + node_modules/nanoid/async/index.browser.js | 34 + node_modules/nanoid/async/index.cjs | 35 + node_modules/nanoid/async/index.d.ts | 56 + node_modules/nanoid/async/index.js | 35 + node_modules/nanoid/async/index.native.js | 26 + node_modules/nanoid/async/package.json | 12 + node_modules/nanoid/bin/nanoid.cjs | 55 + node_modules/nanoid/index.browser.cjs | 34 + node_modules/nanoid/index.browser.js | 34 + node_modules/nanoid/index.cjs | 45 + node_modules/nanoid/index.d.ts | 91 + node_modules/nanoid/index.js | 45 + node_modules/nanoid/nanoid.js | 1 + node_modules/nanoid/non-secure/index.cjs | 21 + node_modules/nanoid/non-secure/index.d.ts | 33 + node_modules/nanoid/non-secure/index.js | 21 + node_modules/nanoid/non-secure/package.json | 6 + node_modules/nanoid/package.json | 66 + node_modules/nanoid/url-alphabet/index.cjs | 3 + node_modules/nanoid/url-alphabet/index.js | 3 + node_modules/nanoid/url-alphabet/package.json | 6 + node_modules/normalize-path/LICENSE | 21 + node_modules/normalize-path/README.md | 127 + node_modules/normalize-path/index.js | 35 + node_modules/normalize-path/package.json | 77 + node_modules/picocolors/LICENSE | 15 + node_modules/picocolors/README.md | 21 + node_modules/picocolors/package.json | 25 + node_modules/picocolors/picocolors.browser.js | 4 + node_modules/picocolors/picocolors.d.ts | 5 + node_modules/picocolors/picocolors.js | 58 + node_modules/picocolors/types.ts | 30 + node_modules/picomatch/CHANGELOG.md | 136 + node_modules/picomatch/LICENSE | 21 + node_modules/picomatch/README.md | 708 + node_modules/picomatch/index.js | 3 + node_modules/picomatch/lib/constants.js | 179 + node_modules/picomatch/lib/parse.js | 1091 + node_modules/picomatch/lib/picomatch.js | 342 + node_modules/picomatch/lib/scan.js | 391 + node_modules/picomatch/lib/utils.js | 64 + node_modules/picomatch/package.json | 81 + node_modules/postcss/LICENSE | 20 + node_modules/postcss/README.md | 28 + node_modules/postcss/lib/at-rule.d.ts | 115 + node_modules/postcss/lib/at-rule.js | 25 + node_modules/postcss/lib/comment.d.ts | 67 + node_modules/postcss/lib/comment.js | 13 + node_modules/postcss/lib/container.d.ts | 452 + node_modules/postcss/lib/container.js | 439 + .../postcss/lib/css-syntax-error.d.ts | 248 + node_modules/postcss/lib/css-syntax-error.js | 100 + node_modules/postcss/lib/declaration.d.ts | 148 + node_modules/postcss/lib/declaration.js | 24 + node_modules/postcss/lib/document.d.ts | 68 + node_modules/postcss/lib/document.js | 33 + node_modules/postcss/lib/fromJSON.d.ts | 9 + node_modules/postcss/lib/fromJSON.js | 54 + node_modules/postcss/lib/input.d.ts | 194 + node_modules/postcss/lib/input.js | 248 + node_modules/postcss/lib/lazy-result.d.ts | 190 + node_modules/postcss/lib/lazy-result.js | 550 + node_modules/postcss/lib/list.d.ts | 57 + node_modules/postcss/lib/list.js | 58 + node_modules/postcss/lib/map-generator.js | 359 + node_modules/postcss/lib/no-work-result.d.ts | 46 + node_modules/postcss/lib/no-work-result.js | 135 + node_modules/postcss/lib/node.d.ts | 536 + node_modules/postcss/lib/node.js | 381 + node_modules/postcss/lib/parse.d.ts | 9 + node_modules/postcss/lib/parse.js | 42 + node_modules/postcss/lib/parser.js | 610 + node_modules/postcss/lib/postcss.d.mts | 72 + node_modules/postcss/lib/postcss.d.ts | 441 + node_modules/postcss/lib/postcss.js | 101 + node_modules/postcss/lib/postcss.mjs | 30 + node_modules/postcss/lib/previous-map.d.ts | 81 + node_modules/postcss/lib/previous-map.js | 142 + node_modules/postcss/lib/processor.d.ts | 115 + node_modules/postcss/lib/processor.js | 67 + node_modules/postcss/lib/result.d.ts | 206 + node_modules/postcss/lib/result.js | 42 + node_modules/postcss/lib/root.d.ts | 86 + node_modules/postcss/lib/root.js | 61 + node_modules/postcss/lib/rule.d.ts | 113 + node_modules/postcss/lib/rule.js | 27 + node_modules/postcss/lib/stringifier.d.ts | 46 + node_modules/postcss/lib/stringifier.js | 353 + node_modules/postcss/lib/stringify.d.ts | 9 + node_modules/postcss/lib/stringify.js | 11 + node_modules/postcss/lib/symbols.js | 5 + .../postcss/lib/terminal-highlight.js | 70 + node_modules/postcss/lib/tokenize.js | 266 + node_modules/postcss/lib/warn-once.js | 13 + node_modules/postcss/lib/warning.d.ts | 147 + node_modules/postcss/lib/warning.js | 37 + node_modules/postcss/package.json | 88 + node_modules/queue-microtask/LICENSE | 20 + node_modules/queue-microtask/README.md | 90 + node_modules/queue-microtask/index.d.ts | 2 + node_modules/queue-microtask/index.js | 9 + node_modules/queue-microtask/package.json | 55 + node_modules/readdirp/LICENSE | 21 + node_modules/readdirp/README.md | 122 + node_modules/readdirp/index.d.ts | 43 + node_modules/readdirp/index.js | 287 + node_modules/readdirp/package.json | 122 + node_modules/reusify/.coveralls.yml | 1 + node_modules/reusify/.travis.yml | 28 + node_modules/reusify/LICENSE | 22 + node_modules/reusify/README.md | 145 + .../benchmarks/createNoCodeFunction.js | 30 + node_modules/reusify/benchmarks/fib.js | 13 + .../reusify/benchmarks/reuseNoCodeFunction.js | 38 + node_modules/reusify/package.json | 45 + node_modules/reusify/reusify.js | 33 + node_modules/reusify/test.js | 66 + node_modules/rollup/LICENSE.md | 695 + node_modules/rollup/README.md | 125 + node_modules/rollup/dist/bin/rollup | 1715 + node_modules/rollup/dist/es/getLogFilter.js | 64 + node_modules/rollup/dist/es/package.json | 1 + node_modules/rollup/dist/es/rollup.js | 17 + .../rollup/dist/es/shared/node-entry.js | 27273 +++++++ node_modules/rollup/dist/es/shared/watch.js | 4857 ++ node_modules/rollup/dist/getLogFilter.d.ts | 5 + node_modules/rollup/dist/getLogFilter.js | 69 + node_modules/rollup/dist/loadConfigFile.d.ts | 20 + node_modules/rollup/dist/loadConfigFile.js | 29 + node_modules/rollup/dist/rollup.d.ts | 1012 + node_modules/rollup/dist/rollup.js | 31 + .../rollup/dist/shared/fsevents-importer.js | 37 + node_modules/rollup/dist/shared/index.js | 4571 ++ .../rollup/dist/shared/loadConfigFile.js | 546 + node_modules/rollup/dist/shared/rollup.js | 27351 +++++++ node_modules/rollup/dist/shared/watch-cli.js | 561 + .../rollup/dist/shared/watch-proxy.js | 87 + node_modules/rollup/dist/shared/watch.js | 316 + node_modules/rollup/package.json | 181 + node_modules/run-parallel/LICENSE | 20 + node_modules/run-parallel/README.md | 85 + node_modules/run-parallel/index.js | 51 + node_modules/run-parallel/package.json | 58 + node_modules/source-map-js/CHANGELOG.md | 320 + node_modules/source-map-js/LICENSE | 28 + node_modules/source-map-js/README.md | 758 + node_modules/source-map-js/lib/array-set.js | 121 + node_modules/source-map-js/lib/base64-vlq.js | 140 + node_modules/source-map-js/lib/base64.js | 67 + .../source-map-js/lib/binary-search.js | 111 + .../source-map-js/lib/mapping-list.js | 79 + node_modules/source-map-js/lib/quick-sort.js | 132 + .../source-map-js/lib/source-map-consumer.js | 1184 + .../source-map-js/lib/source-map-generator.js | 425 + node_modules/source-map-js/lib/source-node.js | 413 + node_modules/source-map-js/lib/util.js | 594 + node_modules/source-map-js/package.json | 71 + node_modules/source-map-js/source-map.d.ts | 115 + node_modules/source-map-js/source-map.js | 8 + node_modules/to-regex-range/LICENSE | 21 + node_modules/to-regex-range/README.md | 305 + node_modules/to-regex-range/index.js | 288 + node_modules/to-regex-range/package.json | 88 + node_modules/universalify/LICENSE | 20 + node_modules/universalify/README.md | 76 + node_modules/universalify/index.js | 24 + node_modules/universalify/package.json | 34 + node_modules/vite-plugin-static-copy/LICENSE | 21 + .../vite-plugin-static-copy/README.md | 73 + .../vite-plugin-static-copy/dist/index.cjs | 1121 + .../vite-plugin-static-copy/dist/index.d.cts | 98 + .../vite-plugin-static-copy/dist/index.d.ts | 98 + .../vite-plugin-static-copy/dist/index.js | 1084 + .../vite-plugin-static-copy/package.json | 80 + node_modules/vite/LICENSE.md | 3396 + node_modules/vite/README.md | 20 + node_modules/vite/bin/openChrome.applescript | 95 + node_modules/vite/bin/vite.js | 61 + node_modules/vite/client.d.ts | 281 + node_modules/vite/dist/client/client.mjs | 724 + node_modules/vite/dist/client/client.mjs.map | 1 + node_modules/vite/dist/client/env.mjs | 30 + node_modules/vite/dist/client/env.mjs.map | 1 + .../vite/dist/node-cjs/publicUtils.cjs | 4544 ++ .../vite/dist/node/chunks/dep-98d4beff.js | 7646 ++ .../vite/dist/node/chunks/dep-bb8a8339.js | 66378 ++++++++++++++++ .../vite/dist/node/chunks/dep-c423598f.js | 561 + .../vite/dist/node/chunks/dep-e4a495ce.js | 914 + .../vite/dist/node/chunks/dep-f0c7dae0.js | 7930 ++ node_modules/vite/dist/node/cli.js | 928 + node_modules/vite/dist/node/constants.js | 125 + node_modules/vite/dist/node/index.d.ts | 3496 + node_modules/vite/dist/node/index.js | 157 + node_modules/vite/index.cjs | 34 + node_modules/vite/package.json | 173 + node_modules/vite/types/customEvent.d.ts | 35 + node_modules/vite/types/hmrPayload.d.ts | 61 + node_modules/vite/types/hot.d.ts | 32 + node_modules/vite/types/importGlob.d.ts | 97 + node_modules/vite/types/importMeta.d.ts | 26 + node_modules/vite/types/metadata.d.ts | 10 + node_modules/vite/types/package.json | 4 + package-lock.json | 888 + package.json | 20 + public/animations/project.js | 59 + src/main.ts | 18 + src/vite-env.d.ts | 1 + vite.config.ts | 15 + 1029 files changed, 237316 insertions(+) create mode 100644 .github/workflows/deploy.yml create mode 100644 animations/.gitignore create mode 100644 animations/package-lock.json create mode 100644 animations/package.json create mode 100644 animations/src/motion-canvas.d.ts create mode 100644 animations/src/project.meta create mode 100644 animations/src/project.ts create mode 100644 animations/src/scenes/example.meta create mode 100644 animations/src/scenes/example.tsx create mode 100644 animations/tsconfig.json create mode 100644 animations/vite.config.ts create mode 100644 dist/animations/project.js create mode 100644 dist/assets/index-d983fe7f.js create mode 100644 dist/index.html create mode 100644 dist/public/animations/project.js create mode 100644 index.html create mode 100644 node_modules/.bin/esbuild create mode 100644 node_modules/.bin/esbuild.cmd create mode 100644 node_modules/.bin/esbuild.ps1 create mode 100644 node_modules/.bin/nanoid create mode 100644 node_modules/.bin/nanoid.cmd create mode 100644 node_modules/.bin/nanoid.ps1 create mode 100644 node_modules/.bin/rollup create mode 100644 node_modules/.bin/rollup.cmd create mode 100644 node_modules/.bin/rollup.ps1 create mode 100644 node_modules/.bin/vite create mode 100644 node_modules/.bin/vite.cmd create mode 100644 node_modules/.bin/vite.ps1 create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@esbuild/win32-x64/README.md create mode 100644 node_modules/@esbuild/win32-x64/esbuild.exe create mode 100644 node_modules/@esbuild/win32-x64/package.json create mode 100644 node_modules/@motion-canvas/core/LICENSE create mode 100644 node_modules/@motion-canvas/core/lib/app/Exporter.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Exporter.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Exporter.js create mode 100644 node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/ImageExporter.js create mode 100644 node_modules/@motion-canvas/core/lib/app/Logger.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Logger.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Logger.js create mode 100644 node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/PlaybackManager.js create mode 100644 node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/PlaybackStatus.js create mode 100644 node_modules/@motion-canvas/core/lib/app/Player.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Player.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Player.js create mode 100644 node_modules/@motion-canvas/core/lib/app/Presenter.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Presenter.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Presenter.js create mode 100644 node_modules/@motion-canvas/core/lib/app/Project.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Project.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Project.js create mode 100644 node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/ProjectMetadata.js create mode 100644 node_modules/@motion-canvas/core/lib/app/Renderer.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Renderer.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Renderer.js create mode 100644 node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/SettingsMetadata.js create mode 100644 node_modules/@motion-canvas/core/lib/app/Stage.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/Stage.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/Stage.js create mode 100644 node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/TimeEstimator.js create mode 100644 node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/bootstrap.js create mode 100644 node_modules/@motion-canvas/core/lib/app/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/index.js create mode 100644 node_modules/@motion-canvas/core/lib/app/presets.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/app/presets.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/app/presets.js create mode 100644 node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/decorators/decorate.js create mode 100644 node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/decorators/deprecated.js create mode 100644 node_modules/@motion-canvas/core/lib/decorators/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/decorators/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/decorators/index.js create mode 100644 node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/decorators/lazy.js create mode 100644 node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/decorators/threadable.js create mode 100644 node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.js create mode 100644 node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/events/EventDispatcher.js create mode 100644 node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.js create mode 100644 node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/events/FlagDispatcher.js create mode 100644 node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/events/ValueDispatcher.js create mode 100644 node_modules/@motion-canvas/core/lib/events/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/events/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/events/index.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/all.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/all.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/all.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/any.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/any.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/any.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/chain.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/chain.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/chain.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/delay.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/delay.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/delay.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/every.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/every.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/every.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/index.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/loop.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/loop.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/loop.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/loopFor.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/loopUntil.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/noop.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/noop.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/noop.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/run.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/run.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/run.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/scheduling.js create mode 100644 node_modules/@motion-canvas/core/lib/flow/sequence.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/flow/sequence.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/flow/sequence.js create mode 100644 node_modules/@motion-canvas/core/lib/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/index.js create mode 100644 node_modules/@motion-canvas/core/lib/media/AudioData.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/media/AudioData.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/media/AudioData.js create mode 100644 node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/media/AudioManager.js create mode 100644 node_modules/@motion-canvas/core/lib/media/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/media/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/media/index.js create mode 100644 node_modules/@motion-canvas/core/lib/media/loadImage.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/media/loadImage.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/media/loadImage.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/BoolMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/ColorMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/EnumMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaFile.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/MetaOption.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/NumberMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/RangeMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/StringMetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.js create mode 100644 node_modules/@motion-canvas/core/lib/meta/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/meta/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/meta/index.js create mode 100644 node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.js create mode 100644 node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/plugin/Plugin.js create mode 100644 node_modules/@motion-canvas/core/lib/plugin/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/plugin/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/plugin/index.js create mode 100644 node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/plugin/makePlugin.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Inspectable.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Random.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Random.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Random.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Scene.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/SceneState.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Slides.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Threadable.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/Variables.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/index.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.js create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/ComputedContext.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/DependencyContext.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/SignalContext.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/createComputed.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/createComputedAsync.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/createSignal.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/index.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/symbols.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/symbols.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/symbols.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/types.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/types.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/types.js create mode 100644 node_modules/@motion-canvas/core/lib/signals/utils.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/signals/utils.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/signals/utils.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/Thread.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/Thread.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/Thread.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/cancel.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/cancel.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/cancel.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/index.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/join.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/join.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/join.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/names.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/names.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/names.js create mode 100644 node_modules/@motion-canvas/core/lib/threading/threads.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/threading/threads.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/threading/threads.js create mode 100644 node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/transitions/fadeTransition.js create mode 100644 node_modules/@motion-canvas/core/lib/transitions/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/transitions/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/transitions/index.js create mode 100644 node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/transitions/slideTransition.js create mode 100644 node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/transitions/useTransition.js create mode 100644 node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.js create mode 100644 node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.js create mode 100644 node_modules/@motion-canvas/core/lib/tweening/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/tweening/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/tweening/index.js create mode 100644 node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.js create mode 100644 node_modules/@motion-canvas/core/lib/tweening/spring.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/tweening/spring.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/tweening/spring.js create mode 100644 node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/tweening/timingFunctions.js create mode 100644 node_modules/@motion-canvas/core/lib/tweening/tween.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/tweening/tween.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/tweening/tween.js create mode 100644 node_modules/@motion-canvas/core/lib/types/BBox.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/BBox.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/BBox.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Canvas.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Canvas.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Canvas.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Color.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Color.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Color.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Matrix.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Matrix.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Matrix.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Matrix2D.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Origin.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Origin.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Origin.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Spacing.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Spacing.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Spacing.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Type.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Type.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Type.js create mode 100644 node_modules/@motion-canvas/core/lib/types/Vector.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/Vector.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/Vector.js create mode 100644 node_modules/@motion-canvas/core/lib/types/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/types/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/types/index.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/DetailedError.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/Semaphore.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/beginSlide.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/capitalize.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRef.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRef.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRef.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRefArray.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/createRefMap.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/debug.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/debug.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/debug.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/deprecate.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/errorToLog.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/getContext.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/getContext.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/getContext.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/index.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/index.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/index.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/math.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/math.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/math.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/proxyUtils.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/range.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/range.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/range.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/useContext.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/useContext.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/useContext.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/useDuration.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/usePlayback.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/useRandom.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/useScene.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/useScene.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/useScene.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/useThread.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/useThread.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/useThread.js create mode 100644 node_modules/@motion-canvas/core/lib/utils/useTime.d.ts create mode 100644 node_modules/@motion-canvas/core/lib/utils/useTime.d.ts.map create mode 100644 node_modules/@motion-canvas/core/lib/utils/useTime.js create mode 100644 node_modules/@motion-canvas/core/package.json create mode 100644 node_modules/@motion-canvas/core/project.d.ts create mode 100644 node_modules/@motion-canvas/core/tsconfig.project.json create mode 100644 node_modules/@motion-canvas/player/LICENSE create mode 100644 node_modules/@motion-canvas/player/dist/main.js create mode 100644 node_modules/@motion-canvas/player/package.json create mode 100644 node_modules/@motion-canvas/player/types/main.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/LICENSE create mode 100644 node_modules/@nodelib/fs.scandir/README.md create mode 100644 node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/adapters/fs.js create mode 100644 node_modules/@nodelib/fs.scandir/out/constants.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/constants.js create mode 100644 node_modules/@nodelib/fs.scandir/out/index.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/index.js create mode 100644 node_modules/@nodelib/fs.scandir/out/providers/async.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/providers/async.js create mode 100644 node_modules/@nodelib/fs.scandir/out/providers/common.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/providers/common.js create mode 100644 node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/providers/sync.js create mode 100644 node_modules/@nodelib/fs.scandir/out/settings.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/settings.js create mode 100644 node_modules/@nodelib/fs.scandir/out/types/index.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/types/index.js create mode 100644 node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/utils/fs.js create mode 100644 node_modules/@nodelib/fs.scandir/out/utils/index.d.ts create mode 100644 node_modules/@nodelib/fs.scandir/out/utils/index.js create mode 100644 node_modules/@nodelib/fs.scandir/package.json create mode 100644 node_modules/@nodelib/fs.stat/LICENSE create mode 100644 node_modules/@nodelib/fs.stat/README.md create mode 100644 node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts create mode 100644 node_modules/@nodelib/fs.stat/out/adapters/fs.js create mode 100644 node_modules/@nodelib/fs.stat/out/index.d.ts create mode 100644 node_modules/@nodelib/fs.stat/out/index.js create mode 100644 node_modules/@nodelib/fs.stat/out/providers/async.d.ts create mode 100644 node_modules/@nodelib/fs.stat/out/providers/async.js create mode 100644 node_modules/@nodelib/fs.stat/out/providers/sync.d.ts create mode 100644 node_modules/@nodelib/fs.stat/out/providers/sync.js create mode 100644 node_modules/@nodelib/fs.stat/out/settings.d.ts create mode 100644 node_modules/@nodelib/fs.stat/out/settings.js create mode 100644 node_modules/@nodelib/fs.stat/out/types/index.d.ts create mode 100644 node_modules/@nodelib/fs.stat/out/types/index.js create mode 100644 node_modules/@nodelib/fs.stat/package.json create mode 100644 node_modules/@nodelib/fs.walk/LICENSE create mode 100644 node_modules/@nodelib/fs.walk/README.md create mode 100644 node_modules/@nodelib/fs.walk/out/index.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/index.js create mode 100644 node_modules/@nodelib/fs.walk/out/providers/async.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/providers/async.js create mode 100644 node_modules/@nodelib/fs.walk/out/providers/index.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/providers/index.js create mode 100644 node_modules/@nodelib/fs.walk/out/providers/stream.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/providers/stream.js create mode 100644 node_modules/@nodelib/fs.walk/out/providers/sync.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/providers/sync.js create mode 100644 node_modules/@nodelib/fs.walk/out/readers/async.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/readers/async.js create mode 100644 node_modules/@nodelib/fs.walk/out/readers/common.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/readers/common.js create mode 100644 node_modules/@nodelib/fs.walk/out/readers/reader.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/readers/reader.js create mode 100644 node_modules/@nodelib/fs.walk/out/readers/sync.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/readers/sync.js create mode 100644 node_modules/@nodelib/fs.walk/out/settings.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/settings.js create mode 100644 node_modules/@nodelib/fs.walk/out/types/index.d.ts create mode 100644 node_modules/@nodelib/fs.walk/out/types/index.js create mode 100644 node_modules/@nodelib/fs.walk/package.json create mode 100644 node_modules/@types/chroma-js/LICENSE create mode 100644 node_modules/@types/chroma-js/README.md create mode 100644 node_modules/@types/chroma-js/index.d.ts create mode 100644 node_modules/@types/chroma-js/package.json create mode 100644 node_modules/anymatch/LICENSE create mode 100644 node_modules/anymatch/README.md create mode 100644 node_modules/anymatch/index.d.ts create mode 100644 node_modules/anymatch/index.js create mode 100644 node_modules/anymatch/package.json create mode 100644 node_modules/binary-extensions/binary-extensions.json create mode 100644 node_modules/binary-extensions/binary-extensions.json.d.ts create mode 100644 node_modules/binary-extensions/index.d.ts create mode 100644 node_modules/binary-extensions/index.js create mode 100644 node_modules/binary-extensions/license create mode 100644 node_modules/binary-extensions/package.json create mode 100644 node_modules/binary-extensions/readme.md create mode 100644 node_modules/braces/CHANGELOG.md create mode 100644 node_modules/braces/LICENSE create mode 100644 node_modules/braces/README.md create mode 100644 node_modules/braces/index.js create mode 100644 node_modules/braces/lib/compile.js create mode 100644 node_modules/braces/lib/constants.js create mode 100644 node_modules/braces/lib/expand.js create mode 100644 node_modules/braces/lib/parse.js create mode 100644 node_modules/braces/lib/stringify.js create mode 100644 node_modules/braces/lib/utils.js create mode 100644 node_modules/braces/package.json create mode 100644 node_modules/chokidar/LICENSE create mode 100644 node_modules/chokidar/README.md create mode 100644 node_modules/chokidar/index.js create mode 100644 node_modules/chokidar/lib/constants.js create mode 100644 node_modules/chokidar/lib/fsevents-handler.js create mode 100644 node_modules/chokidar/lib/nodefs-handler.js create mode 100644 node_modules/chokidar/package.json create mode 100644 node_modules/chokidar/types/index.d.ts create mode 100644 node_modules/chroma-js/.eslintrc.cjs create mode 100644 node_modules/chroma-js/CHANGELOG.md create mode 100644 node_modules/chroma-js/LICENSE create mode 100644 node_modules/chroma-js/chroma-light.js create mode 100644 node_modules/chroma-js/chroma-light.min.js create mode 100644 node_modules/chroma-js/chroma.js create mode 100644 node_modules/chroma-js/chroma.min.js create mode 100644 node_modules/chroma-js/index-light.js create mode 100644 node_modules/chroma-js/index.js create mode 100644 node_modules/chroma-js/package.json create mode 100644 node_modules/chroma-js/readme.md create mode 100644 node_modules/chroma-js/src/Color.js create mode 100644 node_modules/chroma-js/src/chroma.js create mode 100644 node_modules/chroma-js/src/colors/colorbrewer.js create mode 100644 node_modules/chroma-js/src/colors/w3cx11.js create mode 100644 node_modules/chroma-js/src/generator/average.js create mode 100644 node_modules/chroma-js/src/generator/bezier.js create mode 100644 node_modules/chroma-js/src/generator/blend.js create mode 100644 node_modules/chroma-js/src/generator/cubehelix.js create mode 100644 node_modules/chroma-js/src/generator/mix.js create mode 100644 node_modules/chroma-js/src/generator/random.js create mode 100644 node_modules/chroma-js/src/generator/scale.js create mode 100644 node_modules/chroma-js/src/interpolator/_hsx.js create mode 100644 node_modules/chroma-js/src/interpolator/hcg.js create mode 100644 node_modules/chroma-js/src/interpolator/hsi.js create mode 100644 node_modules/chroma-js/src/interpolator/hsl.js create mode 100644 node_modules/chroma-js/src/interpolator/hsv.js create mode 100644 node_modules/chroma-js/src/interpolator/index.js create mode 100644 node_modules/chroma-js/src/interpolator/lab.js create mode 100644 node_modules/chroma-js/src/interpolator/lch.js create mode 100644 node_modules/chroma-js/src/interpolator/lrgb.js create mode 100644 node_modules/chroma-js/src/interpolator/num.js create mode 100644 node_modules/chroma-js/src/interpolator/oklab.js create mode 100644 node_modules/chroma-js/src/interpolator/oklch.js create mode 100644 node_modules/chroma-js/src/interpolator/rgb.js create mode 100644 node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js create mode 100644 node_modules/chroma-js/src/io/cmyk/index.js create mode 100644 node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js create mode 100644 node_modules/chroma-js/src/io/css/css2rgb.js create mode 100644 node_modules/chroma-js/src/io/css/hsl2css.js create mode 100644 node_modules/chroma-js/src/io/css/index.js create mode 100644 node_modules/chroma-js/src/io/css/rgb2css.js create mode 100644 node_modules/chroma-js/src/io/delta-e.coffee create mode 100644 node_modules/chroma-js/src/io/distance.coffee create mode 100644 node_modules/chroma-js/src/io/gl/index.js create mode 100644 node_modules/chroma-js/src/io/hcg/hcg2rgb.js create mode 100644 node_modules/chroma-js/src/io/hcg/index.js create mode 100644 node_modules/chroma-js/src/io/hcg/rgb2hcg.js create mode 100644 node_modules/chroma-js/src/io/hex/hex2rgb.js create mode 100644 node_modules/chroma-js/src/io/hex/index.js create mode 100644 node_modules/chroma-js/src/io/hex/rgb2hex.js create mode 100644 node_modules/chroma-js/src/io/hsi/hsi2rgb.js create mode 100644 node_modules/chroma-js/src/io/hsi/index.js create mode 100644 node_modules/chroma-js/src/io/hsi/rgb2hsi.js create mode 100644 node_modules/chroma-js/src/io/hsl/hsl2rgb.js create mode 100644 node_modules/chroma-js/src/io/hsl/index.js create mode 100644 node_modules/chroma-js/src/io/hsl/rgb2hsl.js create mode 100644 node_modules/chroma-js/src/io/hsv/hsv2rgb.js create mode 100644 node_modules/chroma-js/src/io/hsv/index.js create mode 100644 node_modules/chroma-js/src/io/hsv/rgb2hsv.js create mode 100644 node_modules/chroma-js/src/io/input.js create mode 100644 node_modules/chroma-js/src/io/lab/index.js create mode 100644 node_modules/chroma-js/src/io/lab/lab-constants.js create mode 100644 node_modules/chroma-js/src/io/lab/lab2rgb.js create mode 100644 node_modules/chroma-js/src/io/lab/rgb2lab.js create mode 100644 node_modules/chroma-js/src/io/lch/hcl2rgb.js create mode 100644 node_modules/chroma-js/src/io/lch/index.js create mode 100644 node_modules/chroma-js/src/io/lch/lab2lch.js create mode 100644 node_modules/chroma-js/src/io/lch/lch2lab.js create mode 100644 node_modules/chroma-js/src/io/lch/lch2rgb.js create mode 100644 node_modules/chroma-js/src/io/lch/rgb2lch.js create mode 100644 node_modules/chroma-js/src/io/named/index.js create mode 100644 node_modules/chroma-js/src/io/num/index.js create mode 100644 node_modules/chroma-js/src/io/num/num2rgb.js create mode 100644 node_modules/chroma-js/src/io/num/rgb2num.js create mode 100644 node_modules/chroma-js/src/io/oklab/index.js create mode 100644 node_modules/chroma-js/src/io/oklab/oklab2rgb.js create mode 100644 node_modules/chroma-js/src/io/oklab/rgb2oklab.js create mode 100644 node_modules/chroma-js/src/io/oklch/index.js create mode 100644 node_modules/chroma-js/src/io/oklch/oklch2rgb.js create mode 100644 node_modules/chroma-js/src/io/oklch/rgb2oklch.js create mode 100644 node_modules/chroma-js/src/io/rgb/index.js create mode 100644 node_modules/chroma-js/src/io/temp/index.js create mode 100644 node_modules/chroma-js/src/io/temp/rgb2temperature.js create mode 100644 node_modules/chroma-js/src/io/temp/temperature2rgb.js create mode 100644 node_modules/chroma-js/src/ops/alpha.js create mode 100644 node_modules/chroma-js/src/ops/clipped.js create mode 100644 node_modules/chroma-js/src/ops/darken.js create mode 100644 node_modules/chroma-js/src/ops/get.js create mode 100644 node_modules/chroma-js/src/ops/luminance.js create mode 100644 node_modules/chroma-js/src/ops/mix.js create mode 100644 node_modules/chroma-js/src/ops/premultiply.js create mode 100644 node_modules/chroma-js/src/ops/saturate.js create mode 100644 node_modules/chroma-js/src/ops/set.js create mode 100644 node_modules/chroma-js/src/utils/analyze.js create mode 100644 node_modules/chroma-js/src/utils/clip_rgb.js create mode 100644 node_modules/chroma-js/src/utils/contrast.js create mode 100644 node_modules/chroma-js/src/utils/delta-e.js create mode 100644 node_modules/chroma-js/src/utils/distance.js create mode 100644 node_modules/chroma-js/src/utils/index.js create mode 100644 node_modules/chroma-js/src/utils/last.js create mode 100644 node_modules/chroma-js/src/utils/limit.js create mode 100644 node_modules/chroma-js/src/utils/scales.js create mode 100644 node_modules/chroma-js/src/utils/type.js create mode 100644 node_modules/chroma-js/src/utils/unpack.js create mode 100644 node_modules/chroma-js/src/utils/valid.js create mode 100644 node_modules/esbuild/LICENSE.md create mode 100644 node_modules/esbuild/README.md create mode 100644 node_modules/esbuild/bin/esbuild create mode 100644 node_modules/esbuild/install.js create mode 100644 node_modules/esbuild/lib/main.d.ts create mode 100644 node_modules/esbuild/lib/main.js create mode 100644 node_modules/esbuild/package.json create mode 100644 node_modules/fast-glob/LICENSE create mode 100644 node_modules/fast-glob/README.md create mode 100644 node_modules/fast-glob/out/index.d.ts create mode 100644 node_modules/fast-glob/out/index.js create mode 100644 node_modules/fast-glob/out/managers/tasks.d.ts create mode 100644 node_modules/fast-glob/out/managers/tasks.js create mode 100644 node_modules/fast-glob/out/providers/async.d.ts create mode 100644 node_modules/fast-glob/out/providers/async.js create mode 100644 node_modules/fast-glob/out/providers/filters/deep.d.ts create mode 100644 node_modules/fast-glob/out/providers/filters/deep.js create mode 100644 node_modules/fast-glob/out/providers/filters/entry.d.ts create mode 100644 node_modules/fast-glob/out/providers/filters/entry.js create mode 100644 node_modules/fast-glob/out/providers/filters/error.d.ts create mode 100644 node_modules/fast-glob/out/providers/filters/error.js create mode 100644 node_modules/fast-glob/out/providers/matchers/matcher.d.ts create mode 100644 node_modules/fast-glob/out/providers/matchers/matcher.js create mode 100644 node_modules/fast-glob/out/providers/matchers/partial.d.ts create mode 100644 node_modules/fast-glob/out/providers/matchers/partial.js create mode 100644 node_modules/fast-glob/out/providers/provider.d.ts create mode 100644 node_modules/fast-glob/out/providers/provider.js create mode 100644 node_modules/fast-glob/out/providers/stream.d.ts create mode 100644 node_modules/fast-glob/out/providers/stream.js create mode 100644 node_modules/fast-glob/out/providers/sync.d.ts create mode 100644 node_modules/fast-glob/out/providers/sync.js create mode 100644 node_modules/fast-glob/out/providers/transformers/entry.d.ts create mode 100644 node_modules/fast-glob/out/providers/transformers/entry.js create mode 100644 node_modules/fast-glob/out/readers/async.d.ts create mode 100644 node_modules/fast-glob/out/readers/async.js create mode 100644 node_modules/fast-glob/out/readers/reader.d.ts create mode 100644 node_modules/fast-glob/out/readers/reader.js create mode 100644 node_modules/fast-glob/out/readers/stream.d.ts create mode 100644 node_modules/fast-glob/out/readers/stream.js create mode 100644 node_modules/fast-glob/out/readers/sync.d.ts create mode 100644 node_modules/fast-glob/out/readers/sync.js create mode 100644 node_modules/fast-glob/out/settings.d.ts create mode 100644 node_modules/fast-glob/out/settings.js create mode 100644 node_modules/fast-glob/out/types/index.d.ts create mode 100644 node_modules/fast-glob/out/types/index.js create mode 100644 node_modules/fast-glob/out/utils/array.d.ts create mode 100644 node_modules/fast-glob/out/utils/array.js create mode 100644 node_modules/fast-glob/out/utils/errno.d.ts create mode 100644 node_modules/fast-glob/out/utils/errno.js create mode 100644 node_modules/fast-glob/out/utils/fs.d.ts create mode 100644 node_modules/fast-glob/out/utils/fs.js create mode 100644 node_modules/fast-glob/out/utils/index.d.ts create mode 100644 node_modules/fast-glob/out/utils/index.js create mode 100644 node_modules/fast-glob/out/utils/path.d.ts create mode 100644 node_modules/fast-glob/out/utils/path.js create mode 100644 node_modules/fast-glob/out/utils/pattern.d.ts create mode 100644 node_modules/fast-glob/out/utils/pattern.js create mode 100644 node_modules/fast-glob/out/utils/stream.d.ts create mode 100644 node_modules/fast-glob/out/utils/stream.js create mode 100644 node_modules/fast-glob/out/utils/string.d.ts create mode 100644 node_modules/fast-glob/out/utils/string.js create mode 100644 node_modules/fast-glob/package.json create mode 100644 node_modules/fastq/.github/dependabot.yml create mode 100644 node_modules/fastq/.github/workflows/ci.yml create mode 100644 node_modules/fastq/LICENSE create mode 100644 node_modules/fastq/README.md create mode 100644 node_modules/fastq/bench.js create mode 100644 node_modules/fastq/example.js create mode 100644 node_modules/fastq/example.mjs create mode 100644 node_modules/fastq/index.d.ts create mode 100644 node_modules/fastq/package.json create mode 100644 node_modules/fastq/queue.js create mode 100644 node_modules/fastq/test/example.ts create mode 100644 node_modules/fastq/test/promise.js create mode 100644 node_modules/fastq/test/test.js create mode 100644 node_modules/fastq/test/tsconfig.json create mode 100644 node_modules/fill-range/LICENSE create mode 100644 node_modules/fill-range/README.md create mode 100644 node_modules/fill-range/index.js create mode 100644 node_modules/fill-range/package.json create mode 100644 node_modules/fs-extra/LICENSE create mode 100644 node_modules/fs-extra/README.md create mode 100644 node_modules/fs-extra/lib/copy/copy-sync.js create mode 100644 node_modules/fs-extra/lib/copy/copy.js create mode 100644 node_modules/fs-extra/lib/copy/index.js create mode 100644 node_modules/fs-extra/lib/empty/index.js create mode 100644 node_modules/fs-extra/lib/ensure/file.js create mode 100644 node_modules/fs-extra/lib/ensure/index.js create mode 100644 node_modules/fs-extra/lib/ensure/link.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink-paths.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink-type.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink.js create mode 100644 node_modules/fs-extra/lib/esm.mjs create mode 100644 node_modules/fs-extra/lib/fs/index.js create mode 100644 node_modules/fs-extra/lib/index.js create mode 100644 node_modules/fs-extra/lib/json/index.js create mode 100644 node_modules/fs-extra/lib/json/jsonfile.js create mode 100644 node_modules/fs-extra/lib/json/output-json-sync.js create mode 100644 node_modules/fs-extra/lib/json/output-json.js create mode 100644 node_modules/fs-extra/lib/mkdirs/index.js create mode 100644 node_modules/fs-extra/lib/mkdirs/make-dir.js create mode 100644 node_modules/fs-extra/lib/mkdirs/utils.js create mode 100644 node_modules/fs-extra/lib/move/index.js create mode 100644 node_modules/fs-extra/lib/move/move-sync.js create mode 100644 node_modules/fs-extra/lib/move/move.js create mode 100644 node_modules/fs-extra/lib/output-file/index.js create mode 100644 node_modules/fs-extra/lib/path-exists/index.js create mode 100644 node_modules/fs-extra/lib/remove/index.js create mode 100644 node_modules/fs-extra/lib/util/stat.js create mode 100644 node_modules/fs-extra/lib/util/utimes.js create mode 100644 node_modules/fs-extra/package.json create mode 100644 node_modules/glob-parent/CHANGELOG.md create mode 100644 node_modules/glob-parent/LICENSE create mode 100644 node_modules/glob-parent/README.md create mode 100644 node_modules/glob-parent/index.js create mode 100644 node_modules/glob-parent/package.json create mode 100644 node_modules/graceful-fs/LICENSE create mode 100644 node_modules/graceful-fs/README.md create mode 100644 node_modules/graceful-fs/clone.js create mode 100644 node_modules/graceful-fs/graceful-fs.js create mode 100644 node_modules/graceful-fs/legacy-streams.js create mode 100644 node_modules/graceful-fs/package.json create mode 100644 node_modules/graceful-fs/polyfills.js create mode 100644 node_modules/is-binary-path/index.d.ts create mode 100644 node_modules/is-binary-path/index.js create mode 100644 node_modules/is-binary-path/license create mode 100644 node_modules/is-binary-path/package.json create mode 100644 node_modules/is-binary-path/readme.md create mode 100644 node_modules/is-extglob/LICENSE create mode 100644 node_modules/is-extglob/README.md create mode 100644 node_modules/is-extglob/index.js create mode 100644 node_modules/is-extglob/package.json create mode 100644 node_modules/is-glob/LICENSE create mode 100644 node_modules/is-glob/README.md create mode 100644 node_modules/is-glob/index.js create mode 100644 node_modules/is-glob/package.json create mode 100644 node_modules/is-number/LICENSE create mode 100644 node_modules/is-number/README.md create mode 100644 node_modules/is-number/index.js create mode 100644 node_modules/is-number/package.json create mode 100644 node_modules/jsonfile/CHANGELOG.md create mode 100644 node_modules/jsonfile/LICENSE create mode 100644 node_modules/jsonfile/README.md create mode 100644 node_modules/jsonfile/index.js create mode 100644 node_modules/jsonfile/package.json create mode 100644 node_modules/jsonfile/utils.js create mode 100644 node_modules/merge2/LICENSE create mode 100644 node_modules/merge2/README.md create mode 100644 node_modules/merge2/index.js create mode 100644 node_modules/merge2/package.json create mode 100644 node_modules/micromatch/LICENSE create mode 100644 node_modules/micromatch/README.md create mode 100644 node_modules/micromatch/index.js create mode 100644 node_modules/micromatch/package.json create mode 100644 node_modules/nanoid/LICENSE create mode 100644 node_modules/nanoid/README.md create mode 100644 node_modules/nanoid/async/index.browser.cjs create mode 100644 node_modules/nanoid/async/index.browser.js create mode 100644 node_modules/nanoid/async/index.cjs create mode 100644 node_modules/nanoid/async/index.d.ts create mode 100644 node_modules/nanoid/async/index.js create mode 100644 node_modules/nanoid/async/index.native.js create mode 100644 node_modules/nanoid/async/package.json create mode 100644 node_modules/nanoid/bin/nanoid.cjs create mode 100644 node_modules/nanoid/index.browser.cjs create mode 100644 node_modules/nanoid/index.browser.js create mode 100644 node_modules/nanoid/index.cjs create mode 100644 node_modules/nanoid/index.d.ts create mode 100644 node_modules/nanoid/index.js create mode 100644 node_modules/nanoid/nanoid.js create mode 100644 node_modules/nanoid/non-secure/index.cjs create mode 100644 node_modules/nanoid/non-secure/index.d.ts create mode 100644 node_modules/nanoid/non-secure/index.js create mode 100644 node_modules/nanoid/non-secure/package.json create mode 100644 node_modules/nanoid/package.json create mode 100644 node_modules/nanoid/url-alphabet/index.cjs create mode 100644 node_modules/nanoid/url-alphabet/index.js create mode 100644 node_modules/nanoid/url-alphabet/package.json create mode 100644 node_modules/normalize-path/LICENSE create mode 100644 node_modules/normalize-path/README.md create mode 100644 node_modules/normalize-path/index.js create mode 100644 node_modules/normalize-path/package.json create mode 100644 node_modules/picocolors/LICENSE create mode 100644 node_modules/picocolors/README.md create mode 100644 node_modules/picocolors/package.json create mode 100644 node_modules/picocolors/picocolors.browser.js create mode 100644 node_modules/picocolors/picocolors.d.ts create mode 100644 node_modules/picocolors/picocolors.js create mode 100644 node_modules/picocolors/types.ts create mode 100644 node_modules/picomatch/CHANGELOG.md create mode 100644 node_modules/picomatch/LICENSE create mode 100644 node_modules/picomatch/README.md create mode 100644 node_modules/picomatch/index.js create mode 100644 node_modules/picomatch/lib/constants.js create mode 100644 node_modules/picomatch/lib/parse.js create mode 100644 node_modules/picomatch/lib/picomatch.js create mode 100644 node_modules/picomatch/lib/scan.js create mode 100644 node_modules/picomatch/lib/utils.js create mode 100644 node_modules/picomatch/package.json create mode 100644 node_modules/postcss/LICENSE create mode 100644 node_modules/postcss/README.md create mode 100644 node_modules/postcss/lib/at-rule.d.ts create mode 100644 node_modules/postcss/lib/at-rule.js create mode 100644 node_modules/postcss/lib/comment.d.ts create mode 100644 node_modules/postcss/lib/comment.js create mode 100644 node_modules/postcss/lib/container.d.ts create mode 100644 node_modules/postcss/lib/container.js create mode 100644 node_modules/postcss/lib/css-syntax-error.d.ts create mode 100644 node_modules/postcss/lib/css-syntax-error.js create mode 100644 node_modules/postcss/lib/declaration.d.ts create mode 100644 node_modules/postcss/lib/declaration.js create mode 100644 node_modules/postcss/lib/document.d.ts create mode 100644 node_modules/postcss/lib/document.js create mode 100644 node_modules/postcss/lib/fromJSON.d.ts create mode 100644 node_modules/postcss/lib/fromJSON.js create mode 100644 node_modules/postcss/lib/input.d.ts create mode 100644 node_modules/postcss/lib/input.js create mode 100644 node_modules/postcss/lib/lazy-result.d.ts create mode 100644 node_modules/postcss/lib/lazy-result.js create mode 100644 node_modules/postcss/lib/list.d.ts create mode 100644 node_modules/postcss/lib/list.js create mode 100644 node_modules/postcss/lib/map-generator.js create mode 100644 node_modules/postcss/lib/no-work-result.d.ts create mode 100644 node_modules/postcss/lib/no-work-result.js create mode 100644 node_modules/postcss/lib/node.d.ts create mode 100644 node_modules/postcss/lib/node.js create mode 100644 node_modules/postcss/lib/parse.d.ts create mode 100644 node_modules/postcss/lib/parse.js create mode 100644 node_modules/postcss/lib/parser.js create mode 100644 node_modules/postcss/lib/postcss.d.mts create mode 100644 node_modules/postcss/lib/postcss.d.ts create mode 100644 node_modules/postcss/lib/postcss.js create mode 100644 node_modules/postcss/lib/postcss.mjs create mode 100644 node_modules/postcss/lib/previous-map.d.ts create mode 100644 node_modules/postcss/lib/previous-map.js create mode 100644 node_modules/postcss/lib/processor.d.ts create mode 100644 node_modules/postcss/lib/processor.js create mode 100644 node_modules/postcss/lib/result.d.ts create mode 100644 node_modules/postcss/lib/result.js create mode 100644 node_modules/postcss/lib/root.d.ts create mode 100644 node_modules/postcss/lib/root.js create mode 100644 node_modules/postcss/lib/rule.d.ts create mode 100644 node_modules/postcss/lib/rule.js create mode 100644 node_modules/postcss/lib/stringifier.d.ts create mode 100644 node_modules/postcss/lib/stringifier.js create mode 100644 node_modules/postcss/lib/stringify.d.ts create mode 100644 node_modules/postcss/lib/stringify.js create mode 100644 node_modules/postcss/lib/symbols.js create mode 100644 node_modules/postcss/lib/terminal-highlight.js create mode 100644 node_modules/postcss/lib/tokenize.js create mode 100644 node_modules/postcss/lib/warn-once.js create mode 100644 node_modules/postcss/lib/warning.d.ts create mode 100644 node_modules/postcss/lib/warning.js create mode 100644 node_modules/postcss/package.json create mode 100644 node_modules/queue-microtask/LICENSE create mode 100644 node_modules/queue-microtask/README.md create mode 100644 node_modules/queue-microtask/index.d.ts create mode 100644 node_modules/queue-microtask/index.js create mode 100644 node_modules/queue-microtask/package.json create mode 100644 node_modules/readdirp/LICENSE create mode 100644 node_modules/readdirp/README.md create mode 100644 node_modules/readdirp/index.d.ts create mode 100644 node_modules/readdirp/index.js create mode 100644 node_modules/readdirp/package.json create mode 100644 node_modules/reusify/.coveralls.yml create mode 100644 node_modules/reusify/.travis.yml create mode 100644 node_modules/reusify/LICENSE create mode 100644 node_modules/reusify/README.md create mode 100644 node_modules/reusify/benchmarks/createNoCodeFunction.js create mode 100644 node_modules/reusify/benchmarks/fib.js create mode 100644 node_modules/reusify/benchmarks/reuseNoCodeFunction.js create mode 100644 node_modules/reusify/package.json create mode 100644 node_modules/reusify/reusify.js create mode 100644 node_modules/reusify/test.js create mode 100644 node_modules/rollup/LICENSE.md create mode 100644 node_modules/rollup/README.md create mode 100644 node_modules/rollup/dist/bin/rollup create mode 100644 node_modules/rollup/dist/es/getLogFilter.js create mode 100644 node_modules/rollup/dist/es/package.json create mode 100644 node_modules/rollup/dist/es/rollup.js create mode 100644 node_modules/rollup/dist/es/shared/node-entry.js create mode 100644 node_modules/rollup/dist/es/shared/watch.js create mode 100644 node_modules/rollup/dist/getLogFilter.d.ts create mode 100644 node_modules/rollup/dist/getLogFilter.js create mode 100644 node_modules/rollup/dist/loadConfigFile.d.ts create mode 100644 node_modules/rollup/dist/loadConfigFile.js create mode 100644 node_modules/rollup/dist/rollup.d.ts create mode 100644 node_modules/rollup/dist/rollup.js create mode 100644 node_modules/rollup/dist/shared/fsevents-importer.js create mode 100644 node_modules/rollup/dist/shared/index.js create mode 100644 node_modules/rollup/dist/shared/loadConfigFile.js create mode 100644 node_modules/rollup/dist/shared/rollup.js create mode 100644 node_modules/rollup/dist/shared/watch-cli.js create mode 100644 node_modules/rollup/dist/shared/watch-proxy.js create mode 100644 node_modules/rollup/dist/shared/watch.js create mode 100644 node_modules/rollup/package.json create mode 100644 node_modules/run-parallel/LICENSE create mode 100644 node_modules/run-parallel/README.md create mode 100644 node_modules/run-parallel/index.js create mode 100644 node_modules/run-parallel/package.json create mode 100644 node_modules/source-map-js/CHANGELOG.md create mode 100644 node_modules/source-map-js/LICENSE create mode 100644 node_modules/source-map-js/README.md create mode 100644 node_modules/source-map-js/lib/array-set.js create mode 100644 node_modules/source-map-js/lib/base64-vlq.js create mode 100644 node_modules/source-map-js/lib/base64.js create mode 100644 node_modules/source-map-js/lib/binary-search.js create mode 100644 node_modules/source-map-js/lib/mapping-list.js create mode 100644 node_modules/source-map-js/lib/quick-sort.js create mode 100644 node_modules/source-map-js/lib/source-map-consumer.js create mode 100644 node_modules/source-map-js/lib/source-map-generator.js create mode 100644 node_modules/source-map-js/lib/source-node.js create mode 100644 node_modules/source-map-js/lib/util.js create mode 100644 node_modules/source-map-js/package.json create mode 100644 node_modules/source-map-js/source-map.d.ts create mode 100644 node_modules/source-map-js/source-map.js create mode 100644 node_modules/to-regex-range/LICENSE create mode 100644 node_modules/to-regex-range/README.md create mode 100644 node_modules/to-regex-range/index.js create mode 100644 node_modules/to-regex-range/package.json create mode 100644 node_modules/universalify/LICENSE create mode 100644 node_modules/universalify/README.md create mode 100644 node_modules/universalify/index.js create mode 100644 node_modules/universalify/package.json create mode 100644 node_modules/vite-plugin-static-copy/LICENSE create mode 100644 node_modules/vite-plugin-static-copy/README.md create mode 100644 node_modules/vite-plugin-static-copy/dist/index.cjs create mode 100644 node_modules/vite-plugin-static-copy/dist/index.d.cts create mode 100644 node_modules/vite-plugin-static-copy/dist/index.d.ts create mode 100644 node_modules/vite-plugin-static-copy/dist/index.js create mode 100644 node_modules/vite-plugin-static-copy/package.json create mode 100644 node_modules/vite/LICENSE.md create mode 100644 node_modules/vite/README.md create mode 100644 node_modules/vite/bin/openChrome.applescript create mode 100644 node_modules/vite/bin/vite.js create mode 100644 node_modules/vite/client.d.ts create mode 100644 node_modules/vite/dist/client/client.mjs create mode 100644 node_modules/vite/dist/client/client.mjs.map create mode 100644 node_modules/vite/dist/client/env.mjs create mode 100644 node_modules/vite/dist/client/env.mjs.map create mode 100644 node_modules/vite/dist/node-cjs/publicUtils.cjs create mode 100644 node_modules/vite/dist/node/chunks/dep-98d4beff.js create mode 100644 node_modules/vite/dist/node/chunks/dep-bb8a8339.js create mode 100644 node_modules/vite/dist/node/chunks/dep-c423598f.js create mode 100644 node_modules/vite/dist/node/chunks/dep-e4a495ce.js create mode 100644 node_modules/vite/dist/node/chunks/dep-f0c7dae0.js create mode 100644 node_modules/vite/dist/node/cli.js create mode 100644 node_modules/vite/dist/node/constants.js create mode 100644 node_modules/vite/dist/node/index.d.ts create mode 100644 node_modules/vite/dist/node/index.js create mode 100644 node_modules/vite/index.cjs create mode 100644 node_modules/vite/package.json create mode 100644 node_modules/vite/types/customEvent.d.ts create mode 100644 node_modules/vite/types/hmrPayload.d.ts create mode 100644 node_modules/vite/types/hot.d.ts create mode 100644 node_modules/vite/types/importGlob.d.ts create mode 100644 node_modules/vite/types/importMeta.d.ts create mode 100644 node_modules/vite/types/metadata.d.ts create mode 100644 node_modules/vite/types/package.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/animations/project.js create mode 100644 src/main.ts create mode 100644 src/vite-env.d.ts create mode 100644 vite.config.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..3626c82 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,50 @@ +name: Deploy + +on: + push: + branches: + - main + +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + name: Deploy + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + + - name: Install dependencies + run: npm ci + + - name: Install animation dependencies + run: npm ci + working-directory: animations + + - name: Build project + run: npm run build -- --base=/${{ github.event.repository.name }}/ + + - name: Setup Pages + uses: actions/configure-pages@v3 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + path: "./dist" + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 diff --git a/animations/.gitignore b/animations/.gitignore new file mode 100644 index 0000000..829b1c7 --- /dev/null +++ b/animations/.gitignore @@ -0,0 +1,15 @@ +# Generated files +node_modules +output +dist + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/animations/package-lock.json b/animations/package-lock.json new file mode 100644 index 0000000..032f492 --- /dev/null +++ b/animations/package-lock.json @@ -0,0 +1,1471 @@ +{ + "name": "animations", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "animations", + "version": "0.0.0", + "dependencies": { + "@motion-canvas/2d": "^3.11.0", + "@motion-canvas/core": "^3.11.0", + "@motion-canvas/ffmpeg": "^1.1.0", + "glob": "^10.3.10" + }, + "devDependencies": { + "@motion-canvas/ui": "^3.11.0", + "@motion-canvas/vite-plugin": "^3.11.0", + "typescript": "^4.9.5", + "vite": "^4.1.4" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@ffmpeg-installer/darwin-arm64": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-arm64/-/darwin-arm64-4.1.5.tgz", + "integrity": "sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@ffmpeg-installer/darwin-x64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-x64/-/darwin-x64-4.1.0.tgz", + "integrity": "sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@ffmpeg-installer/ffmpeg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.1.0.tgz", + "integrity": "sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==", + "optionalDependencies": { + "@ffmpeg-installer/darwin-arm64": "4.1.5", + "@ffmpeg-installer/darwin-x64": "4.1.0", + "@ffmpeg-installer/linux-arm": "4.1.3", + "@ffmpeg-installer/linux-arm64": "4.1.4", + "@ffmpeg-installer/linux-ia32": "4.1.0", + "@ffmpeg-installer/linux-x64": "4.1.0", + "@ffmpeg-installer/win32-ia32": "4.1.0", + "@ffmpeg-installer/win32-x64": "4.1.0" + } + }, + "node_modules/@ffmpeg-installer/linux-arm": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-arm/-/linux-arm-4.1.3.tgz", + "integrity": "sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg==", + "cpu": [ + "arm" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffmpeg-installer/linux-arm64": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-arm64/-/linux-arm64-4.1.4.tgz", + "integrity": "sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffmpeg-installer/linux-ia32": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-ia32/-/linux-ia32-4.1.0.tgz", + "integrity": "sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ==", + "cpu": [ + "ia32" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffmpeg-installer/linux-x64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-x64/-/linux-x64-4.1.0.tgz", + "integrity": "sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffmpeg-installer/win32-ia32": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/win32-ia32/-/win32-ia32-4.1.0.tgz", + "integrity": "sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@ffmpeg-installer/win32-x64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ffmpeg-installer/win32-x64/-/win32-x64-4.1.0.tgz", + "integrity": "sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@ffprobe-installer/darwin-arm64": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/darwin-arm64/-/darwin-arm64-5.0.1.tgz", + "integrity": "sha512-vwNCNjokH8hfkbl6m95zICHwkSzhEvDC3GVBcUp5HX8+4wsX10SP3B+bGur7XUzTIZ4cQpgJmEIAx6TUwRepMg==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@ffprobe-installer/darwin-x64": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/darwin-x64/-/darwin-x64-5.1.0.tgz", + "integrity": "sha512-J+YGscZMpQclFg31O4cfVRGmDpkVsQ2fZujoUdMAAYcP0NtqpC49Hs3SWJpBdsGB4VeqOt5TTm1vSZQzs1NkhA==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@ffprobe-installer/ffprobe": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/ffprobe/-/ffprobe-2.1.2.tgz", + "integrity": "sha512-ZNvwk4f2magF42Zji2Ese16SMj9BS7Fui4kRjg6gTYTxY3gWZNpg85n4MIfQyI9nimHg4x/gT6FVkp/bBDuBwg==", + "engines": { + "node": ">=14.21.2" + }, + "optionalDependencies": { + "@ffprobe-installer/darwin-arm64": "5.0.1", + "@ffprobe-installer/darwin-x64": "5.1.0", + "@ffprobe-installer/linux-arm": "5.2.0", + "@ffprobe-installer/linux-arm64": "5.2.0", + "@ffprobe-installer/linux-ia32": "5.2.0", + "@ffprobe-installer/linux-x64": "5.2.0", + "@ffprobe-installer/win32-ia32": "5.1.0", + "@ffprobe-installer/win32-x64": "5.1.0" + } + }, + "node_modules/@ffprobe-installer/linux-arm": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/linux-arm/-/linux-arm-5.2.0.tgz", + "integrity": "sha512-PF5HqEhCY7WTWHtLDYbA/+rLS+rhslWvyBlAG1Fk8VzVlnRdl93o6hy7DE2kJgxWQbFaR3ZktPQGEzfkrmQHvQ==", + "cpu": [ + "arm" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffprobe-installer/linux-arm64": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/linux-arm64/-/linux-arm64-5.2.0.tgz", + "integrity": "sha512-X1VvWtlLs6ScP73biVLuHD5ohKJKsMTa0vafCESOen4mOoNeLAYbxOVxDWAdFz9cpZgRiloFj5QD6nDj8E28yQ==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffprobe-installer/linux-ia32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/linux-ia32/-/linux-ia32-5.2.0.tgz", + "integrity": "sha512-TFVK5sasXyXhbIG7LtPRDmtkrkOsInwKcL43iEvEw+D9vCS2rc//mn9/0Q+BR0UoJEiMK4+ApYr/3LLVUBPOCQ==", + "cpu": [ + "ia32" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffprobe-installer/linux-x64": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/linux-x64/-/linux-x64-5.2.0.tgz", + "integrity": "sha512-D3UeqTLYPNs7pBWPLUYGehPdRVqU8eACox4OZy3pZUZatxye2YKlvBwEfaLdL1v2Z4FOAlLUhms0kY8m8kqSRA==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@ffprobe-installer/win32-ia32": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/win32-ia32/-/win32-ia32-5.1.0.tgz", + "integrity": "sha512-5O3vOoNRxmut0/Nu9vSazTdSHasrr+zPT2B3Hm7kjmO3QVFcIfVImS6ReQnZeSy8JPJOqXts5kX5x/3KOX54XQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@ffprobe-installer/win32-x64": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ffprobe-installer/win32-x64/-/win32-x64-5.1.0.tgz", + "integrity": "sha512-jMGYeAgkrdn4e2vvYt/qakgHRE3CPju4bn5TmdPfoAm1BlX1mY9cyMd8gf5vSzI8gH8Zq5WQAyAkmekX/8TSTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@motion-canvas/2d": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@motion-canvas/2d/-/2d-3.11.0.tgz", + "integrity": "sha512-T/RPXGRxddO/xxbC2RcOXfrtBTp8lfcmnuW1fa6++0qy0chK5NFxm3bHJczCbX0ynKB2VAoqLNobTF9eD6ZP3w==", + "dependencies": { + "@motion-canvas/core": "^3.11.0", + "code-fns": "^0.8.2", + "mathjax-full": "^3.2.2", + "parse-svg-path": "^0.1.2" + } + }, + "node_modules/@motion-canvas/core": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@motion-canvas/core/-/core-3.11.0.tgz", + "integrity": "sha512-/WjdoSTqTPwCgrB2pP8YXq2T3KviYHrywVxXJ5fEjQ1gajkPKYD7aVlRcY1+kaTbwqXhCARMCh+pSjT2nfhTsw==", + "dependencies": { + "@types/chroma-js": "^2.1.4", + "chroma-js": "^2.4.2" + }, + "peerDependencies": { + "vite": "^4.1.4" + } + }, + "node_modules/@motion-canvas/ffmpeg": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@motion-canvas/ffmpeg/-/ffmpeg-1.1.1.tgz", + "integrity": "sha512-w2d7oFfR3hYHXeYtFGoHp6goY+vVL0LoZ2h1b/veTH5KvE7jrLp2Kl/XPHsYJ5ZDRHUT0Nhl05DBLdXYqdSqgg==", + "dependencies": { + "@ffmpeg-installer/ffmpeg": "^1.1.0", + "@ffprobe-installer/ffprobe": "^2.0.0", + "fluent-ffmpeg": "^2.1.2" + }, + "peerDependencies": { + "@motion-canvas/core": "^3.7.0", + "@motion-canvas/vite-plugin": "^3.7.0", + "vite": "4.x" + } + }, + "node_modules/@motion-canvas/ui": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@motion-canvas/ui/-/ui-3.11.0.tgz", + "integrity": "sha512-sd0GxvCkejL2lzExsvgLsC1GgHzLP/0LlMw1QE2/3pMQo3rMOVA7L1Oq6br8HqdJhzMEgW3DWC0NjDJsUfkL2A==", + "dev": true, + "dependencies": { + "@motion-canvas/core": "^3.11.0" + } + }, + "node_modules/@motion-canvas/vite-plugin": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@motion-canvas/vite-plugin/-/vite-plugin-3.11.0.tgz", + "integrity": "sha512-26ixfy5NhvFePj1DBdh7MFsgevpRrzzEKjzSyCK3FOvPcnUWFjab4wWErpsIEnu6a0p7yj4w9VKpa8USx6N95A==", + "dependencies": { + "follow-redirects": "^1.15.2", + "mime-types": "^2.1.35" + }, + "peerDependencies": { + "vite": "4.x" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-gbiHvCuBS9aXkE3OEDfS69bscNLTYtbbx2TQf6WyOu+4eCH1AH1gPSiDGF2UzwkRFAbqKNsC5F0mY0xcaEHCbg==" + }, + "node_modules/@types/hast": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.7.tgz", + "integrity": "sha512-EVLigw5zInURhzfXUM65eixfadfsHKomGKUakToXo84t8gGIJuTcD2xooM2See7GyQ7DRtYjhCHnSUQez8JaLw==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==" + }, + "node_modules/@wooorm/starry-night": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@wooorm/starry-night/-/starry-night-1.7.0.tgz", + "integrity": "sha512-ktO0nkddrovIoNW2jAUT+Cdd9n1bWjy1Ir4CdcmgTaT6E94HLlQfu7Yv62falclBEwvsuVp3bSBw23wtta1fNw==", + "dependencies": { + "@types/hast": "^2.0.0", + "import-meta-resolve": "^2.0.0", + "vscode-oniguruma": "^1.0.0", + "vscode-textmate": "^9.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, + "node_modules/code-fns": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/code-fns/-/code-fns-0.8.2.tgz", + "integrity": "sha512-3VVeq3cnWxWiWKFLsVo+XWsOXBSW2gAx2uv0ViETLNmNuygEPHlCeDAv/Zy7xXqPgXtgLZyvIJZmx+ojTgOIGA==", + "dependencies": { + "@wooorm/starry-night": "^1.2.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fluent-ffmpeg": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", + "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", + "dependencies": { + "async": ">=0.2.9", + "which": "^1.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/import-meta-resolve": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", + "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/mathjax-full": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "dependencies": { + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" + } + }, + "node_modules/mhchemparser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speech-rule-engine": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", + "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", + "dependencies": { + "commander": "9.2.0", + "wicked-good-xpath": "1.3.0", + "xmldom-sre": "0.1.31" + }, + "bin": { + "sre": "bin/sre" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/vite": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "node_modules/vscode-textmate": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.0.0.tgz", + "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/xmldom-sre": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", + "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==", + "engines": { + "node": ">=0.1" + } + } + } +} diff --git a/animations/package.json b/animations/package.json new file mode 100644 index 0000000..0640aec --- /dev/null +++ b/animations/package.json @@ -0,0 +1,21 @@ +{ + "name": "animations", + "private": true, + "version": "0.0.0", + "scripts": { + "serve": "vite", + "build": "tsc && vite build" + }, + "dependencies": { + "@motion-canvas/2d": "^3.11.0", + "@motion-canvas/core": "^3.11.0", + "@motion-canvas/ffmpeg": "^1.1.0", + "glob": "^10.3.10" + }, + "devDependencies": { + "@motion-canvas/ui": "^3.11.0", + "@motion-canvas/vite-plugin": "^3.11.0", + "typescript": "^4.9.5", + "vite": "^4.1.4" + } +} diff --git a/animations/src/motion-canvas.d.ts b/animations/src/motion-canvas.d.ts new file mode 100644 index 0000000..067c6a4 --- /dev/null +++ b/animations/src/motion-canvas.d.ts @@ -0,0 +1 @@ +/// diff --git a/animations/src/project.meta b/animations/src/project.meta new file mode 100644 index 0000000..0e33e3f --- /dev/null +++ b/animations/src/project.meta @@ -0,0 +1,3 @@ +{ + "version": 0 +} \ No newline at end of file diff --git a/animations/src/project.ts b/animations/src/project.ts new file mode 100644 index 0000000..ecfbbeb --- /dev/null +++ b/animations/src/project.ts @@ -0,0 +1,7 @@ +import {makeProject} from '@motion-canvas/core'; + +import example from './scenes/example?scene'; + +export default makeProject({ + scenes: [example], +}); diff --git a/animations/src/scenes/example.meta b/animations/src/scenes/example.meta new file mode 100644 index 0000000..0e33e3f --- /dev/null +++ b/animations/src/scenes/example.meta @@ -0,0 +1,3 @@ +{ + "version": 0 +} \ No newline at end of file diff --git a/animations/src/scenes/example.tsx b/animations/src/scenes/example.tsx new file mode 100644 index 0000000..a04cd0c --- /dev/null +++ b/animations/src/scenes/example.tsx @@ -0,0 +1,15 @@ +import { makeScene2D, Circle } from "@motion-canvas/2d"; +import { createRef, all } from "@motion-canvas/core"; + +export default makeScene2D(function* (view) { + const myCircle = createRef(); + + view.add( + + ); + + yield* all( + myCircle().position.x(300, 1).to(-300, 1), + myCircle().fill("#e6a700", 1).to("#e13238", 1) + ); +}); diff --git a/animations/tsconfig.json b/animations/tsconfig.json new file mode 100644 index 0000000..e7d5347 --- /dev/null +++ b/animations/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@motion-canvas/2d/tsconfig.project.json", + "include": ["src"] +} diff --git a/animations/vite.config.ts b/animations/vite.config.ts new file mode 100644 index 0000000..c24247c --- /dev/null +++ b/animations/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "vite"; +import motionCanvas from "@motion-canvas/vite-plugin"; + +export default defineConfig({ + plugins: [ + motionCanvas({ + project: ["./src/project.ts"], + }), + ], + build: { + rollupOptions: { + output: { + dir: "../public/animations", + entryFileNames: "[name].js", + }, + }, + }, +}); diff --git a/dist/animations/project.js b/dist/animations/project.js new file mode 100644 index 0000000..16316ce --- /dev/null +++ b/dist/animations/project.js @@ -0,0 +1,59 @@ +class Vr{constructor(){this.subscribable=new ni(this),this.subscribers=new Set}subscribe(t){return this.subscribers.add(t),()=>this.unsubscribe(t)}unsubscribe(t){this.subscribers.delete(t)}clear(){this.subscribers.clear()}notifySubscribers(t){return[...this.subscribers].map(e=>e(t))}}class ni{constructor(t){this.dispatcher=t}subscribe(t){return this.dispatcher.subscribe(t)}unsubscribe(t){this.dispatcher.unsubscribe(t)}}class Lt extends Vr{dispatch(t){this.notifySubscribers(t)}}class qh extends Vr{constructor(){super(...arguments),this.value=!1}raise(){this.value||(this.value=!0,this.notifySubscribers())}reset(){this.value=!1}isRaised(){return this.value}subscribe(t){const e=super.subscribe(t);return this.value&&t(),e}}class te extends Vr{get current(){return this.value}set current(t){this.value=t,this.notifySubscribers(t)}constructor(t){super(),this.value=t,this.subscribable=new Wh(this)}subscribe(t,e=!0){const r=super.subscribe(t);return e&&t(this.value),r}}class Wh extends ni{get current(){return this.dispatcher.current}subscribe(t,e=!0){return this.dispatcher.subscribe(t,e)}}var Mt;(function(s){s.Error="error",s.Warn="warn",s.Info="info",s.Http="http",s.Verbose="verbose",s.Debug="debug",s.Silly="silly"})(Mt||(Mt={}));class Gh{constructor(){this.logged=new Lt,this.history=[],this.profilers={}}get onLogged(){return this.logged.subscribable}log(t){this.logged.dispatch(t),this.history.push(t)}error(t){this.logLevel(Mt.Error,t)}warn(t){this.logLevel(Mt.Warn,t)}info(t){this.logLevel(Mt.Info,t)}http(t){this.logLevel(Mt.Http,t)}verbose(t){this.logLevel(Mt.Verbose,t)}debug(t){this.logLevel(Mt.Debug,t)}silly(t){this.logLevel(Mt.Silly,t)}logLevel(t,e){const r=typeof e=="string"?{message:e}:e;r.level=t,this.log(r)}profile(t,e){const r=performance.now();if(this.profilers[t]){const a=this.profilers[t];delete this.profilers[t];const o=e??{message:t};o.level??(o.level=Mt.Debug),o.durationMs=r-a,this.log(o);return}this.profilers[t]=r}}class bt{get onChanged(){return this.value.subscribable}get onDisabled(){return this.disabled.subscribable}constructor(t,e){this.name=t,this.initial=e,this.type=void 0,this.spacing=!1,this.description="",this.disabled=new te(!1),this.value=new te(e)}get(){return this.value.current}set(t){this.value.current=this.parse(t)}parse(t){return t}serialize(){return this.value.current}clone(){return new this.constructor(this.name,this.get())}disable(t=!0){return this.disabled.current=t,this}space(t=!0){return this.spacing=t,this}describe(t){return this.description=t,this}}class Hh extends bt{get onFieldsChanged(){return this.event.subscribable}constructor(t,e){const r=new Map(Object.entries(e));super(t,Object.fromEntries(Array.from(r,([a,o])=>[a,o.get()]))),this.type=Object,this.ignoreChange=!1,this.customFields={},this.handleChange=()=>{this.ignoreChange||(this.value.current=this.transform("get"))},this.event=new te([...r.values()]),this.fields=r;for(const[a,o]of this.fields)Object.defineProperty(this,a,{value:o}),o.onChanged.subscribe(this.handleChange)}set(t){this.ignoreChange=!0;for(const[e,r]of Object.entries(t)){const a=this.fields.get(e);a?a.set(r):this.customFields[e]=r}this.ignoreChange=!1,this.handleChange()}serialize(){return this.transform("serialize")}clone(){return new this.constructor(this.name,this.transform("clone"))}transform(t){return{...Object.fromEntries(Array.from(this.fields,([r,a])=>[r,a[t]()])),...this.customFields}}}const _t=Hh;class Xr extends bt{constructor(){super(...arguments),this.type=Boolean}parse(t){return!!t}}var Xh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},si={exports:{}};/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */(function(s,t){(function(e,r){s.exports=r()})(Xh,function(){for(var e=function(n,i,l){return i===void 0&&(i=0),l===void 0&&(l=1),nl?l:n},r=e,a=function(n){n._clipped=!1,n._unclipped=n.slice(0);for(var i=0;i<=3;i++)i<3?((n[i]<0||n[i]>255)&&(n._clipped=!0),n[i]=r(n[i],0,255)):i===3&&(n[i]=r(n[i],0,1));return n},o={},h=0,c=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];h=3?Array.prototype.slice.call(n):P(n[0])=="object"&&i?i.split("").filter(function(l){return n[0][l]!==void 0}).map(function(l){return n[0][l]}):n[0]},K=w,ct=function(n){if(n.length<2)return null;var i=n.length-1;return K(n[i])=="string"?n[i].toLowerCase():null},Rt=Math.PI,C={clip_rgb:a,limit:e,type:w,unpack:O,last:ct,PI:Rt,TWOPI:Rt*2,PITHIRD:Rt/3,DEG2RAD:Rt/180,RAD2DEG:180/Rt},rt={format:{},autodetect:[]},dr=C.last,gr=C.clip_rgb,ze=C.type,$t=rt,pn=function(){for(var i=[],l=arguments.length;l--;)i[l]=arguments[l];var u=this;if(ze(i[0])==="object"&&i[0].constructor&&i[0].constructor===this.constructor)return i[0];var p=dr(i),d=!1;if(!p){d=!0,$t.sorted||($t.autodetect=$t.autodetect.sort(function(x,R){return R.p-x.p}),$t.sorted=!0);for(var f=0,g=$t.autodetect;f4?n[4]:1;return d===1?[0,0,0,f]:[l>=1?0:255*(1-l)*(1-d),u>=1?0:255*(1-u)*(1-d),p>=1?0:255*(1-p)*(1-d),f]},Si=xi,ki=nt,gn=D,vn=rt,Ci=C.unpack,Pi=C.type,Ri=yi;gn.prototype.cmyk=function(){return Ri(this._rgb)},ki.cmyk=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(gn,[null].concat(n,["cmyk"])))},vn.format.cmyk=Si,vn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=Ci(n,"cmyk"),Pi(n)==="array"&&n.length===4)return"cmyk"}});var $i=C.unpack,Mi=C.last,vr=function(n){return Math.round(n*100)/100},Ti=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=$i(n,"hsla"),u=Mi(n)||"lsa";return l[0]=vr(l[0]||0),l[1]=vr(l[1]*100)+"%",l[2]=vr(l[2]*100)+"%",u==="hsla"||l.length>3&&l[3]<1?(l[3]=l.length>3?l[3]:1,u="hsla"):l.length=3,u+"("+l.join(",")+")"},Li=Ti,zi=C.unpack,Ii=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=zi(n,"rgba");var l=n[0],u=n[1],p=n[2];l/=255,u/=255,p/=255;var d=Math.min(l,u,p),f=Math.max(l,u,p),g=(f+d)/2,b,y;return f===d?(b=0,y=Number.NaN):b=g<.5?(f-d)/(f+d):(f-d)/(2-f-d),l==f?y=(u-p)/(f-d):u==f?y=2+(p-l)/(f-d):p==f&&(y=4+(l-u)/(f-d)),y*=60,y<0&&(y+=360),n.length>3&&n[3]!==void 0?[y,b,g,n[3]]:[y,b,g]},bn=Ii,Ai=C.unpack,Oi=C.last,Fi=Li,Ei=bn,br=Math.round,Di=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Ai(n,"rgba"),u=Oi(n)||"rgb";return u.substr(0,3)=="hsl"?Fi(Ei(l),u):(l[0]=br(l[0]),l[1]=br(l[1]),l[2]=br(l[2]),(u==="rgba"||l.length>3&&l[3]<1)&&(l[3]=l.length>3?l[3]:1,u="rgba"),u+"("+l.slice(0,u==="rgb"?3:4).join(",")+")")},Bi=Di,Ni=C.unpack,mr=Math.round,ji=function(){for(var n,i=[],l=arguments.length;l--;)i[l]=arguments[l];i=Ni(i,"hsl");var u=i[0],p=i[1],d=i[2],f,g,b;if(p===0)f=g=b=d*255;else{var y=[0,0,0],x=[0,0,0],R=d<.5?d*(1+p):d+p-d*p,S=2*d-R,T=u/360;y[0]=T+1/3,y[1]=T,y[2]=T-1/3;for(var M=0;M<3;M++)y[M]<0&&(y[M]+=1),y[M]>1&&(y[M]-=1),6*y[M]<1?x[M]=S+(R-S)*6*y[M]:2*y[M]<1?x[M]=R:3*y[M]<2?x[M]=S+(R-S)*(2/3-y[M])*6:x[M]=S;n=[mr(x[0]*255),mr(x[1]*255),mr(x[2]*255)],f=n[0],g=n[1],b=n[2]}return i.length>3?[f,g,b,i[3]]:[f,g,b,1]},mn=ji,yn=mn,wn=rt,xn=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Sn=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,kn=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Cn=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Pn=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Rn=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,$n=Math.round,Mn=function(n){n=n.toLowerCase().trim();var i;if(wn.format.named)try{return wn.format.named(n)}catch{}if(i=n.match(xn)){for(var l=i.slice(1,4),u=0;u<3;u++)l[u]=+l[u];return l[3]=1,l}if(i=n.match(Sn)){for(var p=i.slice(1,5),d=0;d<4;d++)p[d]=+p[d];return p}if(i=n.match(kn)){for(var f=i.slice(1,4),g=0;g<3;g++)f[g]=$n(f[g]*2.55);return f[3]=1,f}if(i=n.match(Cn)){for(var b=i.slice(1,5),y=0;y<3;y++)b[y]=$n(b[y]*2.55);return b[3]=+b[3],b}if(i=n.match(Pn)){var x=i.slice(1,4);x[1]*=.01,x[2]*=.01;var R=yn(x);return R[3]=1,R}if(i=n.match(Rn)){var S=i.slice(1,4);S[1]*=.01,S[2]*=.01;var T=yn(S);return T[3]=+i[4],T}};Mn.test=function(n){return xn.test(n)||Sn.test(n)||kn.test(n)||Cn.test(n)||Pn.test(n)||Rn.test(n)};var _i=Mn,qi=nt,Tn=D,Ln=rt,Wi=C.type,Gi=Bi,zn=_i;Tn.prototype.css=function(n){return Gi(this._rgb,n)},qi.css=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Tn,[null].concat(n,["css"])))},Ln.format.css=zn,Ln.autodetect.push({p:5,test:function(n){for(var i=[],l=arguments.length-1;l-- >0;)i[l]=arguments[l+1];if(!i.length&&Wi(n)==="string"&&zn.test(n))return"css"}});var In=D,Hi=nt,Xi=rt,Yi=C.unpack;Xi.format.gl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Yi(n,"rgba");return l[0]*=255,l[1]*=255,l[2]*=255,l},Hi.gl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(In,[null].concat(n,["gl"])))},In.prototype.gl=function(){var n=this._rgb;return[n[0]/255,n[1]/255,n[2]/255,n[3]]};var Ui=C.unpack,Zi=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Ui(n,"rgb"),u=l[0],p=l[1],d=l[2],f=Math.min(u,p,d),g=Math.max(u,p,d),b=g-f,y=b*100/255,x=f/(255-b)*100,R;return b===0?R=Number.NaN:(u===g&&(R=(p-d)/b),p===g&&(R=2+(d-u)/b),d===g&&(R=4+(u-p)/b),R*=60,R<0&&(R+=360)),[R,y,x]},Ji=Zi,Qi=C.unpack,Vi=Math.floor,Ki=function(){for(var n,i,l,u,p,d,f=[],g=arguments.length;g--;)f[g]=arguments[g];f=Qi(f,"hcg");var b=f[0],y=f[1],x=f[2],R,S,T;x=x*255;var M=y*255;if(y===0)R=S=T=x;else{b===360&&(b=0),b>360&&(b-=360),b<0&&(b+=360),b/=60;var B=Vi(b),_=b-B,G=x*(1-y),X=G+M*(1-_),lt=G+M*_,ot=G+M;switch(B){case 0:n=[ot,lt,G],R=n[0],S=n[1],T=n[2];break;case 1:i=[X,ot,G],R=i[0],S=i[1],T=i[2];break;case 2:l=[G,ot,lt],R=l[0],S=l[1],T=l[2];break;case 3:u=[G,X,ot],R=u[0],S=u[1],T=u[2];break;case 4:p=[lt,G,ot],R=p[0],S=p[1],T=p[2];break;case 5:d=[ot,G,X],R=d[0],S=d[1],T=d[2];break}}return[R,S,T,f.length>3?f[3]:1]},ta=Ki,ea=C.unpack,ra=C.type,na=nt,An=D,On=rt,sa=Ji;An.prototype.hcg=function(){return sa(this._rgb)},na.hcg=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(An,[null].concat(n,["hcg"])))},On.format.hcg=ta,On.autodetect.push({p:1,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=ea(n,"hcg"),ra(n)==="array"&&n.length===3)return"hcg"}});var ia=C.unpack,aa=C.last,Ue=Math.round,oa=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=ia(n,"rgba"),u=l[0],p=l[1],d=l[2],f=l[3],g=aa(n)||"auto";f===void 0&&(f=1),g==="auto"&&(g=f<1?"rgba":"rgb"),u=Ue(u),p=Ue(p),d=Ue(d);var b=u<<16|p<<8|d,y="000000"+b.toString(16);y=y.substr(y.length-6);var x="0"+Ue(f*255).toString(16);switch(x=x.substr(x.length-2),g.toLowerCase()){case"rgba":return"#"+y+x;case"argb":return"#"+x+y;default:return"#"+y}},Fn=oa,la=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,ha=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,ua=function(n){if(n.match(la)){(n.length===4||n.length===7)&&(n=n.substr(1)),n.length===3&&(n=n.split(""),n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]);var i=parseInt(n,16),l=i>>16,u=i>>8&255,p=i&255;return[l,u,p,1]}if(n.match(ha)){(n.length===5||n.length===9)&&(n=n.substr(1)),n.length===4&&(n=n.split(""),n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]);var d=parseInt(n,16),f=d>>24&255,g=d>>16&255,b=d>>8&255,y=Math.round((d&255)/255*100)/100;return[f,g,b,y]}throw new Error("unknown hex color: "+n)},En=ua,ca=nt,Dn=D,fa=C.type,Bn=rt,pa=Fn;Dn.prototype.hex=function(n){return pa(this._rgb,n)},ca.hex=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Dn,[null].concat(n,["hex"])))},Bn.format.hex=En,Bn.autodetect.push({p:4,test:function(n){for(var i=[],l=arguments.length-1;l-- >0;)i[l]=arguments[l+1];if(!i.length&&fa(n)==="string"&&[3,4,5,6,7,8,9].indexOf(n.length)>=0)return"hex"}});var da=C.unpack,Nn=C.TWOPI,ga=Math.min,va=Math.sqrt,ba=Math.acos,ma=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=da(n,"rgb"),u=l[0],p=l[1],d=l[2];u/=255,p/=255,d/=255;var f,g=ga(u,p,d),b=(u+p+d)/3,y=b>0?1-g/b:0;return y===0?f=NaN:(f=(u-p+(u-d))/2,f/=va((u-p)*(u-p)+(u-d)*(p-d)),f=ba(f),d>p&&(f=Nn-f),f/=Nn),[f*360,y,b]},ya=ma,wa=C.unpack,yr=C.limit,de=C.TWOPI,wr=C.PITHIRD,ge=Math.cos,xa=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=wa(n,"hsi");var l=n[0],u=n[1],p=n[2],d,f,g;return isNaN(l)&&(l=0),isNaN(u)&&(u=0),l>360&&(l-=360),l<0&&(l+=360),l/=360,l<1/3?(g=(1-u)/3,d=(1+u*ge(de*l)/ge(wr-de*l))/3,f=1-(g+d)):l<2/3?(l-=1/3,d=(1-u)/3,f=(1+u*ge(de*l)/ge(wr-de*l))/3,g=1-(d+f)):(l-=2/3,f=(1-u)/3,g=(1+u*ge(de*l)/ge(wr-de*l))/3,d=1-(f+g)),d=yr(p*d*3),f=yr(p*f*3),g=yr(p*g*3),[d*255,f*255,g*255,n.length>3?n[3]:1]},Sa=xa,ka=C.unpack,Ca=C.type,Pa=nt,jn=D,_n=rt,Ra=ya;jn.prototype.hsi=function(){return Ra(this._rgb)},Pa.hsi=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(jn,[null].concat(n,["hsi"])))},_n.format.hsi=Sa,_n.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=ka(n,"hsi"),Ca(n)==="array"&&n.length===3)return"hsi"}});var $a=C.unpack,Ma=C.type,Ta=nt,qn=D,Wn=rt,La=bn;qn.prototype.hsl=function(){return La(this._rgb)},Ta.hsl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(qn,[null].concat(n,["hsl"])))},Wn.format.hsl=mn,Wn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=$a(n,"hsl"),Ma(n)==="array"&&n.length===3)return"hsl"}});var za=C.unpack,Ia=Math.min,Aa=Math.max,Oa=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=za(n,"rgb");var l=n[0],u=n[1],p=n[2],d=Ia(l,u,p),f=Aa(l,u,p),g=f-d,b,y,x;return x=f/255,f===0?(b=Number.NaN,y=0):(y=g/f,l===f&&(b=(u-p)/g),u===f&&(b=2+(p-l)/g),p===f&&(b=4+(l-u)/g),b*=60,b<0&&(b+=360)),[b,y,x]},Fa=Oa,Ea=C.unpack,Da=Math.floor,Ba=function(){for(var n,i,l,u,p,d,f=[],g=arguments.length;g--;)f[g]=arguments[g];f=Ea(f,"hsv");var b=f[0],y=f[1],x=f[2],R,S,T;if(x*=255,y===0)R=S=T=x;else{b===360&&(b=0),b>360&&(b-=360),b<0&&(b+=360),b/=60;var M=Da(b),B=b-M,_=x*(1-y),G=x*(1-y*B),X=x*(1-y*(1-B));switch(M){case 0:n=[x,X,_],R=n[0],S=n[1],T=n[2];break;case 1:i=[G,x,_],R=i[0],S=i[1],T=i[2];break;case 2:l=[_,x,X],R=l[0],S=l[1],T=l[2];break;case 3:u=[_,G,x],R=u[0],S=u[1],T=u[2];break;case 4:p=[X,_,x],R=p[0],S=p[1],T=p[2];break;case 5:d=[x,_,G],R=d[0],S=d[1],T=d[2];break}}return[R,S,T,f.length>3?f[3]:1]},Na=Ba,ja=C.unpack,_a=C.type,qa=nt,Gn=D,Hn=rt,Wa=Fa;Gn.prototype.hsv=function(){return Wa(this._rgb)},qa.hsv=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Gn,[null].concat(n,["hsv"])))},Hn.format.hsv=Na,Hn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=ja(n,"hsv"),_a(n)==="array"&&n.length===3)return"hsv"}});var Ze={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ve=Ze,Ga=C.unpack,Xn=Math.pow,Ha=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Ga(n,"rgb"),u=l[0],p=l[1],d=l[2],f=Xa(u,p,d),g=f[0],b=f[1],y=f[2],x=116*b-16;return[x<0?0:x,500*(g-b),200*(b-y)]},xr=function(n){return(n/=255)<=.04045?n/12.92:Xn((n+.055)/1.055,2.4)},Sr=function(n){return n>ve.t3?Xn(n,1/3):n/ve.t2+ve.t0},Xa=function(n,i,l){n=xr(n),i=xr(i),l=xr(l);var u=Sr((.4124564*n+.3575761*i+.1804375*l)/ve.Xn),p=Sr((.2126729*n+.7151522*i+.072175*l)/ve.Yn),d=Sr((.0193339*n+.119192*i+.9503041*l)/ve.Zn);return[u,p,d]},Yn=Ha,be=Ze,Ya=C.unpack,Ua=Math.pow,Za=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=Ya(n,"lab");var l=n[0],u=n[1],p=n[2],d,f,g,b,y,x;return f=(l+16)/116,d=isNaN(u)?f:f+u/500,g=isNaN(p)?f:f-p/200,f=be.Yn*Cr(f),d=be.Xn*Cr(d),g=be.Zn*Cr(g),b=kr(3.2404542*d-1.5371385*f-.4985314*g),y=kr(-.969266*d+1.8760108*f+.041556*g),x=kr(.0556434*d-.2040259*f+1.0572252*g),[b,y,x,n.length>3?n[3]:1]},kr=function(n){return 255*(n<=.00304?12.92*n:1.055*Ua(n,1/2.4)-.055)},Cr=function(n){return n>be.t1?n*n*n:be.t2*(n-be.t0)},Un=Za,Ja=C.unpack,Qa=C.type,Va=nt,Zn=D,Jn=rt,Ka=Yn;Zn.prototype.lab=function(){return Ka(this._rgb)},Va.lab=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Zn,[null].concat(n,["lab"])))},Jn.format.lab=Un,Jn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=Ja(n,"lab"),Qa(n)==="array"&&n.length===3)return"lab"}});var to=C.unpack,eo=C.RAD2DEG,ro=Math.sqrt,no=Math.atan2,so=Math.round,io=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=to(n,"lab"),u=l[0],p=l[1],d=l[2],f=ro(p*p+d*d),g=(no(d,p)*eo+360)%360;return so(f*1e4)===0&&(g=Number.NaN),[u,f,g]},Qn=io,ao=C.unpack,oo=Yn,lo=Qn,ho=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=ao(n,"rgb"),u=l[0],p=l[1],d=l[2],f=oo(u,p,d),g=f[0],b=f[1],y=f[2];return lo(g,b,y)},uo=ho,co=C.unpack,fo=C.DEG2RAD,po=Math.sin,go=Math.cos,vo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=co(n,"lch"),u=l[0],p=l[1],d=l[2];return isNaN(d)&&(d=0),d=d*fo,[u,go(d)*p,po(d)*p]},Vn=vo,bo=C.unpack,mo=Vn,yo=Un,wo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=bo(n,"lch");var l=n[0],u=n[1],p=n[2],d=mo(l,u,p),f=d[0],g=d[1],b=d[2],y=yo(f,g,b),x=y[0],R=y[1],S=y[2];return[x,R,S,n.length>3?n[3]:1]},Kn=wo,xo=C.unpack,So=Kn,ko=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=xo(n,"hcl").reverse();return So.apply(void 0,l)},Co=ko,Po=C.unpack,Ro=C.type,ts=nt,Je=D,Pr=rt,es=uo;Je.prototype.lch=function(){return es(this._rgb)},Je.prototype.hcl=function(){return es(this._rgb).reverse()},ts.lch=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Je,[null].concat(n,["lch"])))},ts.hcl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Je,[null].concat(n,["hcl"])))},Pr.format.lch=Kn,Pr.format.hcl=Co,["lch","hcl"].forEach(function(n){return Pr.autodetect.push({p:2,test:function(){for(var i=[],l=arguments.length;l--;)i[l]=arguments[l];if(i=Po(i,n),Ro(i)==="array"&&i.length===3)return n}})});var $o={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},rs=$o,Mo=D,ns=rt,To=C.type,Ie=rs,Lo=En,zo=Fn;Mo.prototype.name=function(){for(var n=zo(this._rgb,"rgb"),i=0,l=Object.keys(Ie);i0;)i[l]=arguments[l+1];if(!i.length&&To(n)==="string"&&Ie[n.toLowerCase()])return"named"}});var Io=C.unpack,Ao=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Io(n,"rgb"),u=l[0],p=l[1],d=l[2];return(u<<16)+(p<<8)+d},Oo=Ao,Fo=C.type,Eo=function(n){if(Fo(n)=="number"&&n>=0&&n<=16777215){var i=n>>16,l=n>>8&255,u=n&255;return[i,l,u,1]}throw new Error("unknown num color: "+n)},Do=Eo,Bo=nt,ss=D,is=rt,No=C.type,jo=Oo;ss.prototype.num=function(){return jo(this._rgb)},Bo.num=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(ss,[null].concat(n,["num"])))},is.format.num=Do,is.autodetect.push({p:5,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n.length===1&&No(n[0])==="number"&&n[0]>=0&&n[0]<=16777215)return"num"}});var _o=nt,Rr=D,as=rt,os=C.unpack,ls=C.type,hs=Math.round;Rr.prototype.rgb=function(n){return n===void 0&&(n=!0),n===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(hs)},Rr.prototype.rgba=function(n){return n===void 0&&(n=!0),this._rgb.slice(0,4).map(function(i,l){return l<3?n===!1?i:hs(i):i})},_o.rgb=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Rr,[null].concat(n,["rgb"])))},as.format.rgb=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=os(n,"rgba");return l[3]===void 0&&(l[3]=1),l},as.autodetect.push({p:3,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=os(n,"rgba"),ls(n)==="array"&&(n.length===3||n.length===4&&ls(n[3])=="number"&&n[3]>=0&&n[3]<=1))return"rgb"}});var Qe=Math.log,qo=function(n){var i=n/100,l,u,p;return i<66?(l=255,u=i<6?0:-155.25485562709179-.44596950469579133*(u=i-2)+104.49216199393888*Qe(u),p=i<20?0:-254.76935184120902+.8274096064007395*(p=i-10)+115.67994401066147*Qe(p)):(l=351.97690566805693+.114206453784165*(l=i-55)-40.25366309332127*Qe(l),u=325.4494125711974+.07943456536662342*(u=i-50)-28.0852963507957*Qe(u),p=255),[l,u,p,1]},us=qo,Wo=us,Go=C.unpack,Ho=Math.round,Xo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];for(var l=Go(n,"rgb"),u=l[0],p=l[2],d=1e3,f=4e4,g=.4,b;f-d>g;){b=(f+d)*.5;var y=Wo(b);y[2]/y[0]>=p/u?f=b:d=b}return Ho(b)},Yo=Xo,$r=nt,Ve=D,Mr=rt,Uo=Yo;Ve.prototype.temp=Ve.prototype.kelvin=Ve.prototype.temperature=function(){return Uo(this._rgb)},$r.temp=$r.kelvin=$r.temperature=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Ve,[null].concat(n,["temp"])))},Mr.format.temp=Mr.format.kelvin=Mr.format.temperature=us;var Zo=C.unpack,Tr=Math.cbrt,Jo=Math.pow,Qo=Math.sign,Vo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Zo(n,"rgb"),u=l[0],p=l[1],d=l[2],f=[Lr(u/255),Lr(p/255),Lr(d/255)],g=f[0],b=f[1],y=f[2],x=Tr(.4122214708*g+.5363325363*b+.0514459929*y),R=Tr(.2119034982*g+.6806995451*b+.1073969566*y),S=Tr(.0883024619*g+.2817188376*b+.6299787005*y);return[.2104542553*x+.793617785*R-.0040720468*S,1.9779984951*x-2.428592205*R+.4505937099*S,.0259040371*x+.7827717662*R-.808675766*S]},cs=Vo;function Lr(n){var i=Math.abs(n);return i<.04045?n/12.92:(Qo(n)||1)*Jo((i+.055)/1.055,2.4)}var Ko=C.unpack,Ke=Math.pow,tl=Math.sign,el=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=Ko(n,"lab");var l=n[0],u=n[1],p=n[2],d=Ke(l+.3963377774*u+.2158037573*p,3),f=Ke(l-.1055613458*u-.0638541728*p,3),g=Ke(l-.0894841775*u-1.291485548*p,3);return[255*zr(4.0767416621*d-3.3077115913*f+.2309699292*g),255*zr(-1.2684380046*d+2.6097574011*f-.3413193965*g),255*zr(-.0041960863*d-.7034186147*f+1.707614701*g),n.length>3?n[3]:1]},fs=el;function zr(n){var i=Math.abs(n);return i>.0031308?(tl(n)||1)*(1.055*Ke(i,1/2.4)-.055):n*12.92}var rl=C.unpack,nl=C.type,sl=nt,ps=D,ds=rt,il=cs;ps.prototype.oklab=function(){return il(this._rgb)},sl.oklab=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(ps,[null].concat(n,["oklab"])))},ds.format.oklab=fs,ds.autodetect.push({p:3,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=rl(n,"oklab"),nl(n)==="array"&&n.length===3)return"oklab"}});var al=C.unpack,ol=cs,ll=Qn,hl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=al(n,"rgb"),u=l[0],p=l[1],d=l[2],f=ol(u,p,d),g=f[0],b=f[1],y=f[2];return ll(g,b,y)},ul=hl,cl=C.unpack,fl=Vn,pl=fs,dl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=cl(n,"lch");var l=n[0],u=n[1],p=n[2],d=fl(l,u,p),f=d[0],g=d[1],b=d[2],y=pl(f,g,b),x=y[0],R=y[1],S=y[2];return[x,R,S,n.length>3?n[3]:1]},gl=dl,vl=C.unpack,bl=C.type,ml=nt,gs=D,vs=rt,yl=ul;gs.prototype.oklch=function(){return yl(this._rgb)},ml.oklch=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(gs,[null].concat(n,["oklch"])))},vs.format.oklch=gl,vs.autodetect.push({p:3,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=vl(n,"oklch"),bl(n)==="array"&&n.length===3)return"oklch"}});var bs=D,wl=C.type;bs.prototype.alpha=function(n,i){return i===void 0&&(i=!1),n!==void 0&&wl(n)==="number"?i?(this._rgb[3]=n,this):new bs([this._rgb[0],this._rgb[1],this._rgb[2],n],"rgb"):this._rgb[3]};var xl=D;xl.prototype.clipped=function(){return this._rgb._clipped||!1};var se=D,Sl=Ze;se.prototype.darken=function(n){n===void 0&&(n=1);var i=this,l=i.lab();return l[0]-=Sl.Kn*n,new se(l,"lab").alpha(i.alpha(),!0)},se.prototype.brighten=function(n){return n===void 0&&(n=1),this.darken(-n)},se.prototype.darker=se.prototype.darken,se.prototype.brighter=se.prototype.brighten;var kl=D;kl.prototype.get=function(n){var i=n.split("."),l=i[0],u=i[1],p=this[l]();if(u){var d=l.indexOf(u)-(l.substr(0,2)==="ok"?2:0);if(d>-1)return p[d];throw new Error("unknown channel "+u+" in mode "+l)}else return p};var me=D,Cl=C.type,Pl=Math.pow,Rl=1e-7,$l=20;me.prototype.luminance=function(n){if(n!==void 0&&Cl(n)==="number"){if(n===0)return new me([0,0,0,this._rgb[3]],"rgb");if(n===1)return new me([255,255,255,this._rgb[3]],"rgb");var i=this.luminance(),l="rgb",u=$l,p=function(f,g){var b=f.interpolate(g,.5,l),y=b.luminance();return Math.abs(n-y)n?p(f,b):p(b,g)},d=(i>n?p(new me([0,0,0]),this):p(this,new me([255,255,255]))).rgb();return new me(d.concat([this._rgb[3]]))}return Ml.apply(void 0,this._rgb.slice(0,3))};var Ml=function(n,i,l){return n=Ir(n),i=Ir(i),l=Ir(l),.2126*n+.7152*i+.0722*l},Ir=function(n){return n/=255,n<=.03928?n/12.92:Pl((n+.055)/1.055,2.4)},vt={},ms=D,ys=C.type,tr=vt,ws=function(n,i,l){l===void 0&&(l=.5);for(var u=[],p=arguments.length-3;p-- >0;)u[p]=arguments[p+3];var d=u[0]||"lrgb";if(!tr[d]&&!u.length&&(d=Object.keys(tr)[0]),!tr[d])throw new Error("interpolation mode "+d+" is not defined");return ys(n)!=="object"&&(n=new ms(n)),ys(i)!=="object"&&(i=new ms(i)),tr[d](n,i,l).alpha(n.alpha()+l*(i.alpha()-n.alpha()))},xs=D,Tl=ws;xs.prototype.mix=xs.prototype.interpolate=function(n,i){i===void 0&&(i=.5);for(var l=[],u=arguments.length-2;u-- >0;)l[u]=arguments[u+2];return Tl.apply(void 0,[this,n,i].concat(l))};var Ss=D;Ss.prototype.premultiply=function(n){n===void 0&&(n=!1);var i=this._rgb,l=i[3];return n?(this._rgb=[i[0]*l,i[1]*l,i[2]*l,l],this):new Ss([i[0]*l,i[1]*l,i[2]*l,l],"rgb")};var Ar=D,Ll=Ze;Ar.prototype.saturate=function(n){n===void 0&&(n=1);var i=this,l=i.lch();return l[1]+=Ll.Kn*n,l[1]<0&&(l[1]=0),new Ar(l,"lch").alpha(i.alpha(),!0)},Ar.prototype.desaturate=function(n){return n===void 0&&(n=1),this.saturate(-n)};var ks=D,Cs=C.type;ks.prototype.set=function(n,i,l){l===void 0&&(l=!1);var u=n.split("."),p=u[0],d=u[1],f=this[p]();if(d){var g=p.indexOf(d)-(p.substr(0,2)==="ok"?2:0);if(g>-1){if(Cs(i)=="string")switch(i.charAt(0)){case"+":f[g]+=+i;break;case"-":f[g]+=+i;break;case"*":f[g]*=+i.substr(1);break;case"/":f[g]/=+i.substr(1);break;default:f[g]=+i}else if(Cs(i)==="number")f[g]=i;else throw new Error("unsupported value for Color.set");var b=new ks(f,p);return l?(this._rgb=b._rgb,this):b}throw new Error("unknown channel "+d+" in mode "+p)}else return f};var zl=D,Il=function(n,i,l){var u=n._rgb,p=i._rgb;return new zl(u[0]+l*(p[0]-u[0]),u[1]+l*(p[1]-u[1]),u[2]+l*(p[2]-u[2]),"rgb")};vt.rgb=Il;var Al=D,Or=Math.sqrt,ye=Math.pow,Ol=function(n,i,l){var u=n._rgb,p=u[0],d=u[1],f=u[2],g=i._rgb,b=g[0],y=g[1],x=g[2];return new Al(Or(ye(p,2)*(1-l)+ye(b,2)*l),Or(ye(d,2)*(1-l)+ye(y,2)*l),Or(ye(f,2)*(1-l)+ye(x,2)*l),"rgb")};vt.lrgb=Ol;var Fl=D,El=function(n,i,l){var u=n.lab(),p=i.lab();return new Fl(u[0]+l*(p[0]-u[0]),u[1]+l*(p[1]-u[1]),u[2]+l*(p[2]-u[2]),"lab")};vt.lab=El;var Ps=D,we=function(n,i,l,u){var p,d,f,g;u==="hsl"?(f=n.hsl(),g=i.hsl()):u==="hsv"?(f=n.hsv(),g=i.hsv()):u==="hcg"?(f=n.hcg(),g=i.hcg()):u==="hsi"?(f=n.hsi(),g=i.hsi()):u==="lch"||u==="hcl"?(u="hcl",f=n.hcl(),g=i.hcl()):u==="oklch"&&(f=n.oklch().reverse(),g=i.oklch().reverse());var b,y,x,R,S,T;(u.substr(0,1)==="h"||u==="oklch")&&(p=f,b=p[0],x=p[1],S=p[2],d=g,y=d[0],R=d[1],T=d[2]);var M,B,_,G;return!isNaN(b)&&!isNaN(y)?(y>b&&y-b>180?G=y-(b+360):y180?G=y+360-b:G=y-b,B=b+l*G):isNaN(b)?isNaN(y)?B=Number.NaN:(B=y,(S==1||S==0)&&u!="hsv"&&(M=R)):(B=b,(T==1||T==0)&&u!="hsv"&&(M=x)),M===void 0&&(M=x+l*(R-x)),_=S+l*(T-S),u==="oklch"?new Ps([_,M,B],u):new Ps([B,M,_],u)},Dl=we,Rs=function(n,i,l){return Dl(n,i,l,"lch")};vt.lch=Rs,vt.hcl=Rs;var Bl=D,Nl=function(n,i,l){var u=n.num(),p=i.num();return new Bl(u+l*(p-u),"num")};vt.num=Nl;var jl=we,_l=function(n,i,l){return jl(n,i,l,"hcg")};vt.hcg=_l;var ql=we,Wl=function(n,i,l){return ql(n,i,l,"hsi")};vt.hsi=Wl;var Gl=we,Hl=function(n,i,l){return Gl(n,i,l,"hsl")};vt.hsl=Hl;var Xl=we,Yl=function(n,i,l){return Xl(n,i,l,"hsv")};vt.hsv=Yl;var Ul=D,Zl=function(n,i,l){var u=n.oklab(),p=i.oklab();return new Ul(u[0]+l*(p[0]-u[0]),u[1]+l*(p[1]-u[1]),u[2]+l*(p[2]-u[2]),"oklab")};vt.oklab=Zl;var Jl=we,Ql=function(n,i,l){return Jl(n,i,l,"oklch")};vt.oklch=Ql;var Fr=D,Vl=C.clip_rgb,Er=Math.pow,Dr=Math.sqrt,Br=Math.PI,$s=Math.cos,Ms=Math.sin,Kl=Math.atan2,th=function(n,i,l){i===void 0&&(i="lrgb"),l===void 0&&(l=null);var u=n.length;l||(l=Array.from(new Array(u)).map(function(){return 1}));var p=u/l.reduce(function(B,_){return B+_});if(l.forEach(function(B,_){l[_]*=p}),n=n.map(function(B){return new Fr(B)}),i==="lrgb")return eh(n,l);for(var d=n.shift(),f=d.get(i),g=[],b=0,y=0,x=0;x=360;)M-=360;f[T]=M}else f[T]=f[T]/g[T];return S/=u,new Fr(f,i).alpha(S>.99999?1:S,!0)},eh=function(n,i){for(var l=n.length,u=[0,0,0,0],p=0;p.9999999&&(u[3]=1),new Fr(Vl(u))},kt=nt,xe=C.type,rh=Math.pow,Nr=function(n){var i="rgb",l=kt("#ccc"),u=0,p=[0,1],d=[],f=[0,0],g=!1,b=[],y=!1,x=0,R=1,S=!1,T={},M=!0,B=1,_=function(k){if(k=k||["#fff","#000"],k&&xe(k)==="string"&&kt.brewer&&kt.brewer[k.toLowerCase()]&&(k=kt.brewer[k.toLowerCase()]),xe(k)==="array"){k.length===1&&(k=[k[0],k[0]]),k=k.slice(0);for(var A=0;A=g[j];)j++;return j-1}return 0},X=function(k){return k},lt=function(k){return k},ot=function(k,A){var j,N;if(A==null&&(A=!1),isNaN(k)||k===null)return l;if(A)N=k;else if(g&&g.length>2){var ht=G(k);N=ht/(g.length-2)}else R!==x?N=(k-x)/(R-x):N=1;N=lt(N),A||(N=X(N)),B!==1&&(N=rh(N,B)),N=f[0]+N*(1-f[0]-f[1]),N=Math.min(1,Math.max(0,N));var Q=Math.floor(N*1e4);if(M&&T[Q])j=T[Q];else{if(xe(b)==="array")for(var H=0;H=U&&H===d.length-1){j=b[H];break}if(N>U&&N2){var H=k.map(function(Z,J){return J/(k.length-1)}),U=k.map(function(Z){return(Z-x)/(R-x)});U.every(function(Z,J){return H[J]===Z})||(lt=function(Z){if(Z<=0||Z>=1)return Z;for(var J=0;Z>=U[J+1];)J++;var Pt=(Z-U[J])/(U[J+1]-U[J]),Xt=H[J]+Pt*(H[J+1]-H[J]);return Xt})}}return p=[x,R],W},W.mode=function(k){return arguments.length?(i=k,pt(),W):i},W.range=function(k,A){return _(k),W},W.out=function(k){return y=k,W},W.spread=function(k){return arguments.length?(u=k,W):u},W.correctLightness=function(k){return k==null&&(k=!0),S=k,pt(),S?X=function(A){for(var j=ot(0,!0).lab()[0],N=ot(1,!0).lab()[0],ht=j>N,Q=ot(A,!0).lab()[0],H=j+(N-j)*A,U=Q-H,Z=0,J=1,Pt=20;Math.abs(U)>.01&&Pt-- >0;)(function(){return ht&&(U*=-1),U<0?(Z=A,A+=(J-A)*.5):(J=A,A+=(Z-A)*.5),Q=ot(A,!0).lab()[0],U=Q-H})();return A}:X=function(A){return A},W},W.padding=function(k){return k!=null?(xe(k)==="number"&&(k=[k,k]),f=k,W):f},W.colors=function(k,A){arguments.length<2&&(A="hex");var j=[];if(arguments.length===0)j=b.slice(0);else if(k===1)j=[W(.5)];else if(k>1){var N=p[0],ht=p[1]-N;j=nh(0,k,!1).map(function(J){return W(N+J/(k-1)*ht)})}else{n=[];var Q=[];if(g&&g.length>2)for(var H=1,U=g.length,Z=1<=U;Z?HU;Z?H++:H--)Q.push((g[H-1]+g[H])*.5);else Q=p;j=Q.map(function(J){return W(J)})}return kt[A]&&(j=j.map(function(J){return J[A]()})),j},W.cache=function(k){return k!=null?(M=k,W):M},W.gamma=function(k){return k!=null?(B=k,W):B},W.nodata=function(k){return k!=null?(l=kt(k),W):l},W};function nh(n,i,l){for(var u=[],p=nd;p?f++:f--)u.push(f);return u}var Ae=D,sh=Nr,ih=function(n){for(var i=[1,1],l=1;l=5){var y,x,R;y=n.map(function(S){return S.lab()}),R=n.length-1,x=ih(R),p=function(S){var T=1-S,M=[0,1,2].map(function(B){return y.reduce(function(_,G,X){return _+x[X]*Math.pow(T,R-X)*Math.pow(S,X)*G[B]},0)});return new Ae(M,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return p},oh=function(n){var i=ah(n);return i.scale=function(){return sh(i)},i},jr=nt,Ct=function(n,i,l){if(!Ct[l])throw new Error("unknown blend mode "+l);return Ct[l](n,i)},Gt=function(n){return function(i,l){var u=jr(l).rgb(),p=jr(i).rgb();return jr.rgb(n(u,p))}},Ht=function(n){return function(i,l){var u=[];return u[0]=n(i[0],l[0]),u[1]=n(i[1],l[1]),u[2]=n(i[2],l[2]),u}},lh=function(n){return n},hh=function(n,i){return n*i/255},uh=function(n,i){return n>i?i:n},ch=function(n,i){return n>i?n:i},fh=function(n,i){return 255*(1-(1-n/255)*(1-i/255))},ph=function(n,i){return i<128?2*n*i/255:255*(1-2*(1-n/255)*(1-i/255))},dh=function(n,i){return 255*(1-(1-i/255)/(n/255))},gh=function(n,i){return n===255?255:(n=255*(i/255)/(1-n/255),n>255?255:n)};Ct.normal=Gt(Ht(lh)),Ct.multiply=Gt(Ht(hh)),Ct.screen=Gt(Ht(fh)),Ct.overlay=Gt(Ht(ph)),Ct.darken=Gt(Ht(uh)),Ct.lighten=Gt(Ht(ch)),Ct.dodge=Gt(Ht(gh)),Ct.burn=Gt(Ht(dh));for(var vh=Ct,_r=C.type,bh=C.clip_rgb,mh=C.TWOPI,yh=Math.pow,wh=Math.sin,xh=Math.cos,Ts=nt,Sh=function(n,i,l,u,p){n===void 0&&(n=300),i===void 0&&(i=-1.5),l===void 0&&(l=1),u===void 0&&(u=1),p===void 0&&(p=[0,1]);var d=0,f;_r(p)==="array"?f=p[1]-p[0]:(f=0,p=[p,p]);var g=function(b){var y=mh*((n+120)/360+i*b),x=yh(p[0]+f*b,u),R=d!==0?l[0]+b*d:l,S=R*x*(1-x)/2,T=xh(y),M=wh(y),B=x+S*(-.14861*T+1.78277*M),_=x+S*(-.29227*T-.90649*M),G=x+S*(1.97294*T);return Ts(bh([B*255,_*255,G*255,1]))};return g.start=function(b){return b==null?n:(n=b,g)},g.rotations=function(b){return b==null?i:(i=b,g)},g.gamma=function(b){return b==null?u:(u=b,g)},g.hue=function(b){return b==null?l:(l=b,_r(l)==="array"?(d=l[1]-l[0],d===0&&(l=l[1])):d=0,g)},g.lightness=function(b){return b==null?p:(_r(b)==="array"?(p=b,f=b[1]-b[0]):(p=[b,b],f=0),g)},g.scale=function(){return Ts.scale(g)},g.hue(l),g},kh=D,Ch="0123456789abcdef",Ph=Math.floor,Rh=Math.random,$h=function(){for(var n="#",i=0;i<6;i++)n+=Ch.charAt(Ph(Rh()*16));return new kh(n,"hex")},qr=w,Ls=Math.log,Mh=Math.pow,Th=Math.floor,Lh=Math.abs,zs=function(n,i){i===void 0&&(i=null);var l={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return qr(n)==="object"&&(n=Object.values(n)),n.forEach(function(u){i&&qr(u)==="object"&&(u=u[i]),u!=null&&!isNaN(u)&&(l.values.push(u),l.sum+=u,ul.max&&(l.max=u),l.count+=1)}),l.domain=[l.min,l.max],l.limits=function(u,p){return Is(l,u,p)},l},Is=function(n,i,l){i===void 0&&(i="equal"),l===void 0&&(l=7),qr(n)=="array"&&(n=zs(n));var u=n.min,p=n.max,d=n.values.sort(function(Gr,Hr){return Gr-Hr});if(l===1)return[u,p];var f=[];if(i.substr(0,1)==="c"&&(f.push(u),f.push(p)),i.substr(0,1)==="e"){f.push(u);for(var g=1;g 0");var b=Math.LOG10E*Ls(u),y=Math.LOG10E*Ls(p);f.push(u);for(var x=1;x200&&(lt=!1)}for(var Yt={},Se=0;Seu?(l+.05)/(u+.05):(u+.05)/(l+.05)},Fs=D,Ft=Math.sqrt,st=Math.pow,Ih=Math.min,Ah=Math.max,Es=Math.atan2,Ds=Math.abs,er=Math.cos,Bs=Math.sin,Oh=Math.exp,Ns=Math.PI,Fh=function(n,i,l,u,p){l===void 0&&(l=1),u===void 0&&(u=1),p===void 0&&(p=1);var d=function(ae){return 360*ae/(2*Ns)},f=function(ae){return 2*Ns*ae/360};n=new Fs(n),i=new Fs(i);var g=Array.from(n.lab()),b=g[0],y=g[1],x=g[2],R=Array.from(i.lab()),S=R[0],T=R[1],M=R[2],B=(b+S)/2,_=Ft(st(y,2)+st(x,2)),G=Ft(st(T,2)+st(M,2)),X=(_+G)/2,lt=.5*(1-Ft(st(X,7)/(st(X,7)+st(25,7)))),ot=y*(1+lt),pt=T*(1+lt),W=Ft(st(ot,2)+st(x,2)),k=Ft(st(pt,2)+st(M,2)),A=(W+k)/2,j=d(Es(x,ot)),N=d(Es(M,pt)),ht=j>=0?j:j+360,Q=N>=0?N:N+360,H=Ds(ht-Q)>180?(ht+Q+360)/2:(ht+Q)/2,U=1-.17*er(f(H-30))+.24*er(f(2*H))+.32*er(f(3*H+6))-.2*er(f(4*H-63)),Z=Q-ht;Z=Ds(Z)<=180?Z:Q<=ht?Z+360:Z-360,Z=2*Ft(W*k)*Bs(f(Z)/2);var J=S-b,Pt=k-W,Xt=1+.015*st(B-50,2)/Ft(20+st(B-50,2)),Yt=1+.045*A,Se=1+.015*A*U,ke=30*Oh(-st((H-275)/25,2)),Et=2*Ft(st(A,7)/(st(A,7)+st(25,7))),ie=-Et*Bs(2*f(ke)),Oe=Ft(st(J/(l*Xt),2)+st(Pt/(u*Yt),2)+st(Z/(p*Se),2)+ie*(Pt/(u*Yt))*(Z/(p*Se)));return Ah(0,Ih(100,Oe))},js=D,Eh=function(n,i,l){l===void 0&&(l="lab"),n=new js(n),i=new js(i);var u=n.get(l),p=i.get(l),d=0;for(var f in u){var g=(u[f]||0)-(p[f]||0);d+=g*g}return Math.sqrt(d)},Dh=D,Bh=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];try{return new(Function.prototype.bind.apply(Dh,[null].concat(n))),!0}catch{return!1}},_s=nt,qs=Nr,Nh={cool:function(){return qs([_s.hsl(180,1,.9),_s.hsl(250,.7,.4)])},hot:function(){return qs(["#000","#f00","#ff0","#fff"]).mode("rgb")}},rr={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},Wr=0,Ws=Object.keys(rr);WruseThread() can only be called from within generator functions. + It's not available during rendering.

+`);return s}function Zh(s){tn.push(s)}function Jh(s){if(tn.pop()!==s)throw new Error("startThread/endThread was called out of order.")}function Fe(s){return s[0].toUpperCase()+s.slice(1)}function ai(s){return{message:s.message,stack:s.stack,remarks:s.remarks}}const Qh=180/Math.PI,Zt=Math.PI/180;function Hs(s,t,e){let r=0,a=s;t!==void 0&&(r=s,a=t),e=e===void 0?r{this.resolveCurrent=t})}release(){var t;this.current=null,(t=this.resolveCurrent)==null||t.call(this),this.resolveCurrent=null}}const en=[];function oi(){const s=en.at(-1);if(!s)throw new Error("The playback is not available in the current context.");return s}function Kh(s){en.push(s)}function tu(s){if(en.pop()!==s)throw new Error("startPlayback/endPlayback were called out of order.")}function ce(s,...t){const e={[s.name]:s},r=Object.getOwnPropertyDescriptor(e,s.name);if(r)for(let a=t.length-1;a>=0;a--)t[a](e,s.name,r)}const Xs=Symbol.for("@motion-canvas/core/decorators/UNINITIALIZED");function rn(s){return(t,e)=>{let r=Xs;Object.defineProperty(t,e,{get(){return r===Xs&&(r=s.call(this)),r}})}}function wt(s){return function(t,e,r){r.value.prototype.name=s??e,r.value.prototype.threadable=!0}}ce(li,wt());function*li(s,...t){let e=!0;typeof s=="boolean"?e=s:t.push(s);const r=or(),a=t.map(c=>r.children.find(m=>m.runner===c)).filter(c=>c),o=r.time();let h;if(e){for(;a.find(c=>!c.canceled);)yield;h=Math.max(...a.map(c=>c.time()))}else{for(;!a.find(m=>m.canceled);)yield;const c=a.filter(m=>m.canceled);h=Math.min(...c.map(m=>m.time()))}r.time(Math.max(o,h))}function ir(s,t){const e=Object.getPrototypeOf(s);e.threadable||(e.threadable=!0,e.name=typeof t=="string"?t:eu(t))}function eu(s){return Object.getPrototypeOf(s).name??null}class Ys{get fixed(){return this.fixedTime}get canceled(){var t;return this.isCanceled||(((t=this.parent)==null?void 0:t.canceled)??!1)}get paused(){var t;return this.isPaused||(((t=this.parent)==null?void 0:t.paused)??!1)}constructor(t){this.runner=t,this.children=[],this.time=Te(0),this.parent=null,this.isCanceled=!1,this.isPaused=!1,this.fixedTime=0}next(){if(this.paused)return{value:null,done:!1};Zh(this);const t=this.runner.next(this.value);return Jh(this),this.value=null,t}update(t){this.paused||(this.time(this.time()+t),this.fixedTime+=t),this.children=this.children.filter(e=>!e.canceled)}add(t){t.cancel(),t.parent=this,t.isCanceled=!1,t.time(this.time()),t.fixedTime=this.fixedTime,this.children.push(t),ir(t.runner,`unknown ${this.children.length}`)}cancel(){this.isCanceled=!0,this.parent=null}pause(t){this.isPaused=t}}function ru(s){return s&&(typeof s=="object"||typeof s=="function")&&"toPromise"in s}function nu(s){return s!==null&&typeof s=="object"&&Symbol.iterator in s&&"next"in s}function su(s){return typeof(s==null?void 0:s.then)=="function"}ce(hi,wt());function*hi(s,t){const e=oi(),r=s();ir(r,"root");const a=new Ys(r);t==null||t(a);let o=[a];for(;o.length>0;){const h=[],c=[...o],m=e.framesToSeconds(1)*e.speed;for(;c.length>0;){const w=c.pop();if(!w||w.canceled)continue;const P=w.next();if(P.done){w.cancel();continue}if(nu(P.value)){const O=new Ys(P.value);w.value=P.value,w.add(O),c.push(w),c.push(O)}else P.value?(w.value=yield P.value,c.push(w)):(w.update(m),h.unshift(w))}o=h.filter(w=>!w.canceled),o.length>0&&(yield)}}class iu{constructor(t){this.scene=t,this.signals={},this.variables={},this.handleReset=()=>{this.signals={}},t.onReset.subscribe(this.handleReset)}get(t,e){var r;return(r=this.signals)[t]??(r[t]=Te(this.variables[t]??e)),()=>this.signals[t]()}updateSignals(t){this.variables=t,Object.keys(t).map(e=>{e in this.signals&&this.signals[e](t[e])})}}var zt;(function(s){s[s.BeforeRender=0]="BeforeRender",s[s.BeginRender=1]="BeginRender",s[s.FinishRender=2]="FinishRender",s[s.AfterRender=3]="AfterRender"})(zt||(zt={}));class au{get onBeforeRender(){return this.beforeRender.subscribable}get onBeginRender(){return this.beginRender.subscribable}get onFinishRender(){return this.finishRender.subscribable}get onAfterRender(){return this.afterRender.subscribable}constructor(t){this.scene=t,this.beforeRender=new Lt,this.beginRender=new Lt,this.finishRender=new Lt,this.afterRender=new Lt,this.scene.onRenderLifecycle.subscribe(([e,r])=>{switch(e){case zt.BeforeRender:return this.beforeRender.dispatch(r);case zt.BeginRender:return this.beginRender.dispatch(r);case zt.FinishRender:return this.finishRender.dispatch(r);case zt.AfterRender:return this.afterRender.dispatch(r)}}),this.scene.onReset.subscribe(()=>{this.beforeRender.clear(),this.beginRender.clear(),this.finishRender.clear(),this.afterRender.clear()})}}var ut;(function(s){s[s.Initial=0]="Initial",s[s.AfterTransitionIn=1]="AfterTransitionIn",s[s.CanTransitionOut=2]="CanTransitionOut",s[s.Finished=3]="Finished"})(ut||(ut={}));class Ne{constructor(t){this.state=t,this.nextGauss=null}static createSeed(){return Math.floor(Math.random()*4294967296)}nextFloat(t=0,e=1){return V(t,e,this.next())}nextInt(t=0,e=4294967296){let r=Math.floor(V(t,e,this.next()));return r===e&&(r=t),r}gauss(t=0,e=1){let r=this.nextGauss;if(this.nextGauss=null,r===null){const a=this.next()*2*Math.PI,o=Math.sqrt(-2*Math.log(1-this.next()));r=Math.cos(a)*o,this.nextGauss=Math.sin(a)*o}return t+r*e}floatArray(t,e=0,r=1){return Hs(t).map(()=>this.nextFloat(e,r))}intArray(t,e=0,r=4294967296){return Hs(t).map(()=>this.nextInt(e,r))}spawn(){return new Ne(this.nextInt())}next(){this.state|=0,this.state=this.state+1831565813|0;let t=Math.imul(this.state^this.state>>>15,1|this.state);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}var je;(function(s){s[s.Playing=0]="Playing",s[s.Rendering=1]="Rendering",s[s.Paused=2]="Paused",s[s.Presenting=3]="Presenting"})(je||(je={}));class ou{get onChanged(){return this.slides.subscribable}constructor(t){this.scene=t,this.slides=new te([]),this.lookup=new Map,this.collisionLookup=new Set,this.current=null,this.canResume=!1,this.waitsForId=null,this.targetId=null,this.handleReload=()=>{this.lookup.clear(),this.collisionLookup.clear(),this.current=null,this.waitsForId=null,this.targetId=null},this.handleReset=()=>{this.collisionLookup.clear(),this.current=null,this.waitsForId=null},this.handleRecalculated=()=>{this.slides.current=[...this.lookup.values()]},this.scene.onReloaded.subscribe(this.handleReload),this.scene.onReset.subscribe(this.handleReset),this.scene.onRecalculated.subscribe(this.handleRecalculated)}setTarget(t){this.targetId=t}resume(){this.canResume=!0}isWaitingFor(t){return this.waitsForId===t}isWaiting(){return this.waitsForId!==null}didHappen(t){var e;if(this.current===null)return!1;for(const r of this.lookup.keys()){if(r===t)return!0;if(r===((e=this.current)==null?void 0:e.id))return!1}return!1}getCurrent(){return this.current}register(t,e){if(this.waitsForId!==null)throw new Error(`The animation already waits for a slide: ${this.waitsForId}.`);const r=this.toId(t);this.scene.playback.state!==je.Presenting&&(this.lookup.has(r)||this.lookup.set(r,{id:r,name:t,time:e,scene:this.scene,stack:new Error().stack}),this.collisionLookup.has(t)?this.scene.logger.warn({message:`A slide named "${t}" already exists.`,stack:new Error().stack}):this.collisionLookup.add(t)),this.waitsForId=r,this.current=this.lookup.get(r)??null,this.canResume=!1}shouldWait(t){const e=this.toId(t);if(this.waitsForId!==e)throw new Error(`The animation waits for a different slide: ${this.waitsForId}.`);if(!this.lookup.get(e))throw new Error(`Could not find the "${t}" slide.`);let a=this.canResume;return this.scene.playback.state!==je.Presenting&&(a=e!==this.targetId),a&&(this.waitsForId=null),!a}toId(t){return`${this.scene.name}:${t}`}}class lu{get firstFrame(){return this.cache.current.firstFrame}get lastFrame(){return this.firstFrame+this.cache.current.duration}get onCacheChanged(){return this.cache.subscribable}get onReloaded(){return this.reloaded.subscribable}get onRecalculated(){return this.recalculated.subscribable}get onThreadChanged(){return this.thread.subscribable}get onRenderLifecycle(){return this.renderLifecycle.subscribable}get onReset(){return this.afterReset.subscribable}get LifecycleEvents(){return this.logger.warn("LifecycleEvents is deprecated. Use lifecycleEvents instead."),this.lifecycleEvents}get previous(){return this.previousScene}constructor(t){this.cache=new te({firstFrame:0,transitionDuration:0,duration:0,lastFrame:0}),this.reloaded=new Lt,this.recalculated=new Lt,this.thread=new te(null),this.renderLifecycle=new Lt,this.afterReset=new Lt,this.lifecycleEvents=new au(this),this.previousScene=null,this.runner=null,this.state=ut.Initial,this.cached=!1,this.counters={},this.name=t.name,this.size=t.size,this.resolutionScale=t.resolutionScale,this.logger=t.logger,this.playback=t.playback,this.meta=t.meta,this.runnerFactory=t.config,this.creationStack=t.stack,ce(this.runnerFactory,wt(this.name)),this.timeEvents=new t.timeEventsClass(this),this.variables=new iu(this),this.slides=new ou(this),this.random=new Ne(this.meta.seed.get())}update(){}async render(t){let e=0;do{e++,await it.consumePromises(),t.save();const r=Y.fromSizeCentered(this.getSize());t.clearRect(r.x,r.y,r.width,r.height),this.execute(()=>this.draw(t)),t.restore()}while(it.hasPromises()&&e<10);e>1&&this.logger.debug(`render iterations: ${e}`)}reload({config:t,size:e,stack:r,resolutionScale:a}={}){t&&(this.runnerFactory=t),e&&(this.size=e),a&&(this.resolutionScale=a),r&&(this.creationStack=r),this.cached=!1,this.reloaded.dispatch()}async recalculate(t){const e=this.cache.current;if(e.firstFrame=this.playback.frame,e.lastFrame=e.firstFrame+e.duration,this.isCached()){t(e.lastFrame),this.cache.current={...e};return}for(e.transitionDuration=-1,await this.reset();!this.canTransitionOut();)e.transitionDuration<0&&this.state===ut.AfterTransitionIn&&(e.transitionDuration=this.playback.frame-e.firstFrame),t(this.playback.frame+1),await this.next();e.transitionDuration===-1&&(e.transitionDuration=0),e.lastFrame=this.playback.frame,e.duration=e.lastFrame-e.firstFrame,await new Promise(r=>setTimeout(r,0)),this.cached=!0,this.cache.current={...e},this.recalculated.dispatch()}async next(){var e;if(!this.runner)return;let t=this.execute(()=>this.runner.next());for(this.update();t.value;){if(ru(t.value)){const r=await t.value.toPromise();t=this.execute(()=>this.runner.next(r))}else if(su(t.value)){const r=await t.value;t=this.execute(()=>this.runner.next(r))}else this.logger.warn({message:"Invalid value yielded by the scene.",object:t.value}),t=this.execute(()=>this.runner.next(t.value));this.update()}if(it.hasPromises()){const r=await it.consumePromises();this.logger.error({message:"Tried to access an asynchronous property before the node was ready. Make sure to yield the node before accessing the property.",stack:r[0].stack,inspect:((e=r[0].owner)==null?void 0:e.key)??void 0})}t.done&&(this.state=ut.Finished)}async reset(t=null){this.counters={},this.previousScene=t,this.random=new Ne(this.meta.seed.get()),this.runner=hi(()=>this.runnerFactory(this.getView()),e=>{this.thread.current=e}),this.state=ut.AfterTransitionIn,this.afterReset.dispatch(),await this.next()}getSize(){return this.size}isAfterTransitionIn(){return this.state===ut.AfterTransitionIn}canTransitionOut(){return this.state===ut.CanTransitionOut||this.state===ut.Finished}isFinished(){return this.state===ut.Finished}enterInitial(){this.state===ut.AfterTransitionIn?this.state=ut.Initial:this.logger.warn(`Scene ${this.name} entered initial in an unexpected state: ${this.state}`)}enterAfterTransitionIn(){this.state===ut.Initial?this.state=ut.AfterTransitionIn:this.logger.warn(`Scene ${this.name} transitioned in an unexpected state: ${this.state}`)}enterCanTransitionOut(){this.state===ut.AfterTransitionIn||this.state===ut.Initial?this.state=ut.CanTransitionOut:this.logger.warn(`Scene ${this.name} was marked as finished in an unexpected state: ${this.state}`)}isCached(){return this.cached}execute(t){let e;Yh(this),Kh(this.playback);try{e=t()}finally{tu(this.playback),Uh(this)}return e}}function hu(){return new _t("scene",{version:new bt("version",1),timeEvents:new bt("time events",[]),seed:new bt("seed",Ne.createSeed())})}function uu(){let s;return e=>{if(e!==void 0)s=e;else return s}}function cu(s){const t=ii(),e=or();return t.timeEvents.register(s,e.time())}function fu(s,t,e){if(t.length>=s.length){const r=Math.floor(t.length*e),a=Math.floor(V(s.length-1,t.length,e));let o="";for(let h=0;h=0;h--)h ${t} may result in unexpected behavior.`);return}if(typeof s=="number"&&typeof t=="number")return V(s,t,e);if(typeof s=="string"&&typeof t=="string")return fu(s,t,e);if(typeof s=="boolean"&&typeof t=="boolean")return e<.5?s:t;if("lerp"in s)return s.lerp(t,e);if(s&&t&&typeof s=="object"&&typeof t=="object")if(Array.isArray(s)&&Array.isArray(t)){if(s.length===t.length)return s.map((a,o)=>he(a,t[o],e))}else{let a=!1;if(!(s instanceof Map)&&!(t instanceof Map)&&(a=!0,s=new Map(Object.entries(s)),t=new Map(Object.entries(t))),s instanceof Map&&t instanceof Map){const o=new Map;for(const h of new Set([...s.keys(),...t.keys()])){const c=he(s.get(h),t.get(h),e,!0);c!==void 0&&o.set(h,c)}return a?Object.fromEntries(o):o}}return t}function V(s,t,e){return s+(t-s)*e}function pu(s,t,e,r,a){return e+(a-s)*(r-e)/(t-s)}function dt(s,t,e){return et?t:e}function ui(s,t,e){let r=t;e>1?e=1/e:r=!r;const a=r?Math.acos(dt(-1,1,1-s)):Math.asin(s),o=V(a,V(0,Math.PI/2,s),e);let h=Math.sin(o),c=1-Math.cos(o);return t&&([h,c]=[c,h]),new v(h,c)}function nn(s,t=0,e=1){return s=s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,V(t,e,s)}function du(s,t=0,e=1){return s=s===1?1:1-Math.pow(2,-10*s),V(t,e,s)}function gu(s,t=0,e=1){return V(t,e,s)}ce(Re,wt());function*Re(s,t,e){const r=or(),a=r.time(),o=r.time()+s;for(t(0,0);o>r.fixed;){const h=r.fixed-a,c=h/s;h>0&&t(c,h),yield}r.time(o),t(1,s),e==null||e(1,s)}ce(Ee,wt());function*Ee(...s){for(const t of s)yield t;yield*li(...s)}ce(vu,wt());function*vu(s,t){yield*sn(cu(s)),t&&(yield*t)}ce(sn,wt());function*sn(s=0,t){const e=or(),r=oi().framesToSeconds(1),a=e.time()+s;for(;a-r>e.fixed;)yield;e.time(a),t&&(yield*t)}function Us(s,t){let e;return typeof s=="string"?(e=t(),ir(e,s)):(e=s(),ir(e,e)),e}class it{static collectPromise(t,e=null){const r={promise:t,value:e,stack:new Error().stack},a=this.collectionStack.at(-1);return a&&(r.owner=a.owner),t.then(o=>{r.value=o,a==null||a.markDirty()}),this.promises.push(r),r}static hasPromises(){return this.promises.length>0}static async consumePromises(){const t=[...this.promises];return await Promise.all(t.map(e=>e.promise)),this.promises=this.promises.filter(e=>!t.includes(e)),t}constructor(t){this.owner=t,this.dependencies=new Set,this.event=new qh,this.markDirty=()=>this.event.raise(),this.invokable=this.invoke.bind(this),Object.defineProperty(this.invokable,"context",{value:this}),Object.defineProperty(this.invokable,"toPromise",{value:this.toPromise.bind(this)})}invoke(){}startCollecting(){if(it.collectionSet.has(this))throw new Kr("A circular dependency occurred between signals.",`This can happen when signals reference each other in a loop. + Try using the attached stack trace to locate said loop.`);it.collectionSet.add(this),it.collectionStack.push(this)}finishCollecting(){if(it.collectionSet.delete(this),it.collectionStack.pop()!==this)throw new Error("collectStart/collectEnd was called out of order.")}clearDependencies(){this.dependencies.forEach(t=>t.unsubscribe(this.markDirty)),this.dependencies.clear()}collect(){const t=it.collectionStack.at(-1);t&&(t.dependencies.add(this.event.subscribable),this.event.subscribe(t.markDirty))}dispose(){this.clearDependencies(),this.event.clear(),this.owner=null}async toPromise(){do await it.consumePromises(),this.invokable();while(it.hasPromises());return this.invokable}}it.collectionSet=new Set;it.collectionStack=[];it.promises=[];function Qt(s){return typeof s=="function"}function $e(s,t){return Qt(s)?()=>t(s()):t(s)}function _e(s){return Qt(s)?s():s}const Zs=Symbol.for("@motion-canvas/core/signals/default");class ue extends it{constructor(t,e,r=void 0,a=h=>h,o={}){super(r),this.initial=t,this.interpolation=e,this.parser=a,Object.defineProperty(this.invokable,"reset",{value:this.reset.bind(this)}),Object.defineProperty(this.invokable,"save",{value:this.save.bind(this)}),Object.defineProperty(this.invokable,"isInitial",{value:this.isInitial.bind(this)}),this.initial!==void 0&&(this.current=this.initial,this.markDirty(),Qt(this.initial)||(this.last=this.parse(this.initial))),this.extensions={getter:this.getter.bind(this),setter:this.setter.bind(this),tweener:this.tweener.bind(this),...o}}toSignal(){return this.invokable}parse(t){return this.parser(t)}set(t){return this.extensions.setter(t),this.owner}setter(t){return t===Zs&&(t=this.initial),this.current===t?this.owner:(this.current=t,this.markDirty(),this.clearDependencies(),Qt(t)||(this.last=this.parse(t)),this.owner)}get(){return this.extensions.getter()}getter(){var t;if(this.event.isRaised()&&Qt(this.current)){this.clearDependencies(),this.startCollecting();try{this.last=this.parse(this.current())}catch(e){yt().error({...ai(e),inspect:(t=this.owner)==null?void 0:t.key})}this.finishCollecting()}return this.event.reset(),this.collect(),this.last}invoke(t,e,r=nn,a=this.interpolation){return t===void 0?this.get():e===void 0?this.set(t):this.createQueue(r,a).to(t,e)}createQueue(t,e){const r=this.get(),a=[],o=Us("animation chain",function*(){for(;a.length>0;)yield*a.shift()});return o.to=(h,c,m=t,w=e)=>(t=m,e=w,a.push(this.tween(h,c,m,w)),o),o.back=(h,c=t,m=e)=>(t=c,e=m,a.push(this.tween(r,h,t,e)),o),o.wait=h=>(a.push(sn(h)),o),o.run=h=>(a.push(h),o),o.do=h=>(a.push(Us(function*(){h()})),o),o}*tween(t,e,r,a){t===Zs&&(t=this.initial),yield*this.extensions.tweener(t,e,r,a),this.set(t)}*tweener(t,e,r,a){const o=this.get();yield*Re(e,h=>{this.set(a(o,this.parse(_e(t)),r(h)))})}dispose(){super.dispose(),this.initial=void 0,this.current=void 0,this.last=void 0}reset(){return this.initial!==void 0&&this.set(this.initial),this.owner}save(){return this.set(this.get())}isInitial(){return this.collect(),this.current===this.initial}raw(){return this.current}}class lr extends ue{constructor(t,e,r,a,o=void 0,h={}){var c;super(void 0,a,o,e,h),this.entries=t,this.signals=[],this.parser=e;for(const m of t){let w,P;Array.isArray(m)?([w,P]=m,(c=P.context).owner??(c.owner=this)):(w=m,P=new ue($e(r,O=>e(O)[m]),V,o??this.invokable).toSignal()),this.signals.push([w,P]),Object.defineProperty(this.invokable,w,{value:P})}}toSignal(){return this.invokable}parse(t){return this.parser(t)}getter(){return this.parse(Object.fromEntries(this.signals.map(([t,e])=>[t,e()])))}setter(t){if(Qt(t))for(const[e,r]of this.signals)r(()=>this.parser(t())[e]);else{const e=this.parse(t);for(const[r,a]of this.signals)a(e[r])}return this.owner}reset(){for(const[,t]of this.signals)t.reset();return this.owner}save(){for(const[,t]of this.signals)t.save();return this.owner}}class bu extends it{constructor(t,e){super(e),this.factory=t,this.markDirty()}toSignal(){return this.invokable}dispose(){super.dispose(),this.last=void 0}invoke(...t){var e;if(this.event.isRaised()){this.clearDependencies(),this.startCollecting();try{this.last=this.factory(...t)}catch(r){yt().error({...ai(r),inspect:(e=this.owner)==null?void 0:e.key})}this.finishCollecting()}return this.event.reset(),this.collect(),this.last}}function mu(s,t){return new bu(s,t).toSignal()}function Te(s,t=he,e){return new ue(s,t,e).toSignal()}const ee=(()=>(et.Color.symbol=et.Color.prototype.symbol=Symbol.for("@motion-canvas/core/types/Color"),et.Color.lerp=et.Color.prototype.lerp=(s,t,e,r="lch")=>{typeof s=="string"&&(s=new et.Color(s)),typeof t=="string"&&(t=new et.Color(t));const a=s instanceof et.Color,o=t instanceof et.Color;return a||(s=o?t.alpha(0):new et.Color("rgba(0, 0, 0, 0)")),o||(t=a?s.alpha(0):new et.Color("rgba(0, 0, 0, 0)")),et.mix(s,t,e,r)},et.Color.createLerp=et.Color.prototype.createLerp=s=>(t,e,r)=>et.Color.lerp(t,e,r,s),et.Color.createSignal=(s,t=et.Color.lerp)=>new ue(s,t,void 0,e=>new et.Color(e)).toSignal(),et.Color.prototype.toSymbol=()=>et.Color.symbol,et.Color.prototype.serialize=function(){return this.css()},et.Color.prototype.lerp=function(s,t,e){return et.Color.lerp(this,s,t,e)},et.Color))();var Js;(function(s){s[s.Vertical=1]="Vertical",s[s.Horizontal=2]="Horizontal"})(Js||(Js={}));var It;(function(s){s[s.Top=4]="Top",s[s.Bottom=8]="Bottom",s[s.Left=16]="Left",s[s.Right=32]="Right"})(It||(It={}));var gt;(function(s){s[s.Middle=3]="Middle",s[s.Top=5]="Top",s[s.Bottom=9]="Bottom",s[s.Left=18]="Left",s[s.Right=34]="Right",s[s.TopLeft=20]="TopLeft",s[s.TopRight=36]="TopRight",s[s.BottomLeft=24]="BottomLeft",s[s.BottomRight=40]="BottomRight"})(gt||(gt={}));function yu(s){if(s===gt.Middle)return v.zero;let t=0;s&It.Left?t=-1:s&It.Right&&(t=1);let e=0;return s&It.Top?e=-1:s&It.Bottom&&(e=1),new v(t,e)}const De=1e-6;class tt{static fromRotation(t){return tt.identity.rotate(t)}static fromTranslation(t){return tt.identity.translate(new v(t))}static fromScaling(t){return tt.identity.scale(new v(t))}get x(){return new v(this.values[0],this.values[1])}get y(){return new v(this.values[2],this.values[3])}get scaleX(){return this.values[0]}set scaleX(t){this.values[0]=this.x.normalized.scale(t).x}get skewX(){return this.values[1]}set skewX(t){this.values[1]=t}get scaleY(){return this.values[3]}set scaleY(t){this.values[3]=this.y.normalized.scale(t).y}get skewY(){return this.values[2]}set skewY(t){this.values[2]=t}get translateX(){return this.values[4]}set translateX(t){this.values[4]=t}get translateY(){return this.values[5]}set translateY(t){this.values[5]=t}get rotation(){return v.degrees(this.values[0],this.values[1])}set rotation(t){const e=this.rotate(t-this.rotation);this.values[0]=e.values[0],this.values[1]=e.values[1],this.values[2]=e.values[2],this.values[3]=e.values[3]}get translation(){return new v(this.values[4],this.values[5])}set translation(t){const e=new v(t);this.values[4]=e.x,this.values[5]=e.y}get scaling(){return new v(this.values[0],this.values[3])}set scaling(t){const e=new v(t),r=new v(this.values[0],this.values[1]).normalized,a=new v(this.values[2],this.values[3]).normalized;this.values[0]=r.x*e.x,this.values[1]=r.y*e.y,this.values[2]=a.x*e.x,this.values[3]=a.y*e.y}get inverse(){const t=this.values[0],e=this.values[1],r=this.values[2],a=this.values[3],o=this.values[4],h=this.values[5];let c=t*a-e*r;return c?(c=1/c,new tt(a*c,-e*c,-r*c,t*c,(r*h-a*o)*c,(e*o-t*h)*c)):null}get determinant(){return this.values[0]*this.values[3]-this.values[1]*this.values[2]}get domMatrix(){return new DOMMatrix([this.values[0],this.values[1],this.values[2],this.values[3],this.values[4],this.values[5]])}constructor(t,e,r,a,o,h){if(this.values=new Float32Array(6),arguments.length===0){this.values=new Float32Array([1,0,0,1,0,0]);return}if(arguments.length===6){this.values[0]=t,this.values[1]=e,this.values[2]=r,this.values[3]=a,this.values[4]=o,this.values[5]=h;return}if(t instanceof DOMMatrix){this.values[0]=t.m11,this.values[1]=t.m12,this.values[2]=t.m21,this.values[3]=t.m22,this.values[4]=t.m41,this.values[5]=t.m42;return}if(t instanceof tt){this.values=t.values;return}if(Array.isArray(t)){if(t.length===2){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=e[0],this.values[3]=e[1],this.values[4]=r[0],this.values[5]=r[1];return}if(t.length===3){const P=new v(t[0]),O=new v(t[1]),K=new v(t[2]);this.values[0]=P.x,this.values[1]=P.y,this.values[2]=O.x,this.values[3]=O.y,this.values[4]=K.x,this.values[5]=K.y;return}this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2],this.values[3]=t[3],this.values[4]=t[4],this.values[5]=t[5];return}const c=new v(t),m=new v(e),w=new v(r);this.values[0]=c.x,this.values[1]=c.y,this.values[2]=m.x,this.values[3]=m.y,this.values[4]=w.x,this.values[5]=w.y}column(t){return new v(this.values[t*2],this.values[t*2+1])}row(t){return[this.values[t],this.values[t+2],this.values[t+4]]}mul(t){const e=this.values[0],r=this.values[1],a=this.values[2],o=this.values[3],h=this.values[4],c=this.values[5],m=t.values[0],w=t.values[1],P=t.values[2],O=t.values[3],K=t.values[4],ct=t.values[5];return new tt(e*m+a*w,r*m+o*w,e*P+a*O,r*P+o*O,e*K+a*ct+h,r*K+o*ct+c)}rotate(t,e=!0){e&&(t*=Zt);const r=this.values[0],a=this.values[1],o=this.values[2],h=this.values[3],c=this.values[4],m=this.values[5],w=Math.sin(t),P=Math.cos(t);return new tt(r*P+o*w,a*P+h*w,r*-w+o*P,a*-w+h*P,c,m)}scale(t){const e=new v(t);return new tt(this.values[0]*e.x,this.values[1]*e.x,this.values[2]*e.y,this.values[3]*e.y,this.values[4],this.values[5])}mulScalar(t){return new tt(this.values[0]*t,this.values[1]*t,this.values[2]*t,this.values[3]*t,this.values[4]*t,this.values[5]*t)}translate(t){const e=new v(t);return new tt(this.values[0],this.values[1],this.values[2],this.values[3],this.values[0]*e.x+this.values[2]*e.y+this.values[4],this.values[1]*e.x+this.values[3]*e.y+this.values[5])}add(t){return new tt(this.values[0]+t.values[0],this.values[1]+t.values[1],this.values[2]+t.values[2],this.values[3]+t.values[3],this.values[4]+t.values[4],this.values[5]+t.values[5])}sub(t){return new tt(this.values[0]-t.values[0],this.values[1]-t.values[1],this.values[2]-t.values[2],this.values[3]-t.values[3],this.values[4]-t.values[4],this.values[5]-t.values[5])}toSymbol(){return tt.symbol}equals(t,e=De){return Math.abs(this.values[0]-t.values[0])<=e+Number.EPSILON&&Math.abs(this.values[1]-t.values[1])<=e+Number.EPSILON&&Math.abs(this.values[2]-t.values[2])<=e+Number.EPSILON&&Math.abs(this.values[3]-t.values[3])<=e+Number.EPSILON&&Math.abs(this.values[4]-t.values[4])<=e+Number.EPSILON&&Math.abs(this.values[5]-t.values[5])<=e+Number.EPSILON}exactlyEquals(t){return this.values[0]===t.values[0]&&this.values[1]===t.values[1]&&this.values[2]===t.values[2]&&this.values[3]===t.values[3]&&this.values[4]===t.values[4]&&this.values[5]===t.values[5]}}tt.symbol=Symbol.for("@motion-canvas/core/types/Matrix2D");tt.identity=new tt(1,0,0,1,0,0);tt.zero=new tt(0,0,0,0,0,0);class v{static createSignal(t,e=v.lerp,r){return new lr(["x","y"],a=>new v(a),t,e,r).toSignal()}static lerp(t,e,r){let a,o;return typeof r=="number"?a=o=r:(a=r.x,o=r.y),new v(V(t.x,e.x,a),V(t.y,e.y,o))}static arcLerp(t,e,r,a=!1,o){return o??(o=t.sub(e).ctg),v.lerp(t,e,ui(r,a,o))}static createArcLerp(t,e){return(r,a,o)=>v.arcLerp(r,a,o,t,e)}static polarLerp(t,e,r,a=!1,o=v.zero){t=t.sub(o),e=e.sub(o);const h=t.degrees;let c=e.degrees;h>c!==a&&(c=c+(a?-360:360));const w=V(h,c,r)*Zt,P=V(t.magnitude,e.magnitude,r);return new v(P*Math.cos(w)+o.x,P*Math.sin(w)+o.y)}static createPolarLerp(t=!1,e=v.zero){return(r,a,o)=>v.polarLerp(r,a,o,t,new v(e))}static fromOrigin(t){const e=new v;return t===gt.Middle||(t&It.Left?e.x=-1:t&It.Right&&(e.x=1),t&It.Top?e.y=-1:t&It.Bottom&&(e.y=1)),e}static fromScalar(t){return new v(t,t)}static fromRadians(t){return new v(Math.cos(t),Math.sin(t))}static fromDegrees(t){return v.fromRadians(t*Zt)}static radians(t,e){return Math.atan2(e,t)}static degrees(t,e){return v.radians(t,e)*Qh}static magnitude(t,e){return Math.sqrt(t*t+e*e)}static squaredMagnitude(t,e){return t*t+e*e}static angleBetween(t,e){return Math.acos(dt(-1,1,t.dot(e)/(t.magnitude*e.magnitude)))*(t.cross(e)>=0?1:-1)}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}get magnitude(){return v.magnitude(this.x,this.y)}get squaredMagnitude(){return v.squaredMagnitude(this.x,this.y)}get normalized(){return this.scale(1/v.magnitude(this.x,this.y))}get safe(){return new v(isNaN(this.x)?0:this.x,isNaN(this.y)?0:this.y)}get flipped(){return new v(-this.x,-this.y)}get floored(){return new v(Math.floor(this.x),Math.floor(this.y))}get perpendicular(){return new v(this.y,-this.x)}get radians(){return v.radians(this.x,this.y)}get degrees(){return v.degrees(this.x,this.y)}get ctg(){return this.x/this.y}constructor(t,e){if(this.x=0,this.y=0,t!=null){if(typeof t!="object"){this.x=t,this.y=e??t;return}if(Array.isArray(t)){this.x=t[0],this.y=t[1];return}if("width"in t){this.x=t.width,this.y=t.height;return}this.x=t.x,this.y=t.y}}lerp(t,e){return v.lerp(this,t,e)}getOriginOffset(t){const e=v.fromOrigin(t);return e.x*=this.x/2,e.y*=this.y/2,e}scale(t){return new v(this.x*t,this.y*t)}transformAsPoint(t){const e=new tt(t);return new v(this.x*e.scaleX+this.y*e.skewY+e.translateX,this.x*e.skewX+this.y*e.scaleY+e.translateY)}transform(t){const e=new tt(t);return new v(this.x*e.scaleX+this.y*e.skewY,this.x*e.skewX+this.y*e.scaleY)}mul(t){const e=new v(t);return new v(this.x*e.x,this.y*e.y)}div(t){const e=new v(t);return new v(this.x/e.x,this.y/e.y)}add(t){const e=new v(t);return new v(this.x+e.x,this.y+e.y)}sub(t){const e=new v(t);return new v(this.x-e.x,this.y-e.y)}dot(t){const e=new v(t);return this.x*e.x+this.y*e.y}cross(t){const e=new v(t);return this.x*e.y-this.y*e.x}mod(t){const e=new v(t);return new v(this.x%e.x,this.y%e.y)}rotate(t,e=v.zero){const r=new v(e),a=tt.fromTranslation(r).rotate(t).translate(r.flipped);return this.transformAsPoint(a)}addX(t){return new v(this.x+t,this.y)}addY(t){return new v(this.x,this.y+t)}toSymbol(){return v.symbol}toString(){return`Vector2(${this.x}, ${this.y})`}serialize(){return{x:this.x,y:this.y}}exactlyEquals(t){return this.x===t.x&&this.y===t.y}equals(t,e=De){return Math.abs(this.x-t.x)<=e+Number.EPSILON&&Math.abs(this.y-t.y)<=e+Number.EPSILON}}v.symbol=Symbol.for("@motion-canvas/core/types/Vector2");v.zero=new v;v.one=new v(1,1);v.right=new v(1,0);v.left=new v(-1,0);v.up=new v(0,1);v.down=new v(0,-1);function wu(s,t){return v.fromDegrees(s).transform(t).degrees}function Yr(s,t){return v.magnitude(t.m11,t.m12)*s}class Y{static createSignal(t,e=Y.lerp){return new lr(["x","y","width","height"],r=>new Y(r),t,e).toSignal()}static lerp(t,e,r){let a,o,h,c;return typeof r=="number"?a=o=h=c=r:r instanceof v?(a=h=r.x,o=c=r.y):(a=r.x,o=r.y,h=r.width,c=r.height),new Y(V(t.x,e.x,a),V(t.y,e.y,o),V(t.width,e.width,h),V(t.height,e.height,c))}static arcLerp(t,e,r,a=!1,o){return o??(o=(t.position.sub(e.position).ctg+t.size.sub(e.size).ctg)/2),Y.lerp(t,e,ui(r,a,o))}static fromSizeCentered(t){return new Y(-t.width/2,-t.height/2,t.width,t.height)}static fromPoints(...t){let e=1/0,r=1/0,a=-1/0,o=-1/0;for(const h of t)h.x>a&&(a=h.x),h.xo&&(o=h.y),h.ya&&(a=c),h.xo&&(o=m),h.ye.transformAsPoint(t))}expand(t){return new Y(this.x-t,this.y-t,this.width+t*2,this.height+t*2)}addSpacing(t){const e=new Y(this);return e.left-=t.left,e.top-=t.top,e.right+=t.right,e.bottom+=t.bottom,e}includes(t){return t.x>=this.x&&t.x<=this.x+this.width&&t.y>=this.y&&t.y<=this.y+this.height}intersects(t){return this.leftt.left&&this.topt.top}intersection(t){const e=new Y;return this.intersects(t)&&(e.left=Math.max(this.left,t.left),e.top=Math.max(this.top,t.top),e.right=Math.min(this.right,t.right),e.bottom=Math.min(this.bottom,t.bottom)),e}toSymbol(){return Y.symbol}toString(){return`BBox(${this.x}, ${this.y}, ${this.width}, ${this.height})`}serialize(){return{x:this.x,y:this.y,width:this.width,height:this.height}}}Y.symbol=Symbol.for("@motion-canvas/core/types/Rect");class Tt{static createSignal(t,e=Tt.lerp){return new lr(["top","right","bottom","left"],r=>new Tt(r),t,e).toSignal()}static lerp(t,e,r){return new Tt(V(t.top,e.top,r),V(t.right,e.right,r),V(t.bottom,e.bottom,r),V(t.left,e.left,r))}get x(){return this.left+this.right}get y(){return this.top+this.bottom}constructor(t=0,e,r,a){if(this.top=0,this.right=0,this.bottom=0,this.left=0,t!=null){if(Array.isArray(t)&&(a=t[3],r=t[2],e=t[1],t=t[0]),typeof t=="number"){this.top=t,this.right=e!==void 0?e:t,this.bottom=r!==void 0?r:t,this.left=a!==void 0?a:e!==void 0?e:t;return}this.top=t.top,this.right=t.right,this.bottom=t.bottom,this.left=t.left}}lerp(t,e){return Tt.lerp(this,t,e)}scale(t){return new Tt(this.top*t,this.right*t,this.bottom*t,this.left*t)}addScalar(t){return new Tt(this.top+t,this.right+t,this.bottom+t,this.left+t)}toSymbol(){return Tt.symbol}toString(){return`Spacing(${this.top}, ${this.right}, ${this.bottom}, ${this.left})`}serialize(){return{top:this.top,right:this.right,bottom:this.bottom,left:this.left}}}Tt.symbol=Symbol.for("@motion-canvas/core/types/Spacing");class Ur extends bt{constructor(){super(...arguments),this.type=ee.symbol}parse(t){return t===null?null:new ee(t)}serialize(){var t;return((t=this.value.current)==null?void 0:t.serialize())??null}}class Vt extends bt{constructor(t,e,r=e[0].value){super(t,r),this.options=e,this.type=Vt.symbol}set(t){super.set(this.getOption(t).value)}parse(t){return this.getOption(t).value}getOption(t){return this.options.find(e=>e.value===t)??this.options[0]}}Vt.symbol=Symbol.for("@motion-canvas/core/meta/EnumMetaField");class xu extends bt{get onFieldsChanged(){return this.fields.subscribable}get options(){return this.optionFields[this.current]}constructor(t,e,r=0){const a=e.plugins.flatMap(c=>{var m;return((m=c.exporters)==null?void 0:m.call(c,e))??[]}),o=a.map(c=>c.meta(e)),h=new Vt("exporter",a.map(c=>({value:c.id,text:c.displayName})),a[r].id);super(t,{name:h.get(),options:o[r].get()}),this.current=r,this.type=Object,this.handleChange=()=>{const c=this.exporterField.get(),m=Math.max(this.exporters.findIndex(w=>w.id===c),0);this.current!==m&&(this.options.onChanged.unsubscribe(this.handleChange),this.current=m,this.options.onChanged.subscribe(this.handleChange,!1),this.fields.current=[this.exporterField,this.options]),this.value.current={name:this.exporterField.get(),options:this.options.get()}},this.exporters=a,this.exporterField=h,this.exporterField.onChanged.subscribe(this.handleChange,!1),this.exporterField.disable(o.length<2).space(),this.optionFields=o,this.optionFields[r].onChanged.subscribe(this.handleChange,!1),this.fields=new te([this.exporterField,this.options])}set(t){this.exporterField.set(t.name),this.options.set(t.options)}serialize(){return{name:this.exporterField.serialize(),options:this.options.serialize()}}clone(){return new this.constructor(this.name,this.exporters,this.current)}}class Nt{constructor(t,e=!1){this.name=t,this.source=e,this.lock=new Vh,this.ignoreChange=!1,this.cache=null,this.metaField=null,this.handleChanged=async()=>{}}attach(t){var e;this.metaField||(this.metaField=t,this.cache&&this.metaField.set(this.cache),(e=this.metaField)==null||e.onChanged.subscribe(this.handleChanged))}async saveData(t){if(this.source===!1)return;if(!this.source)throw new Error(`The meta file for ${this.name} is missing.`);if(Nt.sourceLookup[this.source])throw new Error(`Metadata for ${this.name} is already being updated`);const e=this.source;await new Promise((r,a)=>{setTimeout(()=>{delete Nt.sourceLookup[e],a(`Connection timeout when updating metadata for ${this.name}`)},1e3),Nt.sourceLookup[e]=()=>{delete Nt.sourceLookup[e],r()},(void 0).send("motion-canvas:meta",{source:e,data:t})})}loadData(t){var e;this.ignoreChange=!0,this.cache=t,(e=this.metaField)==null||e.set(t),this.ignoreChange=!1}}Nt.sourceLookup={};class sr extends bt{constructor(){super(...arguments),this.type=Number,this.presets=[]}parse(t){let e=parseFloat(t);return this.min!==void 0&&ethis.max&&(e=this.max),e}getPresets(){return this.presets}setPresets(t){return this.presets=t,this}setRange(t,e){return this.min=t,this.max=e,this}}class hr extends bt{constructor(){super(...arguments),this.type=hr.symbol}parse(t){return this.parseRange(1/0,t[0],t[1]??1/0)}update(t,e,r,a){this.value.current=this.parseRange(r/a-De,t/a-De,e/a-De)}parseRange(t,e=this.value.current[0],r=this.value.current[1]){return e=dt(0,t,e),r=dt(0,t,r??1/0),e>r&&([e,r]=[r,e]),r>=t&&(r=1/0),[e,r]}}hr.symbol=Symbol.for("@motion-canvas/core/meta/RangeMetaField");class ci extends bt{constructor(){super(...arguments),this.type=v.symbol}parse(t){return new v(t)}serialize(){return this.value.current.serialize()}}const Qs=[{value:.25,text:"0.25x (Quarter)"},{value:.5,text:"0.5x (Half)"},{value:1,text:"1.0x (Full)"},{value:2,text:"2.0x (Double)"}],Su=[{value:"srgb",text:"sRGB"},{value:"display-p3",text:"DCI-P3"}],ku=[{value:"image/png",text:"png"},{value:"image/jpeg",text:"jpeg"},{value:"image/webp",text:"webp"}],Vs=[{value:30,text:"30 FPS"},{value:60,text:"60 FPS"}];function Cu(s){const t={version:new bt("version",1),shared:new _t("General",{background:new Ur("background",null),range:new hr("range",[0,1/0]),size:new ci("resolution",new v(1920,1080)),audioOffset:new sr("audio offset",0)}),preview:new _t("Preview",{fps:new sr("frame rate",30).setPresets(Vs),resolutionScale:new Vt("scale",Qs,1)}),rendering:new _t("Rendering",{fps:new sr("frame rate",60).setPresets(Vs),resolutionScale:new Vt("scale",Qs,1),colorSpace:new Vt("color space",Su),exporter:new xu("exporter",s)})};return t.shared.audioOffset.disable(!s.audio),t}class Pu extends _t{constructor(t){super("project",Cu(t))}getFullPreviewSettings(){return{...this.shared.get(),...this.preview.get()}}getFullRenderingSettings(){return{...this.shared.get(),...this.rendering.get()}}}function Ru(s){return typeof s=="function"?s:()=>s}const $u=Ru({name:"mc-default-plugin",exporters(){return[Kt]}});function Mu(){return new _t("Application Settings",{version:new bt("version",1),appearance:new _t("Appearance",{color:new Ur("accent color",new ee("#33a6ff")).describe("The accent color for the user interface. (Leave empty to use the default color)"),font:new Xr("legacy font",!1).describe("Use the 'JetBrains Mono' font for the user interface."),coordinates:new Xr("coordinates",!0).describe("Display mouse coordinates within the preview window.")}),defaults:new _t("Defaults",{background:new Ur("background",null).describe("The default background color used in new projects."),size:new ci("resolution",new v(1920,1080)).describe("The default resolution used in new projects.")})})}function Tu(s,t,e,r,a,o){const h=Mu();o.attach(h);const c=$u();e=[c,...r.plugins??[],...e.filter(P=>P.name!==c.name)];const w={...e.reduce((P,O)=>{var K;return{...P,...((K=O.settings)==null?void 0:K.call(O,P))??{}}},{name:s,...r})};return w.versions=t,w.logger=new Gh,w.plugins=e,w.settings=h,w.meta=new Pu(w),w.meta.shared.set(h.defaults.get()),a.attach(w.meta),e.forEach(P=>{var O;return(O=P.project)==null?void 0:O.call(P,w)}),w}const Lu=1e3;class Kt{static meta(){const t=new _t(this.name,{fileType:new Vt("file type",ku),quality:new sr("quality",100).setRange(0,100).describe("A number between 0 and 100 indicating the image quality."),groupByScene:new Xr("group by scene",!1).describe("Group exported images by scene. When checked, separates the sequence into subdirectories for each scene in the project.")});return t.fileType.onChanged.subscribe(e=>{t.quality.disable(e==="image/png")}),t}static async create(t,e){return new Kt(t.logger,e)}constructor(t,e){this.logger=t,this.settings=e,this.frameLookup=new Set,this.handleResponse=({frame:a})=>{this.frameLookup.delete(a)};const r=e.exporter.options;this.projectName=e.name,this.quality=dt(0,1,r.quality/100),this.fileType=r.fileType,this.groupByScene=r.groupByScene}async start(){Kt.response.subscribe(this.handleResponse)}async handleFrame(t,e,r,a,o){if(this.frameLookup.has(e)){this.logger.warn(`Frame no. ${e} is already being exported.`);return}}async stop(){for(;this.frameLookup.size>0;)await new Promise(t=>setTimeout(t,Lu));Kt.response.unsubscribe(this.handleResponse)}}Kt.id="@motion-canvas/core/image-sequence";Kt.displayName="Image sequence";Kt.response=new Lt;let an;an??(an=new Nt("project",!1));an.loadData({version:0});const zu=an;let on;on??(on=new Nt("example",!1));on.loadData({version:0});const Iu=on;function Au(s){var t;return!!((t=s.prototype)!=null&&t.isClass)}const Ou=Symbol.for("@motion-canvas/2d/fragment");function Fu(s,t){const{ref:e,children:r,...a}=t,o=Array.isArray(r)?r.flat():r;if(s===Ou)return o;if(Au(s)){const h=new s({...a,children:o});return e==null||e(h),h}else return s({...a,ref:e,children:o})}function Ks(s,t){const e=dt(0,s.arcLength,t);let r=0;for(const a of s.segments){const o=r;if(r+=a.arcLength,r>=e){const h=(e-o)/a.arcLength;return a.getPoint(dt(0,1,h))}}return{position:v.zero,tangent:v.up,normal:v.up}}const Dt=Symbol.for("@motion-canvas/2d/decorators/initializers");function qe(s,t){if(!s[Dt])s[Dt]=[];else if(s[Dt]&&!Object.prototype.hasOwnProperty.call(s,Dt)){const e=Object.getPrototypeOf(s);s[Dt]=[...e[Dt]]}s[Dt].push(t)}function Eu(s,t){if(s[Dt])try{s[Dt].forEach(e=>e(s,t))}catch(e){throw e.inspect??(e.inspect=s.key),e}}function Zr(s={},t,e){const r={};if(e&&t){const a=s.setter??(t==null?void 0:t[`set${Fe(e)}`]);a&&(r.setter=a.bind(t));const o=s.getter??(t==null?void 0:t[`get${Fe(e)}`]);o&&(r.getter=o.bind(t));const h=s.tweener??(t==null?void 0:t[`tween${Fe(e)}`]);h&&(r.tweener=h.bind(t))}return r}const Bt=Symbol.for("@motion-canvas/2d/decorators/properties");function fe(s,t){var e;return((e=s[Bt])==null?void 0:e[t])??null}function ln(s,t){let e;return s[Bt]?s[Bt]&&!Object.prototype.hasOwnProperty.call(s,Bt)?s[Bt]=e=Object.fromEntries(Object.entries(s[Bt]).map(([r,a])=>[r,{...a}])):e=s[Bt]:s[Bt]=e={},e[t]??(e[t]={cloneable:!0,inspectable:!0,compoundEntries:[]}),e[t]}function fi(s){return s&&typeof s=="object"?s[Bt]??{}:{}}function hn(s,t){Eu(s);for(const[e,r]of Object.entries(fi(s))){const a=s[e];if(a.reset(),t[e]!==void 0&&a(t[e]),r.compoundEntries!==void 0)for(const[o,h]of r.compoundEntries)h in t&&a[o](t[h])}}function $(){return(s,t)=>{const e=ln(s,t);qe(s,r=>{var h,c;const a=(h=r[`getDefault${Fe(t)}`])==null?void 0:h.bind(r),o=new ue(a??e.default,e.interpolationFunction??he,r,(c=e.parser)==null?void 0:c.bind(r),Zr(e,r,t));r[t]=o.toSignal()})}}function z(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.default=s}}function Du(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.interpolationFunction=s}}function Bu(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.parser=s}}function We(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.parser=a=>new s(a),"lerp"in s&&(r.interpolationFunction??(r.interpolationFunction=s.lerp))}}function Le(s=!0){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.cloneable=s}}function pi(s=!0){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.inspectable=s}}const ti={invert:{name:"invert"},sepia:{name:"sepia"},grayscale:{name:"grayscale"},brightness:{name:"brightness",default:1},contrast:{name:"contrast",default:1},saturate:{name:"saturate",default:1},hue:{name:"hue-rotate",unit:"deg",scale:1},blur:{name:"blur",transform:!0,unit:"px",scale:1}};class Nu{get name(){return this.props.name}get default(){return this.props.default}constructor(t){this.props={name:"invert",default:0,unit:"%",scale:100,transform:!1,...t,value:t.value??t.default??0},this.value=Te(this.props.value,V,this)}isActive(){return this.value()!==this.props.default}serialize(t){let e=this.value();return this.props.transform&&(e=Yr(e,t)),`${this.props.name}(${e*this.props.scale}${this.props.unit})`}}function di(s){return(t,e)=>{const r=ln(t,e);r.compound=!0,r.compoundEntries=Object.entries(s),qe(t,a=>{if(!r.parser){yt().error(`Missing parser decorator for "${e.toString()}"`);return}const o=r.default,h=r.parser.bind(a),c=new lr(r.compoundEntries.map(([m,w])=>{const P=new ue($e(o,O=>h(O)[m]),V,a,void 0,Zr(void 0,a,w)).toSignal();return[m,P]}),h,o,r.interpolationFunction??he,a,Zr(r,a,e));a[e]=c.toSignal()})}}function qt(s){return(t,e)=>{di(typeof s=="object"?s:{x:s?`${s}X`:"x",y:s?`${s}Y`:"y"})(t,e),We(v)(t,e)}}function F(){return(s,t)=>{qe(s,e=>{const r=Object.getPrototypeOf(e)[t];e[t]=mu(r.bind(e),e)})}}var re=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class At{constructor(t){hn(this,t)}canvasGradient(t){let e;switch(this.type()){case"linear":e=t.createLinearGradient(this.from.x(),this.from.y(),this.to.x(),this.to.y());break;case"conic":e=t.createConicGradient(this.angle(),this.from.x(),this.from.y());break;case"radial":e=t.createRadialGradient(this.from.x(),this.from.y(),this.fromRadius(),this.to.x(),this.to.y(),this.toRadius());break}for(const{offset:r,color:a}of this.stops())e.addColorStop(_e(r),new ee(_e(a)).serialize());return e}}re([z("linear"),$()],At.prototype,"type",void 0);re([qt("from")],At.prototype,"from",void 0);re([qt("to")],At.prototype,"to",void 0);re([z(0),$()],At.prototype,"angle",void 0);re([z(0),$()],At.prototype,"fromRadius",void 0);re([z(0),$()],At.prototype,"toRadius",void 0);re([z([]),$()],At.prototype,"stops",void 0);re([F()],At.prototype,"canvasGradient",null);var un=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Ge{constructor(t){hn(this,t)}canvasPattern(t){return t.createPattern(this.image(),this.repetition())}}un([$()],Ge.prototype,"image",void 0);un([z(null),$()],Ge.prototype,"repetition",void 0);un([F()],Ge.prototype,"canvasPattern",null);function ju(s){return s===null?null:s instanceof At||s instanceof Ge?s:new ee(s)}function Jr(s,t){return s===null?"":s instanceof ee?s.serialize():s instanceof At?s.canvasGradient(t):s instanceof Ge?s.canvasPattern(t)??"":""}function ei(s,t,e,r,a){if(e.top===0&&e.right===0&&e.bottom===0&&e.left===0){_u(s,t);return}const o=Jt(e.top,e.right,e.left,t),h=Jt(e.right,e.top,e.bottom,t),c=Jt(e.bottom,e.left,e.right,t),m=Jt(e.left,e.bottom,e.top,t);if(r){const w=P=>{const O=P*a;return P-O};s.moveTo(t.left+o,t.top),s.lineTo(t.right-h,t.top),s.bezierCurveTo(t.right-w(h),t.top,t.right,t.top+w(h),t.right,t.top+h),s.lineTo(t.right,t.bottom-c),s.bezierCurveTo(t.right,t.bottom-w(c),t.right-w(c),t.bottom,t.right-c,t.bottom),s.lineTo(t.left+m,t.bottom),s.bezierCurveTo(t.left+w(m),t.bottom,t.left,t.bottom-w(m),t.left,t.bottom-m),s.lineTo(t.left,t.top+o),s.bezierCurveTo(t.left,t.top+w(o),t.left+w(o),t.top,t.left+o,t.top);return}s.moveTo(t.left+o,t.top),s.arcTo(t.right,t.top,t.right,t.bottom,h),s.arcTo(t.right,t.bottom,t.left,t.bottom,c),s.arcTo(t.left,t.bottom,t.left,t.top,m),s.arcTo(t.left,t.top,t.right,t.top,o)}function Jt(s,t,e,r){const a=s+t>r.width?r.width*(s/(s+t)):s,o=s+e>r.height?r.height*(s/(s+e)):s;return Math.min(a,o)}function _u(s,t){s.rect(t.x,t.y,t.width,t.height)}function ur(s,t){s.moveTo(t.x,t.y)}function jt(s,t){s.lineTo(t.x,t.y)}function oe(s,t){if(!(t.length<2)){ur(s,t[0]);for(const e of t.slice(1))jt(s,e)}}function qu(s,t,e=8){jt(s,t.addY(-e)),jt(s,t.addY(e)),jt(s,t),jt(s,t.addX(-e)),Wu(s,t,e)}function Wu(s,t,e,r=0,a=Math.PI*2,o=!1){s.arc(t.x,t.y,e,r,a,o)}function Gu(s,t,e,r){s.bezierCurveTo(t.x,t.y,e.x,e.y,r.x,r.y)}function gi(){return(s,t)=>{$()(s,t),Bu(ju)(s,t),Du(ee.lerp)(s,t),z(null)(s,t)}}function ne(s,t=e=>e){return(e,r)=>{e[`getDefault${Fe(r)}`]=function(){this.requestLayoutUpdate();const a=this.element.style[s];this.element.style[s]="";const o=t.call(this,this.styles.getPropertyValue(s));return this.element.style[s]=a,o}}}function Hu(){return(s,t)=>{$()(s,t),We(ee)(s,t)}}class Xu extends ue{constructor(t,e){super(t,he,e);for(const r in ti){const a=ti[r];Object.defineProperty(this.invokable,r,{value:(o,h,c=nn)=>{var w,P,O;if(o===void 0)return((P=(w=this.get())==null?void 0:w.find(K=>K.name===a.name))==null?void 0:P.value())??a.default??0;let m=(O=this.get())==null?void 0:O.find(K=>K.name===a.name);return m||(m=new Nu(a),this.set([...this.get(),m])),h===void 0?(m.value(o),this.owner):m.value(o,h,c)}})}}*tweener(t,e,r){const a=this.get(),o=_e(t);if(Uu(a,o)){yield*Ee(...a.map((m,w)=>m.value(o[w].value(),e,r))),this.set(o);return}for(const m of o)m.value(m.default);const h=o.map(m=>m.value.context.raw()),c=a.length>0&&o.length>0?e/2:e;a.length>0&&(yield*Ee(...a.map(m=>m.value(m.default,c,r)))),this.set(o),o.length>0&&(yield*Ee(...o.map((m,w)=>m.value(h[w],c,r))))}}function Yu(){return(s,t)=>{const e=ln(s,t);qe(s,r=>{r[t]=new Xu(e.default??[],r).toSignal()})}}function Uu(s,t){if(s.length!==t.length)return!1;for(let e=0;e=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class E{get x(){return this.position.x}get y(){return this.position.y}getAbsolutePosition(){const t=this.localToWorld();return new v(t.m41,t.m42)}setAbsolutePosition(t){this.position($e(t,e=>new v(e).transformAsPoint(this.worldToParent())))}getAbsoluteRotation(){const t=this.localToWorld();return v.degrees(t.m11,t.m12)}setAbsoluteRotation(t){this.rotation($e(t,e=>wu(e,this.worldToParent())))}getAbsoluteScale(){const t=this.localToWorld();return new v(v.magnitude(t.m11,t.m12),v.magnitude(t.m21,t.m22))}setAbsoluteScale(t){this.scale($e(t,e=>this.getRelativeScale(new v(e))))}getRelativeScale(t){var r;const e=((r=this.parent())==null?void 0:r.absoluteScale())??v.one;return t.div(e)}*tweenCompositeOperation(t,e,r){const a=_e(t);a==="source-over"?(yield*this.compositeOverride(1,e,r),this.compositeOverride(0),this.compositeOperation(a)):(this.compositeOperation(a),this.compositeOverride(1),yield*this.compositeOverride(0,e,r))}absoluteOpacity(){var t;return(((t=this.parent())==null?void 0:t.absoluteOpacity())??1)*this.opacity()}hasFilters(){return!!this.filters().find(t=>t.isActive())}hasShadow(){return!!this.shadowColor()&&(this.shadowBlur()>0||this.shadowOffset.x()!==0||this.shadowOffset.y()!==0)}filterString(){let t="";const e=this.compositeToWorld();for(const r of this.filters())r.isActive()&&(t+=" "+r.serialize(e));return t}setChildren(t){this.spawner(t)}getChildren(){return this.spawnChildren(),this.realChildren}spawnChildren(){const t=this.spawner();if(Qt(this.spawner.context.raw())){const e=new Set;for(const r of t){const a=r.parent.context.raw();if(a&&a!==this)throw new Kr("The spawner returned a node that already has a parent","A spawner should either create entirely new nodes or reuse nodes from a pool.");r.parent(this),e.add(r.key)}for(const r of this.realChildren)e.has(r.key)||r.parent(null);this.realChildren=t}else this.realChildren=t}sortedChildren(){return[...this.children()].sort((t,e)=>Math.sign(t.zIndex()-e.zIndex()))}constructor({children:t,spawner:e,key:r,...a}){this.compositeOverride=Te(0),this.stateStack=[],this.realChildren=[],this.parent=Te(null),this.properties=fi(this);const o=Zu();this.key=o.registerNode(this,r),this.view2D=o.getView(),this.creationStack=new Error().stack,hn(this,a),this.add(t),e&&this.children(e)}localToWorld(){const t=this.parent();return t?t.localToWorld().multiply(this.localToParent()):this.localToParent()}worldToLocal(){return this.localToWorld().inverse()}worldToParent(){var t;return((t=this.parent())==null?void 0:t.worldToLocal())??new DOMMatrix}localToParent(){const t=new DOMMatrix;return t.translateSelf(this.x(),this.y()),t.rotateSelf(0,0,this.rotation()),t.scaleSelf(this.scale.x(),this.scale.y()),t.skewXSelf(this.skew.x()),t.skewYSelf(this.skew.y()),t}compositeToWorld(){var t;return((t=this.compositeRoot())==null?void 0:t.localToWorld())??new DOMMatrix}compositeRoot(){var t;return this.composite()?this:((t=this.parent())==null?void 0:t.compositeRoot())??null}compositeToLocal(){const t=this.compositeRoot();if(t){const e=this.worldToLocal();return e.m44=1,t.localToWorld().multiply(e)}return new DOMMatrix}view(){return this.view2D}add(t){return this.insert(t,1/0)}insert(t,e=0){const r=Array.isArray(t)?t:[t];if(r.length===0)return this;const a=this.children(),o=a.slice(0,e);for(const h of r)h instanceof E&&(o.push(h),h.remove(),h.parent(this));return o.push(...a.slice(e)),this.children(o),this}remove(){const t=this.parent();return t===null?this:(t.children(t.children().filter(e=>e!==this)),this.parent(null),this)}move(t=1){const e=this.parent();if(t===0||!e)return this;const r=e.children(),a=[];if(t>0)for(let o=0;o=0;o--){const h=r[o];if(h===this){const c=o+t;for(;o>c&&o>0;o--)a[o]=r[o-1]}a[o]=h}return e.children(a),this}moveUp(){return this.move(1)}moveDown(){return this.move(-1)}moveToTop(){return this.move(1/0)}moveToBottom(){return this.move(-1/0)}moveTo(t){const e=this.parent();if(!e)return this;const r=e.children().indexOf(this),a=t-r;return this.move(a)}moveBelow(t,e=!1){const r=this.parent();if(!r)return this;if(t.parent()!==r)return yt().error("Cannot position nodes relative to each other if they don't belong to the same parent."),this;const a=r.children(),o=a.indexOf(this),h=a.indexOf(t);if(!e&&oh)return this;const c=h-o+1;return this.move(c)}reparent(t){const e=this.absolutePosition(),r=this.absoluteRotation(),a=this.absoluteScale();t.add(this),this.absolutePosition(e),this.absoluteRotation(r),this.absoluteScale(a)}removeChildren(){for(const t of this.children())t.remove()}dispose(){this.stateStack=[];for(const{signal:t}of this)t==null||t.context.dispose()}clone(t={}){const e={...t};Qt(this.spawner.context.raw())?e.spawner=this.spawner.context.raw():this.children().length>0&&(e.children??(e.children=this.children().map(r=>r.clone())));for(const{key:r,meta:a,signal:o}of this)if(!(!a.cloneable||r in e))if(a.compound)for(const[h,c]of a.compoundEntries)c in e||(e[c]=o[h].context.raw());else e[r]=o.context.raw();return this.instantiate(e)}snapshotClone(t={}){const e={...this.getState(),...t};return this.children().length>0&&(e.children??(e.children=this.children().map(r=>r.snapshotClone()))),this.instantiate(e)}reactiveClone(t={}){const e={...t};this.children().length>0&&(e.children??(e.children=this.children().map(r=>r.reactiveClone())));for(const{key:r,meta:a,signal:o}of this)!a.cloneable||r in e||(e[r]=()=>o());return this.instantiate(e)}instantiate(t={}){return new this.constructor(t)}requiresCache(){return this.cache()||this.opacity()<1||this.compositeOperation()!=="source-over"||this.hasFilters()||this.hasShadow()}cacheCanvas(){const t=document.createElement("canvas").getContext("2d");if(!t)throw new Error("Could not create a cache canvas");return t}cachedCanvas(){const t=this.cacheCanvas(),e=this.worldSpaceCacheBBox(),r=this.localToWorld();return t.canvas.width=e.width,t.canvas.height=e.height,t.setTransform(r.a,r.b,r.c,r.d,r.e-e.x,r.f-e.y),this.draw(t),t}getCacheBBox(){return new Y}cacheBBox(){const t=this.getCacheBBox(),e=this.children();if(e.length===0)return t;const r=t.corners;for(const a of e){const o=a.fullCacheBBox(),h=a.localToParent();r.push(...o.corners.map(c=>c.transformAsPoint(h)))}return Y.fromPoints(...r)}fullCacheBBox(){const t=this.compositeToLocal(),e=this.shadowOffset().transform(t),r=Yr(this.shadowBlur(),t),a=this.cacheBBox().expand(this.filters.blur()*2+r);return e.x<0?(a.x+=e.x,a.width-=e.x):a.width+=e.x,e.y<0?(a.y+=e.y,a.height-=e.y):a.height+=e.y,a}worldSpaceCacheBBox(){const t=Y.fromSizeCentered(this.view().size()),e=Y.fromPoints(...t.transformCorners(this.view().localToWorld())),r=Y.fromPoints(...this.cacheBBox().transformCorners(this.localToWorld()));return e.intersection(r).pixelPerfect}setupDrawFromCache(t){if(t.globalCompositeOperation=this.compositeOperation(),t.globalAlpha*=this.opacity(),this.hasFilters()&&(t.filter=this.filterString()),this.hasShadow()){const e=this.compositeToWorld(),r=this.shadowOffset().transform(e),a=Yr(this.shadowBlur(),e);t.shadowColor=this.shadowColor().serialize(),t.shadowBlur=a,t.shadowOffsetX=r.x,t.shadowOffsetY=r.y}}render(t){if(!(this.absoluteOpacity()<=0)){if(t.save(),this.transformContext(t),this.requiresCache()){const e=this.worldSpaceCacheBBox();if(e.width!==0&&e.height!==0){this.setupDrawFromCache(t);const r=this.cachedCanvas(),a=this.compositeOverride(),o=this.worldToLocal();t.transform(o.a,o.b,o.c,o.d,o.e,o.f),t.drawImage(r.canvas,e.position.x,e.position.y),a>0&&(t.save(),t.globalAlpha*=a,t.globalCompositeOperation="source-over",t.drawImage(r.canvas,e.position.x,e.position.y),t.restore())}}else this.draw(t);t.restore()}}draw(t){this.drawChildren(t)}drawChildren(t){for(const e of this.sortedChildren())e.render(t)}drawOverlay(t,e){const r=this.cacheBBox().transformCorners(e),a=this.getCacheBBox().transformCorners(e);t.strokeStyle="white",t.lineWidth=1,t.beginPath(),oe(t,r),t.closePath(),t.stroke(),t.strokeStyle="blue",t.beginPath(),oe(t,a),t.closePath(),t.stroke()}transformContext(t){const e=this.localToParent();t.transform(e.a,e.b,e.c,e.d,e.e,e.f)}hit(t){let e=null;const r=t.transformAsPoint(this.localToParent().inverse());for(const a of this.children().reverse())if(e=a.hit(r),e)break;return e}collectAsyncResources(){for(const t of this.children())t.collectAsyncResources()}async toPromise(){do await it.consumePromises(),this.collectAsyncResources();while(it.hasPromises());return this}getState(){const t={};for(const{key:e,meta:r,signal:a}of this)!r.cloneable||e in t||(t[e]=a());return t}applyState(t){for(const e in t){const r=this.signalByKey(e);r&&r(t[e])}}save(){this.stateStack.push(this.getState())}restore(t,e=nn){const r=this.stateStack.pop();if(r===void 0)return;if(t===void 0){this.applyState(r);return}const a=this.getState();for(const o in r)a[o]===r[o]&&delete r[o];return Re(t,o=>{const h=e(o),c=Object.keys(r).reduce((m,w)=>(m[w]=he(a[w],r[w],h),m),{});this.applyState(c)})}*[Symbol.iterator](){for(const t in this.properties){const e=this.properties[t],r=this.signalByKey(t);yield{meta:e,signal:r,key:t}}}signalByKey(t){return this[t]}}q([qt()],E.prototype,"position",void 0);q([We(v),Le(!1),$()],E.prototype,"absolutePosition",void 0);q([z(0),$()],E.prototype,"rotation",void 0);q([Le(!1),$()],E.prototype,"absoluteRotation",void 0);q([z(v.one),qt("scale")],E.prototype,"scale",void 0);q([z(v.zero),qt("skew")],E.prototype,"skew",void 0);q([We(v),Le(!1),$()],E.prototype,"absoluteScale",void 0);q([z(0),$()],E.prototype,"zIndex",void 0);q([z(!1),$()],E.prototype,"cache",void 0);q([z(!1),$()],E.prototype,"composite",void 0);q([z("source-over"),$()],E.prototype,"compositeOperation",void 0);q([wt()],E.prototype,"tweenCompositeOperation",null);q([z(1),$()],E.prototype,"opacity",void 0);q([F()],E.prototype,"absoluteOpacity",null);q([Yu()],E.prototype,"filters",void 0);q([z("#0000"),Hu()],E.prototype,"shadowColor",void 0);q([z(0),$()],E.prototype,"shadowBlur",void 0);q([qt("shadowOffset")],E.prototype,"shadowOffset",void 0);q([F()],E.prototype,"hasFilters",null);q([F()],E.prototype,"hasShadow",null);q([F()],E.prototype,"filterString",null);q([pi(!1),Le(!1),z([]),$()],E.prototype,"spawner",void 0);q([pi(!1),Le(!1),$()],E.prototype,"children",void 0);q([F()],E.prototype,"spawnChildren",null);q([F()],E.prototype,"sortedChildren",null);q([F()],E.prototype,"localToWorld",null);q([F()],E.prototype,"worldToLocal",null);q([F()],E.prototype,"worldToParent",null);q([F()],E.prototype,"localToParent",null);q([F()],E.prototype,"compositeToWorld",null);q([F()],E.prototype,"compositeRoot",null);q([F()],E.prototype,"compositeToLocal",null);q([F()],E.prototype,"cacheCanvas",null);q([F()],E.prototype,"cachedCanvas",null);q([F()],E.prototype,"cacheBBox",null);q([F()],E.prototype,"fullCacheBBox",null);q([F()],E.prototype,"worldSpaceCacheBBox",null);E.prototype.isClass=!0;function cn(s){return(t,e)=>{di({top:s?`${s}Top`:"top",right:s?`${s}Right`:"right",bottom:s?`${s}Bottom`:"bottom",left:s?`${s}Left`:"left"})(t,e),We(Tt)(t,e)}}var I=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class L extends E{get columnGap(){return this.gap.x}get rowGap(){return this.gap.y}getX(){return this.isLayoutRoot()?this.x.context.getter():this.computedPosition().x}setX(t){this.x.context.setter(t)}getY(){return this.isLayoutRoot()?this.y.context.getter():this.computedPosition().y}setY(t){this.y.context.setter(t)}get width(){return this.size.x}get height(){return this.size.y}getWidth(){return this.computedSize().width}setWidth(t){this.width.context.setter(t)}*tweenWidth(t,e,r,a){const o=this.desiredSize().x,h=typeof o!="number"||typeof t!="number";let c;h?c=this.size.x():c=o;let m;h?(this.size.x(t),m=this.size.x()):m=t,this.size.x(c),h&&this.lockSize(),yield*Re(e,w=>this.size.x(a(c,m,r(w)))),this.size.x(t),h&&this.releaseSize()}getHeight(){return this.computedSize().height}setHeight(t){this.height.context.setter(t)}*tweenHeight(t,e,r,a){const o=this.desiredSize().y,h=typeof o!="number"||typeof t!="number";let c;h?c=this.size.y():c=o;let m;h?(this.size.y(t),m=this.size.y()):m=t,this.size.y(c),h&&this.lockSize(),yield*Re(e,w=>this.size.y(a(c,m,r(w)))),this.size.y(t),h&&this.releaseSize()}desiredSize(){return{x:this.width.context.getter(),y:this.height.context.getter()}}*tweenSize(t,e,r,a){const o=this.desiredSize();let h;typeof o.x!="number"||typeof o.y!="number"?h=this.size():h=new v(o);let c;typeof t=="object"&&typeof t.x=="number"&&typeof t.y=="number"?c=new v(t):(this.size(t),c=this.size()),this.size(h),this.lockSize(),yield*Re(e,m=>this.size(a(h,c,r(m)))),this.releaseSize(),this.size(t)}constructor(t){super(t)}lockSize(){this.sizeLockCounter(this.sizeLockCounter()+1)}releaseSize(){this.sizeLockCounter(this.sizeLockCounter()-1)}parentTransform(){let t=this.parent();for(;t;){if(t instanceof L)return t;t=t.parent()}return null}anchorPosition(){const t=this.computedSize(),e=this.offset();return t.scale(.5).mul(e)}layoutEnabled(){var t;return this.layout()??((t=this.parentTransform())==null?void 0:t.layoutEnabled())??!1}isLayoutRoot(){var t;return!this.layoutEnabled()||!((t=this.parentTransform())!=null&&t.layoutEnabled())}localToParent(){const t=super.localToParent(),e=this.offset();if(!e.exactlyEquals(v.zero)){const r=this.size().mul(e).scale(-.5);t.translateSelf(r.x,r.y)}return t}scalingRotationMatrix(){const t=new DOMMatrix;t.rotateSelf(0,0,this.rotation()),t.scaleSelf(this.scale.x(),this.scale.y());const e=this.offset();if(!e.exactlyEquals(v.zero)){const r=this.size().mul(e).scale(-.5);t.translateSelf(r.x,r.y)}return t}getComputedLayout(){return new Y(this.element.getBoundingClientRect())}computedPosition(){this.requestLayoutUpdate();const t=this.getComputedLayout(),e=new v(t.x+t.width/2*this.offset.x(),t.y+t.height/2*this.offset.y()),r=this.parentTransform();if(r){const a=r.getComputedLayout();e.x-=a.x+(a.width-t.width)/2,e.y-=a.y+(a.height-t.height)/2}return e}computedSize(){return this.requestLayoutUpdate(),this.getComputedLayout().size}requestLayoutUpdate(){const t=this.parentTransform();this.appendedToView()?(t==null||t.requestFontUpdate(),this.updateLayout()):t.requestLayoutUpdate()}appendedToView(){const t=this.isLayoutRoot();return t&&this.view().element.append(this.element),t}updateLayout(){if(this.applyFont(),this.applyFlex(),this.layoutEnabled()){const t=this.layoutChildren();for(const e of t)e.updateLayout()}}layoutChildren(){const t=[...this.children()],e=[],r=[];for(;t.length;){const a=t.shift();a instanceof L?a.layoutEnabled()&&(e.push(a),r.push(a.element)):a&&t.unshift(...a.children())}return this.element.replaceChildren(...r),e}requestFontUpdate(){var t;this.appendedToView(),(t=this.parentTransform())==null||t.requestFontUpdate(),this.applyFont()}getCacheBBox(){return Y.fromSizeCentered(this.computedSize())}draw(t){if(this.clip()){const e=this.computedSize();if(e.width===0||e.height===0)return;t.beginPath(),t.rect(e.width/-2,e.height/-2,e.width,e.height),t.closePath(),t.clip()}this.drawChildren(t)}drawOverlay(t,e){const r=this.computedSize(),a=r.mul(this.offset()).scale(.5).transformAsPoint(e),o=Y.fromSizeCentered(r),h=o.transformCorners(e),c=o.addSpacing(this.padding().scale(-1)).transformCorners(e),m=o.addSpacing(this.margin()).transformCorners(e);t.beginPath(),oe(t,m),oe(t,h),t.closePath(),t.fillStyle="rgba(255,193,125,0.6)",t.fill("evenodd"),t.beginPath(),oe(t,h),oe(t,c),t.closePath(),t.fillStyle="rgba(180,255,147,0.6)",t.fill("evenodd"),t.beginPath(),oe(t,h),t.closePath(),t.lineWidth=1,t.strokeStyle="white",t.stroke(),t.beginPath(),qu(t,a),t.stroke()}getOriginDelta(t){const e=this.computedSize().scale(.5),r=this.offset().mul(e);return t===gt.Middle?r.flipped:yu(t).mul(e).sub(r)}moveOffset(t){const e=this.computedSize().scale(.5),r=this.offset().mul(e),a=t.mul(e);this.offset(t),this.position(this.position().add(a).sub(r))}parsePixels(t){return t===null?"":`${t}px`}parseLength(t){return t===null?"":typeof t=="string"?t:`${t}px`}applyFlex(){this.element.style.position=this.isLayoutRoot()?"absolute":"relative";const t=this.desiredSize();this.element.style.width=this.parseLength(t.x),this.element.style.height=this.parseLength(t.y),this.element.style.maxWidth=this.parseLength(this.maxWidth()),this.element.style.minWidth=this.parseLength(this.minWidth()),this.element.style.maxHeight=this.parseLength(this.maxHeight()),this.element.style.minHeight=this.parseLength(this.minHeight()),this.element.style.aspectRatio=this.ratio()===null?"":this.ratio().toString(),this.element.style.marginTop=this.parsePixels(this.margin.top()),this.element.style.marginBottom=this.parsePixels(this.margin.bottom()),this.element.style.marginLeft=this.parsePixels(this.margin.left()),this.element.style.marginRight=this.parsePixels(this.margin.right()),this.element.style.paddingTop=this.parsePixels(this.padding.top()),this.element.style.paddingBottom=this.parsePixels(this.padding.bottom()),this.element.style.paddingLeft=this.parsePixels(this.padding.left()),this.element.style.paddingRight=this.parsePixels(this.padding.right()),this.element.style.flexDirection=this.direction(),this.element.style.flexBasis=this.parseLength(this.basis()),this.element.style.flexWrap=this.wrap(),this.element.style.justifyContent=this.justifyContent(),this.element.style.alignContent=this.alignContent(),this.element.style.alignItems=this.alignItems(),this.element.style.alignSelf=this.alignSelf(),this.element.style.columnGap=this.parseLength(this.gap.x()),this.element.style.rowGap=this.parseLength(this.gap.y()),this.sizeLockCounter()>0?(this.element.style.flexGrow="0",this.element.style.flexShrink="0"):(this.element.style.flexGrow=this.grow().toString(),this.element.style.flexShrink=this.shrink().toString())}applyFont(){if(this.element.style.fontFamily=this.fontFamily.isInitial()?"":this.fontFamily(),this.element.style.fontSize=this.fontSize.isInitial()?"":`${this.fontSize()}px`,this.element.style.fontStyle=this.fontStyle.isInitial()?"":this.fontStyle(),this.lineHeight.isInitial())this.element.style.lineHeight="";else{const t=this.lineHeight();this.element.style.lineHeight=typeof t=="string"?(parseFloat(t)/100).toString():`${t}px`}if(this.element.style.fontWeight=this.fontWeight.isInitial()?"":this.fontWeight().toString(),this.element.style.letterSpacing=this.letterSpacing.isInitial()?"":`${this.letterSpacing()}px`,this.element.style.textAlign=this.textAlign.isInitial()?"":this.textAlign(),this.textWrap.isInitial())this.element.style.whiteSpace="";else{const t=this.textWrap();typeof t=="boolean"?this.element.style.whiteSpace=t?"normal":"nowrap":this.element.style.whiteSpace=t}}dispose(){var t;super.dispose(),(t=this.sizeLockCounter)==null||t.context.dispose(),this.element&&(this.element.remove(),this.element.innerHTML=""),this.element=null,this.styles=null}hit(t){const e=t.transformAsPoint(this.localToParent().inverse());return this.cacheBBox().includes(e)?super.hit(t)??this:null}}I([z(null),$()],L.prototype,"layout",void 0);I([z(null),$()],L.prototype,"maxWidth",void 0);I([z(null),$()],L.prototype,"maxHeight",void 0);I([z(null),$()],L.prototype,"minWidth",void 0);I([z(null),$()],L.prototype,"minHeight",void 0);I([z(null),$()],L.prototype,"ratio",void 0);I([cn("margin")],L.prototype,"margin",void 0);I([cn("padding")],L.prototype,"padding",void 0);I([z("row"),$()],L.prototype,"direction",void 0);I([z(null),$()],L.prototype,"basis",void 0);I([z(0),$()],L.prototype,"grow",void 0);I([z(1),$()],L.prototype,"shrink",void 0);I([z("nowrap"),$()],L.prototype,"wrap",void 0);I([z("start"),$()],L.prototype,"justifyContent",void 0);I([z("normal"),$()],L.prototype,"alignContent",void 0);I([z("stretch"),$()],L.prototype,"alignItems",void 0);I([z("auto"),$()],L.prototype,"alignSelf",void 0);I([z(0),qt({x:"columnGap",y:"rowGap"})],L.prototype,"gap",void 0);I([ne("font-family"),$()],L.prototype,"fontFamily",void 0);I([ne("font-size",parseFloat),$()],L.prototype,"fontSize",void 0);I([ne("font-style"),$()],L.prototype,"fontStyle",void 0);I([ne("font-weight",parseInt),$()],L.prototype,"fontWeight",void 0);I([ne("line-height",parseFloat),$()],L.prototype,"lineHeight",void 0);I([ne("letter-spacing",s=>s==="normal"?0:parseFloat(s)),$()],L.prototype,"letterSpacing",void 0);I([ne("white-space",s=>s==="pre"?"pre":s==="normal"),$()],L.prototype,"textWrap",void 0);I([z("inherit"),$()],L.prototype,"textDirection",void 0);I([ne("text-align"),$()],L.prototype,"textAlign",void 0);I([z({x:null,y:null}),qt({x:"width",y:"height"})],L.prototype,"size",void 0);I([wt()],L.prototype,"tweenWidth",null);I([wt()],L.prototype,"tweenHeight",null);I([F()],L.prototype,"desiredSize",null);I([wt()],L.prototype,"tweenSize",null);I([qt("offset")],L.prototype,"offset",void 0);I([Wt(gt.Middle)],L.prototype,"middle",void 0);I([Wt(gt.Top)],L.prototype,"top",void 0);I([Wt(gt.Bottom)],L.prototype,"bottom",void 0);I([Wt(gt.Left)],L.prototype,"left",void 0);I([Wt(gt.Right)],L.prototype,"right",void 0);I([Wt(gt.TopLeft)],L.prototype,"topLeft",void 0);I([Wt(gt.TopRight)],L.prototype,"topRight",void 0);I([Wt(gt.BottomLeft)],L.prototype,"bottomLeft",void 0);I([Wt(gt.BottomRight)],L.prototype,"bottomRight",void 0);I([z(!1),$()],L.prototype,"clip",void 0);I([z(0),$()],L.prototype,"sizeLockCounter",void 0);I([F()],L.prototype,"parentTransform",null);I([F()],L.prototype,"anchorPosition",null);I([F()],L.prototype,"layoutEnabled",null);I([F()],L.prototype,"isLayoutRoot",null);I([F()],L.prototype,"scalingRotationMatrix",null);I([F()],L.prototype,"computedPosition",null);I([F()],L.prototype,"computedSize",null);I([F()],L.prototype,"requestLayoutUpdate",null);I([F()],L.prototype,"appendedToView",null);I([F()],L.prototype,"updateLayout",null);I([F()],L.prototype,"layoutChildren",null);I([F()],L.prototype,"requestFontUpdate",null);I([F()],L.prototype,"applyFlex",null);I([F()],L.prototype,"applyFont",null);function Wt(s){return(t,e)=>{$()(t,e),Le(!1)(t,e);const r=fe(t,e);r.getter=function(){return this.getOriginDelta(s).transformAsPoint(this.localToParent())},r.setter=function(a){return this.position($e(a,o=>this.getOriginDelta(s).transform(this.scalingRotationMatrix()).flipped.add(o))),this}}}qe(L.prototype,s=>{s.element=document.createElement("div"),s.element.style.display="flex",s.element.style.boxSizing="border-box",s.styles=getComputedStyle(s.element)});var xt=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class mt extends L{rippleSize(){return du(this.rippleStrength(),0,50)}constructor(t){super(t),this.rippleStrength=Te(0)}applyText(t){t.direction=this.textDirection(),this.element.dir=this.textDirection()}applyStyle(t){t.fillStyle=Jr(this.fill(),t),t.strokeStyle=Jr(this.stroke(),t),t.lineWidth=this.lineWidth(),t.lineJoin=this.lineJoin(),t.lineCap=this.lineCap(),t.setLineDash(this.lineDash()),t.lineDashOffset=this.lineDashOffset(),this.antialiased()||(t.filter="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxmaWx0ZXIgaWQ9ImZpbHRlciIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVDb21wb25lbnRUcmFuc2Zlcj48ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPjxmZUZ1bmNHIHR5cGU9ImlkZW50aXR5Ii8+PGZlRnVuY0IgdHlwZT0iaWRlbnRpdHkiLz48ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAgMSIvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48L3N2Zz4=#filter)")}draw(t){this.drawShape(t),this.clip()&&t.clip(this.getPath()),this.drawChildren(t)}drawShape(t){const e=this.getPath(),r=this.lineWidth()>0&&this.stroke()!==null,a=this.fill()!==null;t.save(),this.applyStyle(t),this.drawRipple(t),this.strokeFirst()?(r&&t.stroke(e),a&&t.fill(e)):(a&&t.fill(e),r&&t.stroke(e)),t.restore()}getCacheBBox(){return super.getCacheBBox().expand(this.lineWidth()/2)}getPath(){return new Path2D}getRipplePath(){return new Path2D}drawRipple(t){const e=this.rippleStrength();if(e>0){const r=this.getRipplePath();t.save(),t.globalAlpha*=V(.54,0,e),t.fill(r),t.restore()}}*ripple(t=1){this.rippleStrength(0),yield*this.rippleStrength(1,t,gu),this.rippleStrength(0)}}xt([gi()],mt.prototype,"fill",void 0);xt([gi()],mt.prototype,"stroke",void 0);xt([z(!1),$()],mt.prototype,"strokeFirst",void 0);xt([z(0),$()],mt.prototype,"lineWidth",void 0);xt([z("miter"),$()],mt.prototype,"lineJoin",void 0);xt([z("butt"),$()],mt.prototype,"lineCap",void 0);xt([z([]),$()],mt.prototype,"lineDash",void 0);xt([z(0),$()],mt.prototype,"lineDashOffset",void 0);xt([z(!0),$()],mt.prototype,"antialiased",void 0);xt([F()],mt.prototype,"rippleSize",null);xt([F()],mt.prototype,"getPath",null);xt([wt()],mt.prototype,"ripple",null);var Ot=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class St extends mt{desiredSize(){return this.childrenBBox().size}constructor(t){super(t),this.canHaveSubpath=!1}percentageToDistance(t){return dt(0,this.baseArcLength(),this.startOffset()+this.offsetArcLength()*t)}distanceToPercentage(t){return(t-this.startOffset())/this.offsetArcLength()}baseArcLength(){return this.profile().arcLength}offsetArcLength(){const t=this.startOffset(),e=this.endOffset(),r=this.baseArcLength();return dt(0,r,r-t-e)}arcLength(){return this.offsetArcLength()*Math.abs(this.start()-this.end())}completion(){return Math.abs(this.start()-this.end())}processSubpath(t,e,r){}curveDrawingInfo(){const t=new Path2D;let e=new Path2D;const r=this.profile();let a=this.percentageToDistance(this.start()),o=this.percentageToDistance(this.end());a>o&&([a,o]=[o,a]);const h=o-a,c=Math.min(h/2,this.arrowSize());this.startArrow()&&(a+=c/2),this.endArrow()&&(o-=c/2);let m=0,w=null,P=null,O=null,K=null;for(const ct of r.segments){const Rt=m;if(m+=ct.arcLength,mo)break}return this.closed()&&this.start.isInitial()&&this.end.isInitial()&&this.startOffset.isInitial()&&this.endOffset.isInitial()&&e.closePath(),this.processSubpath(e,w,O),t.addPath(e),{startPoint:w??v.zero,startTangent:P??v.right,endPoint:O??v.zero,endTangent:K??v.right,arrowSize:c,path:t,startOffset:a}}getPointAtDistance(t){return Ks(this.profile(),t+this.startOffset())}getPointAtPercentage(t){return Ks(this.profile(),this.percentageToDistance(t))}getComputedLayout(){return this.offsetComputedLayout(super.getComputedLayout())}offsetComputedLayout(t){return t.position=t.position.sub(this.childrenBBox().center),t}getPath(){return this.curveDrawingInfo().path}getCacheBBox(){const t=this.childrenBBox(),e=this.startArrow()||this.endArrow()?this.arrowSize():0,r=this.lineWidth(),a=this.lineWidthCoefficient();return t.expand(Math.max(0,e,r*a))}lineWidthCoefficient(){return this.lineCap()==="square"?.5*1.4143:.5}requiresProfile(){return!this.start.isInitial()||!this.startOffset.isInitial()||!this.startArrow.isInitial()||!this.end.isInitial()||!this.endOffset.isInitial()||!this.endArrow.isInitial()}drawShape(t){super.drawShape(t),(this.startArrow()||this.endArrow())&&this.drawArrows(t)}drawArrows(t){const{startPoint:e,startTangent:r,endPoint:a,endTangent:o,arrowSize:h}=this.curveDrawingInfo();h<.001||(t.save(),t.beginPath(),this.endArrow()&&this.drawArrow(t,a,o.flipped,h),this.startArrow()&&this.drawArrow(t,e,r,h),t.fillStyle=Jr(this.stroke(),t),t.closePath(),t.fill(),t.restore())}drawArrow(t,e,r,a){const o=r.perpendicular,h=e.add(r.scale(-a/2));ur(t,h),jt(t,h.add(r.add(o).scale(a))),jt(t,h.add(r.sub(o).scale(a))),jt(t,h),t.closePath()}}Ot([z(!1),$()],St.prototype,"closed",void 0);Ot([z(0),$()],St.prototype,"start",void 0);Ot([z(0),$()],St.prototype,"startOffset",void 0);Ot([z(!1),$()],St.prototype,"startArrow",void 0);Ot([z(1),$()],St.prototype,"end",void 0);Ot([z(0),$()],St.prototype,"endOffset",void 0);Ot([z(!1),$()],St.prototype,"endArrow",void 0);Ot([z(24),$()],St.prototype,"arrowSize",void 0);Ot([F()],St.prototype,"arcLength",null);Ot([F()],St.prototype,"curveDrawingInfo",null);class cr{}class Ju extends cr{constructor(t,e,r,a,o){super(),this.center=t,this.radius=e,this.from=r,this.to=a,this.counter=o,this.angle=Math.acos(dt(-1,1,r.dot(a))),this.length=Math.abs(this.angle*e);const h=new v(1,1).scale(e);this.points=[t.sub(h),t.add(h)]}get arcLength(){return this.length}draw(t,e,r){const a=this.counter?-1:1,o=this.from.radians+e*this.angle*a,h=this.to.radians-(1-r)*this.angle*a;Math.abs(this.angle)>1e-4&&t.arc(this.center.x,this.center.y,this.radius,o,h,this.counter);const c=v.fromRadians(o),m=v.fromRadians(h);return[{position:this.center.add(c.scale(this.radius)),tangent:this.counter?c:c.flipped,normal:this.counter?c.flipped:c},{position:this.center.add(m.scale(this.radius)),tangent:this.counter?m.flipped:m,normal:this.counter?m.flipped:m}]}getPoint(t){const e=this.counter?-1:1,r=this.from.radians+t*this.angle*e,a=v.fromRadians(r);return{position:this.center.add(a.scale(this.radius)),tangent:this.counter?a:a.flipped,normal:this.counter?a:a.flipped}}}class Qu{constructor(t,e=20){this.curve=t,this.sampledDistances=[],this.resample(e)}resample(t){this.sampledDistances=[0];let e=0,r=this.curve.eval(0).position;for(let a=1;a=a&&t<=o)return pu(a,o,r/(e-1),(r+1)/(e-1),t)}return 1}}class Vu extends cr{get arcLength(){return this.length}constructor(t,e){super(),this.curve=t,this.length=e,this.pointSampler=new Qu(this)}getBBox(){return this.curve.getBounds()}eval(t){const e=this.tangent(t);return{position:this.curve.eval(t),tangent:e,normal:e.perpendicular}}getPoint(t){const e=this.pointSampler.pointAtDistance(this.arcLength*t);return{position:e.position,tangent:e.tangent,normal:e.tangent.perpendicular}}transformPoints(t){return this.points.map(e=>e.transformAsPoint(t))}tangent(t){return this.curve.evalDerivative(t).normalized}draw(t,e=0,r=1,a=!0){let o=null,h=e,c=r,m=this.points;if(e!==0||r!==1){const O=this.length*e,K=this.length*r;h=this.pointSampler.distanceToT(O),c=this.pointSampler.distanceToT(K);const ct=(c-h)/(1-h),[,Rt]=this.split(h);[o]=Rt.split(ct),m=o.points}a&&ur(t,m[0]),(o??this).doDraw(t);const w=this.tangent(h),P=this.tangent(c);return[{position:m[0],tangent:w,normal:w.perpendicular},{position:m.at(-1),tangent:P,normal:P.perpendicular}]}}class ft{static constant(t){return new ft(t)}static linear(t,e){return new ft(t,e)}static quadratic(t,e,r){return new ft(t,e,r)}static cubic(t,e,r,a){return new ft(t,e,r,a)}get degree(){return this.c3!==0?3:this.c2!==0?2:this.c1!==0?1:0}constructor(t,e,r,a){this.c0=t,this.c1=e??0,this.c2=r??0,this.c3=a??0}differentiate(t=1){switch(t){case 0:return this;case 1:return new ft(this.c1,2*this.c2,3*this.c3,0);case 2:return new ft(2*this.c2,6*this.c3,0,0);case 3:return new ft(6*this.c3,0,0,0);default:throw new Error("Unsupported derivative")}}eval(t,e=0){return e!==0?this.differentiate(e).eval(t):this.c3*(t*t*t)+this.c2*(t*t)+this.c1*t+this.c0}split(t){const e=1-t,r=new ft(this.c0,this.c1*t,this.c2*t*t,this.c3*t*t*t),a=new ft(this.eval(0),e*this.differentiate(1).eval(t),e*e/2*this.differentiate(2).eval(t),e*e*e/6*this.differentiate(3).eval(t));return[r,a]}roots(){switch(this.degree){case 3:return this.solveCubicRoots();case 2:return this.solveQuadraticRoots();case 1:return this.solveLinearRoot();case 0:return[];default:throw new Error(`Unsupported polynomial degree: ${this.degree}`)}}localExtrema(){return this.differentiate().roots()}localExtrema01(){const t=this.localExtrema(),e=[];for(let r=0;r=0&&a<=1&&e.push(t[r])}return e}outputRange01(){let t=[this.eval(0),this.eval(1)];const e=r=>{t[1]>t[0]?t=[Math.min(t[0],r),Math.max(t[1],r)]:t=[Math.min(t[1],r),Math.max(t[0],r)]};return this.localExtrema01().forEach(r=>e(this.eval(r))),t}solveCubicRoots(){const t=this.c0,e=this.c1,r=this.c2,a=this.c3,o=t*t,h=t*r,c=e*e,m=(3*h-c)/(3*o),w=(2*c*e-9*h*e+27*o*a)/(27*o*t),P=this.solveDepressedCubicRoots(m,w),O=K=>K-e/(3*t);switch(P.length){case 1:return[O(P[0])];case 2:return[O(P[0]),O(P[1])];case 3:return[O(P[0]),O(P[1]),O(P[2])];default:return[]}}solveDepressedCubicRoots(t,e){if(this.almostZero(t))return[Math.cbrt(-e)];const r=Math.PI*2,a=4*t*t*t+27*e*e;if(a<1e-5){const o=2*Math.sqrt(-t/3),h=3*e/(2*t)*Math.sqrt(-3/t),c=m=>o*Math.cos(1/3*Math.acos(dt(-1,1,h))-r/3*m);return h>=.9999?[c(0),c(2)]:h<=-.9999?[c(1),c(2)]:[c(0),c(1),c(2)]}if(a>0&&t<0){const o=.3333333333333333*Math.acosh(-3*Math.abs(e)/(2*t)*Math.sqrt(-3/t));return[-2*Math.sign(e)*Math.sqrt(-t/3)*Math.cosh(o)]}if(t>0){const o=.3333333333333333*Math.asinh(3*e/(2*t)*Math.sqrt(3/t));return[-2*Math.sqrt(t/3)*Math.sinh(o)]}return[]}solveQuadraticRoots(){const t=this.c2,e=this.c1,r=this.c0,a=e*e-4*t*r;if(this.almostZero(a))return[-e/(2*t)];if(a>=0){const o=Math.sqrt(a),h=(-e-o)/(2*t),c=(-e+o)/(2*t);return[Math.min(h,c),Math.max(h,c)]}return[]}solveLinearRoot(){return[-this.c0/this.c1]}almostZero(t){return Math.abs(0-t)<=Number.EPSILON}}class Be{constructor(t,e,r,a){this.c0=t,this.c1=e,this.c2=r,this.c3=a,t instanceof ft?(this.x=t,this.y=e):a!==void 0?(this.x=new ft(t.x,e.x,r.x,a.x),this.y=new ft(t.y,e.y,r.y,a.y)):(this.x=new ft(t.x,e.x,r.x),this.y=new ft(t.y,e.y,r.y))}eval(t,e=0){return new v(this.x.differentiate(e).eval(t),this.y.differentiate(e).eval(t))}split(t){const[e,r]=this.x.split(t),[a,o]=this.y.split(t);return[new Be(e,a),new Be(r,o)]}differentiate(t=1){return new Be(this.x.differentiate(t),this.y.differentiate(t))}evalDerivative(t){return this.differentiate().eval(t)}getBounds(){const t=this.x.outputRange01(),e=this.y.outputRange01();return Y.fromPoints(new v(Math.min(...t),Math.max(...e)),new v(Math.max(...t),Math.min(...e)))}}var Ku=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Ut extends Vu{get points(){return[this.p0,this.p1,this.p2,this.p3]}constructor(t,e,r,a){super(new Be(t,t.flipped.add(e).scale(3),t.scale(3).sub(e.scale(6)).add(r.scale(3)),t.flipped.add(e.scale(3)).sub(r.scale(3)).add(a)),Ut.getLength(t,e,r,a)),this.p0=t,this.p1=e,this.p2=r,this.p3=a}split(t){const e=new v(this.p0.x+(this.p1.x-this.p0.x)*t,this.p0.y+(this.p1.y-this.p0.y)*t),r=new v(this.p1.x+(this.p2.x-this.p1.x)*t,this.p1.y+(this.p2.y-this.p1.y)*t),a=new v(this.p2.x+(this.p3.x-this.p2.x)*t,this.p2.y+(this.p3.y-this.p2.y)*t),o=new v(e.x+(r.x-e.x)*t,e.y+(r.y-e.y)*t),h=new v(r.x+(a.x-r.x)*t,r.y+(a.y-r.y)*t),c=new v(o.x+(h.x-o.x)*t,o.y+(h.y-o.y)*t),m=new Ut(this.p0,e,o,c),w=new Ut(c,h,a,this.p3);return[m,w]}doDraw(t){Gu(t,this.p1,this.p2,this.p3)}static getLength(t,e,r,a){return Ut.el.setAttribute("d",`M ${t.x} ${t.y} C ${e.x} ${e.y} ${r.x} ${r.y} ${a.x} ${a.y}`),Ut.el.getTotalLength()}}Ku([rn(()=>document.createElementNS("http://www.w3.org/2000/svg","path"))],Ut,"el",void 0);class Ce extends cr{constructor(t,e){super(),this.from=t,this.to=e,this.vector=e.sub(t),this.length=this.vector.magnitude,this.normal=this.vector.perpendicular.normalized.safe,this.points=[t,e]}get arcLength(){return this.length}draw(t,e=0,r=1,a=!1){const o=this.from.add(this.vector.scale(e)),h=this.from.add(this.vector.scale(r));return a&&ur(t,o),jt(t,h),[{position:o,tangent:this.normal.flipped,normal:this.normal},{position:h,tangent:this.normal,normal:this.normal}]}getPoint(t){return{position:this.from.add(this.vector.scale(t)),tangent:this.normal.flipped,normal:this.normal}}}function tc(s,t,e,r){const a={arcLength:0,segments:[],minSin:1},o=Jt(t.top,t.right,t.left,s),h=Jt(t.right,t.top,t.bottom,s),c=Jt(t.bottom,t.left,t.right,s),m=Jt(t.left,t.bottom,t.top,s);let w=new v(s.left+o,s.top),P=new v(s.right-h,s.top);return Pe(a,new Ce(w,P)),w=new v(s.right,s.top+h),P=new v(s.right,s.bottom-c),h>0&&nr(a,w.addX(-h),h,v.down,v.right,e,r),Pe(a,new Ce(w,P)),w=new v(s.right-c,s.bottom),P=new v(s.left+m,s.bottom),c>0&&nr(a,w.addY(-c),c,v.right,v.up,e,r),Pe(a,new Ce(w,P)),w=new v(s.left,s.bottom-m),P=new v(s.left,s.top+o),m>0&&nr(a,w.addX(m),m,v.up,v.left,e,r),Pe(a,new Ce(w,P)),w=new v(s.left+o,s.top),o>0&&nr(a,w.addY(o),o,v.left,v.down,e,r),a}function Pe(s,t){s.segments.push(t),s.arcLength+=t.arcLength}function nr(s,t,e,r,a,o,h){const c=t.add(r.scale(e)),m=t.add(a.scale(e));o?Pe(s,new Ut(c,c.add(a.scale(h*e)),m.add(r.scale(h*e)),m)):Pe(s,new Ju(t,e,r,a,!1))}var fr=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class He extends St{constructor(t){super(t)}profile(){return tc(this.childrenBBox(),this.radius(),this.smoothCorners(),this.cornerSharpness())}desiredSize(){return{x:this.width.context.getter(),y:this.height.context.getter()}}offsetComputedLayout(t){return t}childrenBBox(){return Y.fromSizeCentered(this.computedSize())}getPath(){if(this.requiresProfile())return this.curveDrawingInfo().path;const t=new Path2D,e=this.radius(),r=this.smoothCorners(),a=this.cornerSharpness(),o=Y.fromSizeCentered(this.size());return ei(t,o,e,r,a),t}getCacheBBox(){return super.getCacheBBox().expand(this.rippleSize())}getRipplePath(){const t=new Path2D,e=this.rippleSize(),r=this.radius().addScalar(e),a=this.smoothCorners(),o=this.cornerSharpness(),h=Y.fromSizeCentered(this.size()).expand(e);return ei(t,h,r,a,o),t}}fr([cn("radius")],He.prototype,"radius",void 0);fr([z(!1),$()],He.prototype,"smoothCorners",void 0);fr([z(.6),$()],He.prototype,"cornerSharpness",void 0);fr([F()],He.prototype,"profile",null);var fn=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class pe extends He{constructor(t){super({composite:!0,fontFamily:"Roboto",fontSize:48,lineHeight:"120%",textWrap:!1,fontStyle:"normal",...t}),this.view2D=this,pe.shadowRoot.append(this.element),this.applyFlex()}transformContext(){}dispose(){this.removeChildren(),super.dispose()}render(t){this.computedSize(),this.computedPosition(),super.render(t)}requestLayoutUpdate(){this.updateLayout()}requestFontUpdate(){this.applyFont()}view(){return this}}fn([z(je.Paused),$()],pe.prototype,"playbackState",void 0);fn([$()],pe.prototype,"assetHash",void 0);fn([rn(()=>{const s="motion-canvas-2d-frame";let t=document.querySelector(`#${s}`);return t||(t=document.createElement("div"),t.id=s,t.style.position="absolute",t.style.pointerEvents="none",t.style.top="0",t.style.left="0",t.style.opacity="0",t.style.overflow="hidden",document.body.prepend(t)),t.shadowRoot??t.attachShadow({mode:"open"})})],pe,"shadowRoot",void 0);var ec=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Me extends cr{constructor(t,e,r,a,o,h){super(),this.startPoint=t,this.radius=e,this.xAxisRotationDegree=r,this.largeArcFlag=a,this.sweepFlag=o,this.endPoint=h,this.xAxisRotation=this.xAxisRotationDegree*Zt,this.radius=new v(Math.abs(e.x),Math.abs(e.y));const c=t.sub(h).div(2).transform(tt.fromRotation(-r).domMatrix),m=c.x*c.x/(e.x*e.x)+c.y*c.y/(e.y*e.y);if(m>1){const ct=Math.sqrt(m);e.x=ct*e.x,e.y=ct*e.y}const w=new v(e.ctg*c.y,e.perpendicular.ctg*c.x).scale(Math.sqrt(1/(c.x*c.x/(e.x*e.x)+c.y*c.y/(e.y*e.y))-1)*(a===o?-1:1));this.xAxisRotationMatrix=tt.fromRotation(r).domMatrix,this.center=w.transform(this.xAxisRotationMatrix).add(t.add(h).div(2));const P=c.sub(w).div(e),O=c.scale(-1).sub(w).div(e);this.startAngle=P.radians,this.deltaAngle=v.angleBetween(P,O)%(Math.PI*2),this.sweepFlag===0&&this.deltaAngle>0&&(this.deltaAngle-=Math.PI*2),this.sweepFlag===1&&this.deltaAngle<0&&(this.deltaAngle+=Math.PI*2),Me.el.setAttribute("d",`M ${this.startPoint.x} ${this.startPoint.y} A ${this.radius.x} ${this.radius.y} ${this.xAxisRotationDegree} ${this.largeArcFlag} ${this.sweepFlag} ${this.endPoint.x} ${this.endPoint.y}`),this.length=Me.el.getTotalLength();const K=new Y(Me.el.getBBox());this.points=[K.topLeft,K.bottomRight]}getAnglePosition(t){return this.radius.mul(v.fromRadians(t)).transform(this.xAxisRotationMatrix).add(this.center)}getAngleDerivative(t){return new v(-this.radius.x*Math.sin(t),this.radius.y*Math.cos(t)).transform(this.xAxisRotationMatrix)}draw(t,e,r,a){const o=this.startAngle+this.deltaAngle*e,h=this.startAngle+this.deltaAngle*r,c=this.getPoint(e),m=this.getPoint(r);return a&&t.moveTo(c.position.x,c.position.y),t.ellipse(this.center.x,this.center.y,this.radius.x,this.radius.y,this.xAxisRotation,o,h,this.sweepFlag===0),[c,m]}getPoint(t){const e=this.startAngle+t*this.deltaAngle,r=this.getAngleDerivative(e).normalized;return{position:t===0?this.startPoint:t===1?this.endPoint:this.getAnglePosition(e),tangent:r,normal:r.perpendicular}}get arcLength(){return this.length}}ec([rn(()=>{const s=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");return s.appendChild(t),pe.shadowRoot.appendChild(s),t})],Me,"el",void 0);function rc(s,t,e,r,a=!1){const o={arcLength:0,minSin:1,segments:[]};if(et+Math.PI*2){const P=Math.floor((e-t)/(Math.PI*2));e-=Math.PI*2*P}const h=(t+e)/2,c=s.mul(v.fromRadians(t)),m=s.mul(v.fromRadians(e)),w=s.mul(v.fromRadians(h)).scale(a?-1:1);return r&&Qr(o,new Ce(v.zero,c)),ri(o,s,c,w,t,h,a),ri(o,s,w,m,h,e,a),r&&Qr(o,new Ce(m,v.zero)),o}function Qr(s,t){s.segments.push(t),s.arcLength+=t.arcLength}function ri(s,t,e,r,a,o,h){const c=Math.abs(a-o)<=180?1:0,m=a>o?0:1,w=h?0:1;Qr(s,new Me(e,t,0,0,c^w^m,r))}var pr=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Xe extends St{constructor(t){super(t)}profile(){return rc(this.size().scale(.5),this.startAngle()*Zt,this.endAngle()*Zt,this.closed(),this.counterclockwise())}desiredSize(){return{x:this.width.context.getter(),y:this.height.context.getter()}}offsetComputedLayout(t){return t}childrenBBox(){return Y.fromSizeCentered(this.computedSize())}getPath(){return this.requiresProfile()?this.curveDrawingInfo().path:this.createPath()}getRipplePath(){return this.createPath(this.rippleSize())}getCacheBBox(){return super.getCacheBBox().expand(this.rippleSize())}createPath(t=0){const e=new Path2D,r=this.startAngle()*Zt;let a=this.endAngle()*Zt;const o=this.size().scale(.5).add(t),h=this.closed();if(a>r+Math.PI*2){const c=Math.floor((a-r)/(Math.PI*2));a-=Math.PI*2*c}return h&&e.moveTo(0,0),e.ellipse(0,0,o.x,o.y,0,r,a,this.counterclockwise()),h&&e.closePath(),e}}pr([z(0),$()],Xe.prototype,"startAngle",void 0);pr([z(360),$()],Xe.prototype,"endAngle",void 0);pr([z(!1),$()],Xe.prototype,"counterclockwise",void 0);pr([F()],Xe.prototype,"profile",null);class nc extends lu{constructor(t){super(t),this.view=null,this.registeredNodes={},this.nodeCounters={},this.assetHash=Date.now().toString(),this.recreateView()}getView(){return this.view}next(){var t;return(t=this.getView())==null||t.playbackState(this.playback.state),super.next()}draw(t){t.save(),this.renderLifecycle.dispatch([zt.BeforeRender,t]),t.save(),this.renderLifecycle.dispatch([zt.BeginRender,t]),this.getView().playbackState(this.playback.state),this.getView().render(t),this.renderLifecycle.dispatch([zt.FinishRender,t]),t.restore(),this.renderLifecycle.dispatch([zt.AfterRender,t]),t.restore()}reset(t){for(const e in this.registeredNodes)try{this.registeredNodes[e].dispose()}catch(r){this.logger.error(r)}return this.registeredNodes={},this.nodeCounters={},this.recreateView(),super.reset(t)}inspectPosition(t,e){return this.execute(()=>{var r;return((r=this.getView().hit(new v(t,e).scale(this.resolutionScale)))==null?void 0:r.key)??null})}validateInspection(t){var e;return((e=this.getNode(t))==null?void 0:e.key)??null}inspectAttributes(t){const e=this.getNode(t);if(!e)return null;const r={stack:e.creationStack,key:e.key};for(const{key:a,meta:o,signal:h}of e)o.inspectable&&(r[a]=h());return r}drawOverlay(t,e,r){const a=this.getNode(t);a&&this.execute(()=>{a.drawOverlay(r,e.scale(1/this.resolutionScale,1/this.resolutionScale).multiplySelf(a.localToWorld()))})}transformMousePosition(t,e){return new v(t,e).scale(this.resolutionScale).transformAsPoint(this.getView().localToParent().inverse())}registerNode(t,e){var h;var r;const a=((h=t.constructor)==null?void 0:h.name)??"unknown";(r=this.nodeCounters)[a]??(r[a]=0);const o=this.nodeCounters[a]++;return e??(e=`${this.name}/${a}[${o}]`),this.registeredNodes[e]=t,e}getNode(t){return typeof t!="string"?null:this.registeredNodes[t]??null}recreateView(){this.execute(()=>{const t=this.getSize();this.view=new pe({position:t.scale(this.resolutionScale/2),scale:this.resolutionScale,assetHash:this.assetHash,size:t})})}}function sc(s){return{klass:nc,config:s,stack:new Error().stack,meta:hu()}}const le=sc(function*(s){const t=uu();s.add(Fu(Xe,{ref:t,x:-300,width:140,height:140,fill:"#e13238"})),yield*Ee(t().position.x(300,1).to(-300,1),t().fill("#e6a700",1).to("#e13238",1))});le.name="example";Iu.attach(le.meta);le.onReplaced??(le.onReplaced=new te(le.config));const ic={scenes:[le]},vi=new Nt("settings","\0settings");vi.loadData({version:1,appearance:{color:"rgb(51,166,255)",font:!1,coordinates:!0},defaults:{background:null,size:{x:1920,y:1080}}});const ac=Tu("project",{core:"3.11.0",two:"3.11.0",ui:"3.11.0",vitePlugin:"3.11.0"},[],ic,zu,vi);export{ac as default}; diff --git a/dist/assets/index-d983fe7f.js b/dist/assets/index-d983fe7f.js new file mode 100644 index 0000000..de39a6c --- /dev/null +++ b/dist/assets/index-d983fe7f.js @@ -0,0 +1,23 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const n of a.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&i(n)}).observe(document,{childList:!0,subtree:!0});function t(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=t(r);fetch(r.href,a)}})();const me="modulepreload",be=function(s){return"/"+s},J={},we=function(e,t,i){if(!t||t.length===0)return e();const r=document.getElementsByTagName("link");return Promise.all(t.map(a=>{if(a=be(a),a in J)return;J[a]=!0;const n=a.endsWith(".css"),h=n?'[rel="stylesheet"]':"";if(!!i)for(let d=r.length-1;d>=0;d--){const v=r[d];if(v.href===a&&(!n||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${h}`))return;const o=document.createElement("link");if(o.rel=n?"stylesheet":me,n||(o.as="script",o.crossOrigin=""),o.href=a,document.head.appendChild(o),n)return new Promise((d,v)=>{o.addEventListener("load",d),o.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>e()).catch(a=>{const n=new Event("vite:preloadError",{cancelable:!0});if(n.payload=a,window.dispatchEvent(n),!n.defaultPrevented)throw a})};class N{constructor(){this.subscribable=new he(this),this.subscribers=new Set}subscribe(e){return this.subscribers.add(e),()=>this.unsubscribe(e)}unsubscribe(e){this.subscribers.delete(e)}clear(){this.subscribers.clear()}notifySubscribers(e){return[...this.subscribers].map(t=>t(e))}}class he{constructor(e){this.dispatcher=e}subscribe(e){return this.dispatcher.subscribe(e)}unsubscribe(e){this.dispatcher.unsubscribe(e)}}class xe extends N{async dispatch(e){await Promise.all(this.notifySubscribers(e))}}class Se extends N{dispatch(e){this.notifySubscribers(e)}}class ke extends N{constructor(){super(...arguments),this.value=!1}raise(){this.value||(this.value=!0,this.notifySubscribers())}reset(){this.value=!1}isRaised(){return this.value}subscribe(e){const t=super.subscribe(e);return this.value&&e(),t}}class M extends N{get current(){return this.value}set current(e){this.value=e,this.notifySubscribers(e)}constructor(e){super(),this.value=e,this.subscribable=new Me(this)}subscribe(e,t=!0){const i=super.subscribe(e);return t&&e(this.value),i}}class Me extends he{get current(){return this.dispatcher.current}subscribe(e,t=!0){return this.dispatcher.subscribe(e,t)}}const le=[];function Pe(){const s=le.at(-1);if(!s)throw new Error("The scene is not available in the current context.");return s}function ue(){var s;return((s=le.at(-1))==null?void 0:s.logger)??console}class oe extends Error{constructor(e,t){super(e),this.remarks=t}}const Te=[];function j(){const s=Te.at(-1);if(!s)throw new oe("The thread is not available in the current context.",`

useThread() can only be called from within generator functions. + It's not available during rendering.

+`);return s}function Ee(s){return{message:s.message,stack:s.stack,remarks:s.remarks}}function T(s,e=document.createElement("canvas")){const t=e.getContext("2d",s);if(!t)throw new Error("Could not create a 2D context.");return t}const Ie=180/Math.PI,q=Math.PI/180;class Re{constructor(){this.resolveCurrent=null,this.current=null}async acquire(){for(;this.current;)await this.current;this.current=new Promise(e=>{this.resolveCurrent=e})}release(){var e;this.current=null,(e=this.resolveCurrent)==null||e.call(this),this.resolveCurrent=null}}const Ce=[];function Le(){const s=Ce.at(-1);if(!s)throw new Error("The playback is not available in the current context.");return s}function F(s,...e){const t={[s.name]:s},i=Object.getOwnPropertyDescriptor(t,s.name);if(i)for(let r=e.length-1;r>=0;r--)e[r](t,s.name,i)}function Y(s){return function(e,t,i){i.value.prototype.name=s??t,i.value.prototype.threadable=!0}}function Q(s,e){const t=Object.getPrototypeOf(s);t.threadable||(t.threadable=!0,t.name=typeof e=="string"?e:Ae(e))}function Ae(s){return Object.getPrototypeOf(s).name??null}var R;(function(s){s[s.Playing=0]="Playing",s[s.Rendering=1]="Rendering",s[s.Paused=2]="Paused",s[s.Presenting=3]="Presenting"})(R||(R={}));class Ne{constructor(){this.frame=0,this.speed=1,this.fps=30,this.duration=0,this.finished=!1,this.slides=[],this.previousScene=null,this.state=R.Paused,this.currentSceneReference=null,this.scenes=new M([])}get onSceneChanged(){if(this.currentSceneReference===null)throw new Error("PlaybackManager has not been properly initialized");return this.currentSceneReference.subscribable}get onScenesRecalculated(){return this.scenes.subscribable}get currentScene(){if(this.currentSceneReference===null)throw new Error("PlaybackManager has not been properly initialized");return this.currentSceneReference.current}set currentScene(e){if(!e)throw new Error("Invalid scene.");this.currentSceneReference??(this.currentSceneReference=new M(e)),this.currentSceneReference.current=e}setup(e){this.scenes.current=e,this.currentScene=e[0]}async progress(){return this.finished=await this.next(),this.finished}async seek(e){if(e<=this.frame||this.currentScene.isCached()&&this.currentScene.lastFrame=e&&(this.previousScene=null,this.frame=this.currentScene.firstFrame,await this.currentScene.reset())}for(this.finished=!1;this.framet.id===e))}async seekSlide(e=null){if(!e)return;const{id:t,scene:i}=e;for((this.currentScene!==i||this.currentScene.slides.didHappen(t))&&(this.previousScene=null,this.currentScene=i,this.frame=this.currentScene.firstFrame,this.currentScene.slides.setTarget(t),await this.currentScene.reset()),this.finished=!1,this.currentScene.slides.setTarget(t);!this.currentScene.slides.isWaitingFor(t)&&!this.finished;)this.finished=await this.next();return this.currentScene.slides.setTarget(null),this.finished}async reset(){this.previousScene=null,this.currentScene=this.scenes.current[0],this.frame=0,await this.currentScene.reset()}reload(e){this.scenes.current.forEach(t=>t.reload(e))}async recalculate(){this.previousScene=null,this.slides=[];const e=this.speed;this.frame=0,this.speed=1;const t=[];try{for(const i of this.scenes.current)await i.recalculate(r=>{this.frame=r}),this.slides.push(...i.slides.onChanged.current),t.push(i)}finally{this.speed=e}this.scenes.current=t,this.duration=this.frame}async next(){if(this.previousScene&&(await this.previousScene.next(),this.currentScene.isFinished()&&(this.previousScene=null)),this.frame+=this.speed,this.currentScene.isFinished())return!0;if(await this.currentScene.next(),this.previousScene&&this.currentScene.isAfterTransitionIn()&&(this.previousScene=null),this.currentScene.canTransitionOut()){this.previousScene=this.currentScene;const e=this.getNextScene(this.previousScene);e&&(this.currentScene=e,await this.currentScene.reset(this.previousScene)),(!e||this.currentScene.isAfterTransitionIn())&&(this.previousScene=null)}return this.currentScene.isFinished()}findBestScene(e){let t=this.scenes.current[0];for(const i of this.scenes.current){if(!i.isCached()||i.lastFrame>e)return i;t=i}return t}getNextScene(e){const t=this.scenes.current;if(!e)return t[0];const i=t.findIndex(r=>r===e);return i<0?null:t[i+1]??null}}function ze(s){const e=Pe(),t=j();return e.timeEvents.register(s,t.time())}function w(s,e,t){return s+(e-s)*t}function Z(s,e,t){return te?e:t}function qe(s,e,t){let i=e;t>1?t=1/t:i=!i;const r=i?Math.acos(Z(-1,1,1-s)):Math.asin(s),a=w(r,w(0,Math.PI/2,s),t);let n=Math.sin(a),h=1-Math.cos(a);return e&&([n,h]=[h,n]),new l(n,h)}function Oe(s,e=0,t=1){return s=s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,w(e,t,s)}F(ce,Y());function*ce(s,e,t){const i=j(),r=i.time(),a=i.time()+s;for(e(0,0);a>i.fixed;){const n=i.fixed-r,h=n/s;n>0&&e(h,n),yield}i.time(a),e(1,s),t==null||t(1,s)}F(De,Y());function*De(s,e){yield*X(ze(s)),e&&(yield*e)}F(X,Y());function*X(s=0,e){const t=j(),i=Le().framesToSeconds(1),r=t.time()+s;for(;r-i>t.fixed;)yield;t.time(r),e&&(yield*e)}function U(s,e){let t;return typeof s=="string"?(t=e(),Q(t,s)):(t=s(),Q(t,t)),t}class m{static collectPromise(e,t=null){const i={promise:e,value:t,stack:new Error().stack},r=this.collectionStack.at(-1);return r&&(i.owner=r.owner),e.then(a=>{i.value=a,r==null||r.markDirty()}),this.promises.push(i),i}static hasPromises(){return this.promises.length>0}static async consumePromises(){const e=[...this.promises];return await Promise.all(e.map(t=>t.promise)),this.promises=this.promises.filter(t=>!e.includes(t)),e}constructor(e){this.owner=e,this.dependencies=new Set,this.event=new ke,this.markDirty=()=>this.event.raise(),this.invokable=this.invoke.bind(this),Object.defineProperty(this.invokable,"context",{value:this}),Object.defineProperty(this.invokable,"toPromise",{value:this.toPromise.bind(this)})}invoke(){}startCollecting(){if(m.collectionSet.has(this))throw new oe("A circular dependency occurred between signals.",`This can happen when signals reference each other in a loop. + Try using the attached stack trace to locate said loop.`);m.collectionSet.add(this),m.collectionStack.push(this)}finishCollecting(){if(m.collectionSet.delete(this),m.collectionStack.pop()!==this)throw new Error("collectStart/collectEnd was called out of order.")}clearDependencies(){this.dependencies.forEach(e=>e.unsubscribe(this.markDirty)),this.dependencies.clear()}collect(){const e=m.collectionStack.at(-1);e&&(e.dependencies.add(this.event.subscribable),this.event.subscribe(e.markDirty))}dispose(){this.clearDependencies(),this.event.clear(),this.owner=null}async toPromise(){do await m.consumePromises(),this.invokable();while(m.hasPromises());return this.invokable}}m.collectionSet=new Set;m.collectionStack=[];m.promises=[];function C(s){return typeof s=="function"}function Be(s,e){return C(s)?()=>e(s()):e(s)}function je(s){return C(s)?s():s}const K=Symbol.for("@motion-canvas/core/signals/default");class V extends m{constructor(e,t,i=void 0,r=n=>n,a={}){super(i),this.initial=e,this.interpolation=t,this.parser=r,Object.defineProperty(this.invokable,"reset",{value:this.reset.bind(this)}),Object.defineProperty(this.invokable,"save",{value:this.save.bind(this)}),Object.defineProperty(this.invokable,"isInitial",{value:this.isInitial.bind(this)}),this.initial!==void 0&&(this.current=this.initial,this.markDirty(),C(this.initial)||(this.last=this.parse(this.initial))),this.extensions={getter:this.getter.bind(this),setter:this.setter.bind(this),tweener:this.tweener.bind(this),...a}}toSignal(){return this.invokable}parse(e){return this.parser(e)}set(e){return this.extensions.setter(e),this.owner}setter(e){return e===K&&(e=this.initial),this.current===e?this.owner:(this.current=e,this.markDirty(),this.clearDependencies(),C(e)||(this.last=this.parse(e)),this.owner)}get(){return this.extensions.getter()}getter(){var e;if(this.event.isRaised()&&C(this.current)){this.clearDependencies(),this.startCollecting();try{this.last=this.parse(this.current())}catch(t){ue().error({...Ee(t),inspect:(e=this.owner)==null?void 0:e.key})}this.finishCollecting()}return this.event.reset(),this.collect(),this.last}invoke(e,t,i=Oe,r=this.interpolation){return e===void 0?this.get():t===void 0?this.set(e):this.createQueue(i,r).to(e,t)}createQueue(e,t){const i=this.get(),r=[],a=U("animation chain",function*(){for(;r.length>0;)yield*r.shift()});return a.to=(n,h,c=e,o=t)=>(e=c,t=o,r.push(this.tween(n,h,c,o)),a),a.back=(n,h=e,c=t)=>(e=h,t=c,r.push(this.tween(i,n,e,t)),a),a.wait=n=>(r.push(X(n)),a),a.run=n=>(r.push(n),a),a.do=n=>(r.push(U(function*(){n()})),a),a}*tween(e,t,i,r){e===K&&(e=this.initial),yield*this.extensions.tweener(e,t,i,r),this.set(e)}*tweener(e,t,i,r){const a=this.get();yield*ce(t,n=>{this.set(r(a,this.parse(je(e)),i(n)))})}dispose(){super.dispose(),this.initial=void 0,this.current=void 0,this.last=void 0}reset(){return this.initial!==void 0&&this.set(this.initial),this.owner}save(){return this.set(this.get())}isInitial(){return this.collect(),this.current===this.initial}raw(){return this.current}}class Fe extends V{constructor(e,t,i,r,a=void 0,n={}){var h;super(void 0,r,a,t,n),this.entries=e,this.signals=[],this.parser=t;for(const c of e){let o,d;Array.isArray(c)?([o,d]=c,(h=d.context).owner??(h.owner=this)):(o=c,d=new V(Be(i,v=>t(v)[c]),w,a??this.invokable).toSignal()),this.signals.push([o,d]),Object.defineProperty(this.invokable,o,{value:d})}}toSignal(){return this.invokable}parse(e){return this.parser(e)}getter(){return this.parse(Object.fromEntries(this.signals.map(([e,t])=>[e,t()])))}setter(e){if(C(e))for(const[t,i]of this.signals)i(()=>this.parser(e())[t]);else{const t=this.parse(e);for(const[i,r]of this.signals)r(t[i])}return this.owner}reset(){for(const[,e]of this.signals)e.reset();return this.owner}save(){for(const[,e]of this.signals)e.save();return this.owner}}var _;(function(s){s[s.Vertical=1]="Vertical",s[s.Horizontal=2]="Horizontal"})(_||(_={}));var E;(function(s){s[s.Top=4]="Top",s[s.Bottom=8]="Bottom",s[s.Left=16]="Left",s[s.Right=32]="Right"})(E||(E={}));var O;(function(s){s[s.Middle=3]="Middle",s[s.Top=5]="Top",s[s.Bottom=9]="Bottom",s[s.Left=18]="Left",s[s.Right=34]="Right",s[s.TopLeft=20]="TopLeft",s[s.TopRight=36]="TopRight",s[s.BottomLeft=24]="BottomLeft",s[s.BottomRight=40]="BottomRight"})(O||(O={}));const de=1e-6;class f{static fromRotation(e){return f.identity.rotate(e)}static fromTranslation(e){return f.identity.translate(new l(e))}static fromScaling(e){return f.identity.scale(new l(e))}get x(){return new l(this.values[0],this.values[1])}get y(){return new l(this.values[2],this.values[3])}get scaleX(){return this.values[0]}set scaleX(e){this.values[0]=this.x.normalized.scale(e).x}get skewX(){return this.values[1]}set skewX(e){this.values[1]=e}get scaleY(){return this.values[3]}set scaleY(e){this.values[3]=this.y.normalized.scale(e).y}get skewY(){return this.values[2]}set skewY(e){this.values[2]=e}get translateX(){return this.values[4]}set translateX(e){this.values[4]=e}get translateY(){return this.values[5]}set translateY(e){this.values[5]=e}get rotation(){return l.degrees(this.values[0],this.values[1])}set rotation(e){const t=this.rotate(e-this.rotation);this.values[0]=t.values[0],this.values[1]=t.values[1],this.values[2]=t.values[2],this.values[3]=t.values[3]}get translation(){return new l(this.values[4],this.values[5])}set translation(e){const t=new l(e);this.values[4]=t.x,this.values[5]=t.y}get scaling(){return new l(this.values[0],this.values[3])}set scaling(e){const t=new l(e),i=new l(this.values[0],this.values[1]).normalized,r=new l(this.values[2],this.values[3]).normalized;this.values[0]=i.x*t.x,this.values[1]=i.y*t.y,this.values[2]=r.x*t.x,this.values[3]=r.y*t.y}get inverse(){const e=this.values[0],t=this.values[1],i=this.values[2],r=this.values[3],a=this.values[4],n=this.values[5];let h=e*r-t*i;return h?(h=1/h,new f(r*h,-t*h,-i*h,e*h,(i*n-r*a)*h,(t*a-e*n)*h)):null}get determinant(){return this.values[0]*this.values[3]-this.values[1]*this.values[2]}get domMatrix(){return new DOMMatrix([this.values[0],this.values[1],this.values[2],this.values[3],this.values[4],this.values[5]])}constructor(e,t,i,r,a,n){if(this.values=new Float32Array(6),arguments.length===0){this.values=new Float32Array([1,0,0,1,0,0]);return}if(arguments.length===6){this.values[0]=e,this.values[1]=t,this.values[2]=i,this.values[3]=r,this.values[4]=a,this.values[5]=n;return}if(e instanceof DOMMatrix){this.values[0]=e.m11,this.values[1]=e.m12,this.values[2]=e.m21,this.values[3]=e.m22,this.values[4]=e.m41,this.values[5]=e.m42;return}if(e instanceof f){this.values=e.values;return}if(Array.isArray(e)){if(e.length===2){this.values[0]=e[0],this.values[1]=e[1],this.values[2]=t[0],this.values[3]=t[1],this.values[4]=i[0],this.values[5]=i[1];return}if(e.length===3){const d=new l(e[0]),v=new l(e[1]),g=new l(e[2]);this.values[0]=d.x,this.values[1]=d.y,this.values[2]=v.x,this.values[3]=v.y,this.values[4]=g.x,this.values[5]=g.y;return}this.values[0]=e[0],this.values[1]=e[1],this.values[2]=e[2],this.values[3]=e[3],this.values[4]=e[4],this.values[5]=e[5];return}const h=new l(e),c=new l(t),o=new l(i);this.values[0]=h.x,this.values[1]=h.y,this.values[2]=c.x,this.values[3]=c.y,this.values[4]=o.x,this.values[5]=o.y}column(e){return new l(this.values[e*2],this.values[e*2+1])}row(e){return[this.values[e],this.values[e+2],this.values[e+4]]}mul(e){const t=this.values[0],i=this.values[1],r=this.values[2],a=this.values[3],n=this.values[4],h=this.values[5],c=e.values[0],o=e.values[1],d=e.values[2],v=e.values[3],g=e.values[4],S=e.values[5];return new f(t*c+r*o,i*c+a*o,t*d+r*v,i*d+a*v,t*g+r*S+n,i*g+a*S+h)}rotate(e,t=!0){t&&(e*=q);const i=this.values[0],r=this.values[1],a=this.values[2],n=this.values[3],h=this.values[4],c=this.values[5],o=Math.sin(e),d=Math.cos(e);return new f(i*d+a*o,r*d+n*o,i*-o+a*d,r*-o+n*d,h,c)}scale(e){const t=new l(e);return new f(this.values[0]*t.x,this.values[1]*t.x,this.values[2]*t.y,this.values[3]*t.y,this.values[4],this.values[5])}mulScalar(e){return new f(this.values[0]*e,this.values[1]*e,this.values[2]*e,this.values[3]*e,this.values[4]*e,this.values[5]*e)}translate(e){const t=new l(e);return new f(this.values[0],this.values[1],this.values[2],this.values[3],this.values[0]*t.x+this.values[2]*t.y+this.values[4],this.values[1]*t.x+this.values[3]*t.y+this.values[5])}add(e){return new f(this.values[0]+e.values[0],this.values[1]+e.values[1],this.values[2]+e.values[2],this.values[3]+e.values[3],this.values[4]+e.values[4],this.values[5]+e.values[5])}sub(e){return new f(this.values[0]-e.values[0],this.values[1]-e.values[1],this.values[2]-e.values[2],this.values[3]-e.values[3],this.values[4]-e.values[4],this.values[5]-e.values[5])}toSymbol(){return f.symbol}equals(e,t=de){return Math.abs(this.values[0]-e.values[0])<=t+Number.EPSILON&&Math.abs(this.values[1]-e.values[1])<=t+Number.EPSILON&&Math.abs(this.values[2]-e.values[2])<=t+Number.EPSILON&&Math.abs(this.values[3]-e.values[3])<=t+Number.EPSILON&&Math.abs(this.values[4]-e.values[4])<=t+Number.EPSILON&&Math.abs(this.values[5]-e.values[5])<=t+Number.EPSILON}exactlyEquals(e){return this.values[0]===e.values[0]&&this.values[1]===e.values[1]&&this.values[2]===e.values[2]&&this.values[3]===e.values[3]&&this.values[4]===e.values[4]&&this.values[5]===e.values[5]}}f.symbol=Symbol.for("@motion-canvas/core/types/Matrix2D");f.identity=new f(1,0,0,1,0,0);f.zero=new f(0,0,0,0,0,0);class l{static createSignal(e,t=l.lerp,i){return new Fe(["x","y"],r=>new l(r),e,t,i).toSignal()}static lerp(e,t,i){let r,a;return typeof i=="number"?r=a=i:(r=i.x,a=i.y),new l(w(e.x,t.x,r),w(e.y,t.y,a))}static arcLerp(e,t,i,r=!1,a){return a??(a=e.sub(t).ctg),l.lerp(e,t,qe(i,r,a))}static createArcLerp(e,t){return(i,r,a)=>l.arcLerp(i,r,a,e,t)}static polarLerp(e,t,i,r=!1,a=l.zero){e=e.sub(a),t=t.sub(a);const n=e.degrees;let h=t.degrees;n>h!==r&&(h=h+(r?-360:360));const o=w(n,h,i)*q,d=w(e.magnitude,t.magnitude,i);return new l(d*Math.cos(o)+a.x,d*Math.sin(o)+a.y)}static createPolarLerp(e=!1,t=l.zero){return(i,r,a)=>l.polarLerp(i,r,a,e,new l(t))}static fromOrigin(e){const t=new l;return e===O.Middle||(e&E.Left?t.x=-1:e&E.Right&&(t.x=1),e&E.Top?t.y=-1:e&E.Bottom&&(t.y=1)),t}static fromScalar(e){return new l(e,e)}static fromRadians(e){return new l(Math.cos(e),Math.sin(e))}static fromDegrees(e){return l.fromRadians(e*q)}static radians(e,t){return Math.atan2(t,e)}static degrees(e,t){return l.radians(e,t)*Ie}static magnitude(e,t){return Math.sqrt(e*e+t*t)}static squaredMagnitude(e,t){return e*e+t*t}static angleBetween(e,t){return Math.acos(Z(-1,1,e.dot(t)/(e.magnitude*t.magnitude)))*(e.cross(t)>=0?1:-1)}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}get magnitude(){return l.magnitude(this.x,this.y)}get squaredMagnitude(){return l.squaredMagnitude(this.x,this.y)}get normalized(){return this.scale(1/l.magnitude(this.x,this.y))}get safe(){return new l(isNaN(this.x)?0:this.x,isNaN(this.y)?0:this.y)}get flipped(){return new l(-this.x,-this.y)}get floored(){return new l(Math.floor(this.x),Math.floor(this.y))}get perpendicular(){return new l(this.y,-this.x)}get radians(){return l.radians(this.x,this.y)}get degrees(){return l.degrees(this.x,this.y)}get ctg(){return this.x/this.y}constructor(e,t){if(this.x=0,this.y=0,e!=null){if(typeof e!="object"){this.x=e,this.y=t??e;return}if(Array.isArray(e)){this.x=e[0],this.y=e[1];return}if("width"in e){this.x=e.width,this.y=e.height;return}this.x=e.x,this.y=e.y}}lerp(e,t){return l.lerp(this,e,t)}getOriginOffset(e){const t=l.fromOrigin(e);return t.x*=this.x/2,t.y*=this.y/2,t}scale(e){return new l(this.x*e,this.y*e)}transformAsPoint(e){const t=new f(e);return new l(this.x*t.scaleX+this.y*t.skewY+t.translateX,this.x*t.skewX+this.y*t.scaleY+t.translateY)}transform(e){const t=new f(e);return new l(this.x*t.scaleX+this.y*t.skewY,this.x*t.skewX+this.y*t.scaleY)}mul(e){const t=new l(e);return new l(this.x*t.x,this.y*t.y)}div(e){const t=new l(e);return new l(this.x/t.x,this.y/t.y)}add(e){const t=new l(e);return new l(this.x+t.x,this.y+t.y)}sub(e){const t=new l(e);return new l(this.x-t.x,this.y-t.y)}dot(e){const t=new l(e);return this.x*t.x+this.y*t.y}cross(e){const t=new l(e);return this.x*t.y-this.y*t.x}mod(e){const t=new l(e);return new l(this.x%t.x,this.y%t.y)}rotate(e,t=l.zero){const i=new l(t),r=f.fromTranslation(i).rotate(e).translate(i.flipped);return this.transformAsPoint(r)}addX(e){return new l(this.x+e,this.y)}addY(e){return new l(this.x,this.y+e)}toSymbol(){return l.symbol}toString(){return`Vector2(${this.x}, ${this.y})`}serialize(){return{x:this.x,y:this.y}}exactlyEquals(e){return this.x===e.x&&this.y===e.y}equals(e,t=de){return Math.abs(this.x-e.x)<=t+Number.EPSILON&&Math.abs(this.y-e.y)<=t+Number.EPSILON}}l.symbol=Symbol.for("@motion-canvas/core/types/Vector2");l.zero=new l;l.one=new l(1,1);l.right=new l(1,0);l.left=new l(-1,0);l.up=new l(0,1);l.down=new l(0,-1);class Ye{constructor(e){this.playback=e}secondsToFrames(e){return Math.ceil(e*this.playback.fps)}framesToSeconds(e){return e/this.playback.fps}get time(){return this.framesToSeconds(this.playback.frame)}get frame(){return this.playback.frame}get speed(){return this.playback.speed}get fps(){return this.playback.fps}get state(){return this.playback.state}}class Ze{get onDataChanged(){return this.data.subscribable}constructor(e){this.logger=e,this.data=new M(null),this.context=new AudioContext,this.audioElement=new Audio,this.source=null,this.error=!1,this.abortController=null,this.offset=0}getTime(){return this.toAbsoluteTime(this.audioElement.currentTime)}setTime(e){this.audioElement.currentTime=this.toRelativeTime(e)}setOffset(e){this.offset=e}setMuted(e){this.audioElement.muted=e}setSource(e){var t;this.source=e,this.audioElement.src=e,(t=this.abortController)==null||t.abort(),this.abortController=new AbortController,this.loadData(this.abortController.signal).catch(i=>{i.name!=="AbortError"&&this.logger.error(i)})}isInRange(e){return e>=this.offset&&eP&&(P=A),Ah[v*2])&&(h[v*2]=P),(o===0||kc&&(c=P),Math.abs(k)>c&&(c=Math.abs(k))}}this.data.current={peaks:h,absoluteMax:c,length:n,sampleRate:r.sampleRate/a*2}}decodeAudioData(e){return new Promise((t,i)=>this.context.decodeAudioData(e,t,i).catch(i))}}class Xe{get onChanged(){return this.events.subscribable}constructor(e){this.scene=e,this.events=new M([]),this.registeredEvents=new Map,this.lookup=new Map,this.collisionLookup=new Set,this.previousReference=[],this.didEventsChange=!1,this.preserveTiming=!0,this.handleReload=()=>{this.registeredEvents.clear(),this.collisionLookup.clear()},this.handleRecalculated=()=>{var t;this.preserveTiming=!0,this.events.current=[...this.registeredEvents.values()],(this.didEventsChange||(((t=this.previousReference)==null?void 0:t.length)??0)!==this.events.current.length)&&(this.didEventsChange=!1,this.previousReference=[...this.registeredEvents.values()].map(i=>({name:i.name,targetTime:i.targetTime})),this.scene.meta.timeEvents.set(this.previousReference))},this.handleReset=()=>{this.collisionLookup.clear()},this.handleMetaChanged=t=>{t!==this.previousReference&&(this.previousReference=t,this.load(t),this.scene.reload())},this.previousReference=e.meta.timeEvents.get(),this.load(this.previousReference),e.onReloaded.subscribe(this.handleReload),e.onRecalculated.subscribe(this.handleRecalculated),e.onReset.subscribe(this.handleReset),e.meta.timeEvents.onChanged.subscribe(this.handleMetaChanged,!1)}set(e,t,i=!0){let r=this.lookup.get(e);!r||r.offset===t||(this.preserveTiming=i,r={...r,targetTime:r.initialTime+t,offset:t},this.lookup.set(e,r),this.registeredEvents.set(e,r),this.events.current=[...this.registeredEvents.values()],this.didEventsChange=!0,this.scene.reload())}register(e,t){if(this.collisionLookup.has(e))return this.scene.logger.error({message:`name "${e}" has already been used for another event name.`,stack:new Error().stack}),0;this.collisionLookup.add(e);let i=this.lookup.get(e);if(!i)this.didEventsChange=!0,i={name:e,initialTime:t,targetTime:t,offset:0,stack:new Error().stack},this.lookup.set(e,i);else{let r=!1;const a={...i},n=new Error().stack;a.stack!==n&&(a.stack=n,r=!0),a.initialTime!==t&&(a.initialTime=t,r=!0);const h=Math.max(0,a.targetTime-a.initialTime);this.preserveTiming&&a.offset!==h&&(a.offset=h,r=!0);const c=a.initialTime+a.offset;!this.preserveTiming&&a.targetTime!==c&&(this.didEventsChange=!0,a.targetTime=c,r=!0),r&&(i=a,this.lookup.set(e,i))}return this.registeredEvents.set(e,i),i.offset}load(e){for(const t of e){const i=this.lookup.get(t.name)??{name:t.name,initialTime:0,offset:0};this.lookup.set(t.name,{...i,targetTime:t.targetTime})}}}const ee=1/50;class He{get onRender(){return this.render.subscribable}get onStateChanged(){return this.playerState.subscribable}get onFrameChanged(){return this.frame.subscribable}get onDurationChanged(){return this.duration.subscribable}get onRecalculated(){return this.recalculated.subscribable}get startFrame(){return Math.min(this.playback.duration,this.status.secondsToFrames(this.startTime))}get endFrame(){return Math.min(this.playback.duration,this.status.secondsToFrames(this.endTime))}get finished(){return this.playback.finished||this.playback.frame>=this.endFrame}constructor(e,t={},i={},r=-1){var n,h,c;this.project=e,this.settings=t,this.initialState=i,this.initialFrame=r,this.render=new xe,this.frame=new M(0),this.duration=new M(0),this.recalculated=new Se,this.lock=new Re,this.startTime=0,this.endTime=1/0,this.requestId=null,this.renderTime=0,this.requestedSeek=-1,this.requestedRecalculation=!0,this.active=!1,this.playerState=new M({loop:!0,muted:!0,speed:1,...i,paused:!0}),this.requestedSeek=r,this.logger=this.project.logger,this.playback=new Ne,this.status=new Ye(this.playback),this.audio=new Ze(this.logger),this.size=t.size??new l(1920,1080),this.resolutionScale=t.resolutionScale??1,this.startTime=((n=t.range)==null?void 0:n[0])??0,this.endTime=((h=t.range)==null?void 0:h[1])??1/0,this.playback.fps=t.fps??60,this.audio.setOffset(t.audioOffset??0),e.audio&&this.audio.setSource(e.audio);const a=[];for(const o of e.scenes){const d=new o.klass({...o,playback:this.status,logger:this.project.logger,size:this.size,resolutionScale:this.resolutionScale,timeEventsClass:Xe});(c=o.onReplaced)==null||c.subscribe(v=>{d.reload(v)},!1),d.onReloaded.subscribe(()=>this.requestRecalculation()),d.variables.updateSignals(e.variables??{}),a.push(d)}this.playback.setup(a),this.activate()}async configure(e){await this.lock.acquire();let t=this.playback.frame,i=!1;if(this.startTime=e.range[0],this.endTime=e.range[1],this.playback.fps!==e.fps){const r=e.fps/this.playback.fps;this.playback.fps=e.fps,t=Math.floor(t*r),i=!0}(!e.size.exactlyEquals(this.size)||e.resolutionScale!==this.resolutionScale)&&(this.size=e.size,this.resolutionScale=e.resolutionScale,this.playback.reload({size:this.size,resolutionScale:this.resolutionScale})),e.audioOffset!==void 0&&this.audio.setOffset(e.audioOffset),this.lock.release(),i&&(this.playback.reload(),this.frame.current=t,this.requestRecalculation(),this.requestedSeek=t)}requestSeek(e){this.requestedSeek=this.clampRange(e)}requestPreviousFrame(){this.requestedSeek=this.frame.current-this.playback.speed}requestNextFrame(){this.requestedSeek=this.frame.current+this.playback.speed}requestReset(){this.requestedSeek=0}toggleLoop(e=!this.playerState.current.loop){e!==this.playerState.current.loop&&(this.playerState.current={...this.playerState.current,loop:e})}togglePlayback(e=this.playerState.current.paused){e===this.playerState.current.paused&&(this.playerState.current={...this.playerState.current,paused:!e},e&&!this.playerState.current.loop&&this.playback.frame===this.playback.duration&&this.requestReset())}toggleAudio(e=this.playerState.current.muted){e===this.playerState.current.muted&&(this.playerState.current={...this.playerState.current,muted:!e})}setSpeed(e){e!==this.playerState.current.speed&&(this.playback.speed=e,this.playback.reload(),this.playerState.current={...this.playerState.current,speed:e},this.requestRecalculation())}setVariables(e){for(const t of this.playback.onScenesRecalculated.current)t.variables.updateSignals(e)}activate(){this.active=!0,this.request()}deactivate(){this.active=!1,this.requestId!==null&&(cancelAnimationFrame(this.requestId),this.requestId=null)}requestRecalculation(){this.requestedRecalculation=!0,this.request()}async prepare(){const e={...this.playerState.current,seek:this.requestedSeek};if(this.requestedSeek=-1,this.requestedRecalculation){e.seek<0&&(e.seek=this.playback.frame);try{await this.playback.recalculate(),this.duration.current=this.playback.frame,this.recalculated.dispatch()}catch(i){throw this.requestSeek(e.seek),i}finally{this.requestedRecalculation=!1}}(!e.loop&&this.finished&&!e.paused&&e.seek<0||this.endFrame===this.startFrame)&&(this.togglePlayback(!1),e.paused=!0),e.loop&&(e.seek>this.endFrame||this.finished&&!e.paused)&&this.startFrame!==this.endTime&&(e.seek=this.startFrame);const t=e.paused||this.finished||!this.audio.isInRange(this.status.time);return await this.audio.setPaused(t)&&this.syncAudio(-3),this.audio.setMuted(e.muted),e}async run(){const e=await this.prepare(),t=this.playback.state;if(this.playback.state=e.paused?R.Paused:R.Playing,e.seek>=0||!this.isInRange(this.status.frame)){const i=e.seek<0?this.status.frame:e.seek,r=this.clampRange(i);this.logger.profile("seek time"),await this.playback.seek(r),this.logger.profile("seek time"),this.syncAudio(-3)}else if(e.paused||e.speed===1&&this.audio.isReady()&&this.audio.isInRange(this.status.time)&&this.audio.getTime()this.audio.getTime()+ee&&this.syncAudio(),this.request();return}else if(this.audio.isReady()&&e.speed===1&&this.audio.isInRange(this.status.time)&&this.status.framesToSeconds(this.playback.frame+1){if(this.requestId=null,e-this.renderTime>=1e3/(this.status.fps+5)){this.renderTime=e,await this.lock.acquire();try{await this.run()}catch(t){this.logger.error(t)}this.lock.release()}else this.request()})))}clampRange(e){return Z(this.startFrame,this.endFrame,e)}isInRange(e){return e>=this.startFrame&&e<=this.endFrame}syncAudio(e=0){this.audio.setTime(this.status.framesToSeconds(this.playback.frame+e))}}class We{get canvasSize(){return this.size.scale(this.resolutionScale)}constructor(){this.background=null,this.resolutionScale=1,this.colorSpace="srgb",this.size=l.zero,this.finalBuffer=document.createElement("canvas"),this.currentBuffer=document.createElement("canvas"),this.previousBuffer=document.createElement("canvas");const e=this.colorSpace;this.context=T({colorSpace:e},this.finalBuffer),this.currentContext=T({colorSpace:e},this.currentBuffer),this.previousContext=T({colorSpace:e},this.previousBuffer)}configure({colorSpace:e=this.colorSpace,size:t=this.size,resolutionScale:i=this.resolutionScale,background:r=this.background}){e!==this.colorSpace&&(this.colorSpace=e,this.context=T({colorSpace:e},this.finalBuffer),this.currentContext=T({colorSpace:e},this.currentBuffer),this.previousContext=T({colorSpace:e},this.previousBuffer)),(!t.exactlyEquals(this.size)||i!==this.resolutionScale)&&(this.resolutionScale=i,this.size=t,this.resizeCanvas(this.context),this.resizeCanvas(this.currentContext),this.resizeCanvas(this.previousContext)),this.background=typeof r=="string"?r:(r==null?void 0:r.serialize())??null}async render(e,t){t&&(this.transformCanvas(this.previousContext),await t.render(this.previousContext)),this.transformCanvas(this.currentContext),await e.render(this.currentContext);const i=this.canvasSize;this.context.clearRect(0,0,i.width,i.height),this.background&&(this.context.save(),this.context.fillStyle=this.background,this.context.fillRect(0,0,i.width,i.height),this.context.restore()),t&&this.context.drawImage(this.previousBuffer,0,0),this.context.drawImage(this.currentBuffer,0,0)}transformCanvas(e){const t=this.canvasSize.scale(.5);e.setTransform(this.resolutionScale,0,0,this.resolutionScale,t.x,t.y)}resizeCanvas(e){const t=this.canvasSize;e.canvas.width=t.width,e.canvas.height=t.height}}var Ge=Object.defineProperty,$e=(s,e,t)=>e in s?Ge(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,y=(s,e,t)=>($e(s,typeof e!="symbol"?e+"":e,t),t);const Je=`.initial{display:none}.state-initial .initial{display:block}.loading{display:none}.state-loading .loading{display:block}.ready{display:none}.state-ready .ready{display:block}.error{display:none}.state-error .error{display:block}:host{position:relative;display:block}.overlay{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;opacity:0;background-color:#0000008a;transition:opacity .1s}.overlay.state-ready:not(.auto){cursor:pointer}.overlay.playing:not(.hover):hover{cursor:none}.overlay.hover,.overlay.state-ready:focus-within,.overlay.state-ready:not(.playing){opacity:1}.overlay.hover .button,.overlay.state-ready:focus-within .button,.overlay.state-ready:not(.playing) .button{scale:1;transition:scale .1s ease-out}.overlay.state-loading,.overlay.state-error{opacity:1;transition:opacity 1s}.overlay.state-ready.auto{opacity:0}.button{width:50%;max-width:96px;aspect-ratio:1;scale:.5;transition:scale .1s ease-in,opacity .1s;background-color:transparent;border:none;background-size:100% 100%;background-repeat:no-repeat;opacity:.54;cursor:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iI2ZmZmZmZiI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE0LjV2LTlsNiA0LjUtNiA0LjV6Ii8+PC9zdmc+)}.playing .button{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiNmZmZmZmYiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zy8+PHBhdGggZD0iTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMSwxNkg5VjhoMlYxNnogTTE1LDE2aC0yVjhoMlYxNnoiLz48L2c+PC9zdmc+)}.button:focus,.overlay:hover .button{opacity:.87}.auto .button{display:none}.canvas{width:100%;display:block;opacity:0;transition:opacity .1s}.canvas.state-ready{opacity:1}.message{font-family:JetBrains Mono,sans-serif;text-align:center;font-size:20px;padding:8px 16px;margin:16px;border-radius:4px;color:#fff9;background-color:#000000de}.loader{width:50%;max-width:96px;display:none;rotate:-90deg;animation:stroke 2s cubic-bezier(.5,0,.5,1) infinite,rotate 2s linear infinite}@keyframes stroke{0%{stroke-dasharray:5.6548667765px 50.8938009883px;stroke-dashoffset:2.8274333882px}50%{stroke-dasharray:50.8938009883px 5.6548667765px;stroke-dashoffset:-2.8274333882px}to{stroke-dasharray:5.6548667765px 50.8938009883px;stroke-dashoffset:-53.7212343766px}}@keyframes rotate{0%{rotate:-110deg}to{rotate:250deg}} +`,Qe=`
+ +
+ An error occurred while loading the animation. +
+ + + +
+`,ve=[];function Ue(){const s=ve.at(-1);if(!s)throw new Error("The scene is not available in the current context.");return s}function Ke(){var s;return((s=ve.at(-1))==null?void 0:s.logger)??console}class fe extends Error{constructor(e,t){super(e),this.remarks=t}}const Ve=[];function H(){const s=Ve.at(-1);if(!s)throw new fe("The thread is not available in the current context.",`

useThread() can only be called from within generator functions. + It's not available during rendering.

+`);return s}function _e(s){return{message:s.message,stack:s.stack,remarks:s.remarks}}const et=180/Math.PI,D=Math.PI/180,tt=[];function st(){const s=tt.at(-1);if(!s)throw new Error("The playback is not available in the current context.");return s}function W(s,...e){const t={[s.name]:s},i=Object.getOwnPropertyDescriptor(t,s.name);if(i)for(let r=e.length-1;r>=0;r--)e[r](t,s.name,i)}function G(s){return function(e,t,i){i.value.prototype.name=s??t,i.value.prototype.threadable=!0}}function te(s,e){const t=Object.getPrototypeOf(s);t.threadable||(t.threadable=!0,t.name=typeof e=="string"?e:it(e))}function it(s){return Object.getPrototypeOf(s).name??null}class rt{constructor(){this.subscribable=new at(this),this.subscribers=new Set}subscribe(e){return this.subscribers.add(e),()=>this.unsubscribe(e)}unsubscribe(e){this.subscribers.delete(e)}clear(){this.subscribers.clear()}notifySubscribers(e){return[...this.subscribers].map(t=>t(e))}}class at{constructor(e){this.dispatcher=e}subscribe(e){return this.dispatcher.subscribe(e)}unsubscribe(e){this.dispatcher.unsubscribe(e)}}class nt extends rt{constructor(){super(...arguments),this.value=!1}raise(){this.value||(this.value=!0,this.notifySubscribers())}reset(){this.value=!1}isRaised(){return this.value}subscribe(e){const t=super.subscribe(e);return this.value&&e(),t}}function ht(s){const e=Ue(),t=H();return e.timeEvents.register(s,t.time())}function x(s,e,t){return s+(e-s)*t}function pe(s,e,t){return te?e:t}function lt(s,e,t){let i=e;t>1?t=1/t:i=!i;const r=i?Math.acos(pe(-1,1,1-s)):Math.asin(s),a=x(r,x(0,Math.PI/2,s),t);let n=Math.sin(a),h=1-Math.cos(a);return e&&([n,h]=[h,n]),new u(n,h)}function ut(s,e=0,t=1){return s=s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,x(e,t,s)}W(ye,G());function*ye(s,e,t){const i=H(),r=i.time(),a=i.time()+s;for(e(0,0);a>i.fixed;){const n=i.fixed-r,h=n/s;n>0&&e(h,n),yield}i.time(a),e(1,s),t==null||t(1,s)}W(ot,G());function*ot(s,e){yield*$(ht(s)),e&&(yield*e)}W($,G());function*$(s=0,e){const t=H(),i=st().framesToSeconds(1),r=t.time()+s;for(;r-i>t.fixed;)yield;t.time(r),e&&(yield*e)}function se(s,e){let t;return typeof s=="string"?(t=e(),te(t,s)):(t=s(),te(t,t)),t}class b{static collectPromise(e,t=null){const i={promise:e,value:t,stack:new Error().stack},r=this.collectionStack.at(-1);return r&&(i.owner=r.owner),e.then(a=>{i.value=a,r==null||r.markDirty()}),this.promises.push(i),i}static hasPromises(){return this.promises.length>0}static async consumePromises(){const e=[...this.promises];return await Promise.all(e.map(t=>t.promise)),this.promises=this.promises.filter(t=>!e.includes(t)),e}constructor(e){this.owner=e,this.dependencies=new Set,this.event=new nt,this.markDirty=()=>this.event.raise(),this.invokable=this.invoke.bind(this),Object.defineProperty(this.invokable,"context",{value:this}),Object.defineProperty(this.invokable,"toPromise",{value:this.toPromise.bind(this)})}invoke(){}startCollecting(){if(b.collectionSet.has(this))throw new fe("A circular dependency occurred between signals.",`This can happen when signals reference each other in a loop. + Try using the attached stack trace to locate said loop.`);b.collectionSet.add(this),b.collectionStack.push(this)}finishCollecting(){if(b.collectionSet.delete(this),b.collectionStack.pop()!==this)throw new Error("collectStart/collectEnd was called out of order.")}clearDependencies(){this.dependencies.forEach(e=>e.unsubscribe(this.markDirty)),this.dependencies.clear()}collect(){const e=b.collectionStack.at(-1);e&&(e.dependencies.add(this.event.subscribable),this.event.subscribe(e.markDirty))}dispose(){this.clearDependencies(),this.event.clear(),this.owner=null}async toPromise(){do await b.consumePromises(),this.invokable();while(b.hasPromises());return this.invokable}}b.collectionSet=new Set;b.collectionStack=[];b.promises=[];function L(s){return typeof s=="function"}function ct(s,e){return L(s)?()=>e(s()):e(s)}function dt(s){return L(s)?s():s}const ie=Symbol.for("@motion-canvas/core/signals/default");class re extends b{constructor(e,t,i=void 0,r=n=>n,a={}){super(i),this.initial=e,this.interpolation=t,this.parser=r,Object.defineProperty(this.invokable,"reset",{value:this.reset.bind(this)}),Object.defineProperty(this.invokable,"save",{value:this.save.bind(this)}),Object.defineProperty(this.invokable,"isInitial",{value:this.isInitial.bind(this)}),this.initial!==void 0&&(this.current=this.initial,this.markDirty(),L(this.initial)||(this.last=this.parse(this.initial))),this.extensions={getter:this.getter.bind(this),setter:this.setter.bind(this),tweener:this.tweener.bind(this),...a}}toSignal(){return this.invokable}parse(e){return this.parser(e)}set(e){return this.extensions.setter(e),this.owner}setter(e){return e===ie&&(e=this.initial),this.current===e?this.owner:(this.current=e,this.markDirty(),this.clearDependencies(),L(e)||(this.last=this.parse(e)),this.owner)}get(){return this.extensions.getter()}getter(){var e;if(this.event.isRaised()&&L(this.current)){this.clearDependencies(),this.startCollecting();try{this.last=this.parse(this.current())}catch(t){Ke().error({..._e(t),inspect:(e=this.owner)==null?void 0:e.key})}this.finishCollecting()}return this.event.reset(),this.collect(),this.last}invoke(e,t,i=ut,r=this.interpolation){return e===void 0?this.get():t===void 0?this.set(e):this.createQueue(i,r).to(e,t)}createQueue(e,t){const i=this.get(),r=[],a=se("animation chain",function*(){for(;r.length>0;)yield*r.shift()});return a.to=(n,h,c=e,o=t)=>(e=c,t=o,r.push(this.tween(n,h,c,o)),a),a.back=(n,h=e,c=t)=>(e=h,t=c,r.push(this.tween(i,n,e,t)),a),a.wait=n=>(r.push($(n)),a),a.run=n=>(r.push(n),a),a.do=n=>(r.push(se(function*(){n()})),a),a}*tween(e,t,i,r){e===ie&&(e=this.initial),yield*this.extensions.tweener(e,t,i,r),this.set(e)}*tweener(e,t,i,r){const a=this.get();yield*ye(t,n=>{this.set(r(a,this.parse(dt(e)),i(n)))})}dispose(){super.dispose(),this.initial=void 0,this.current=void 0,this.last=void 0}reset(){return this.initial!==void 0&&this.set(this.initial),this.owner}save(){return this.set(this.get())}isInitial(){return this.collect(),this.current===this.initial}raw(){return this.current}}class vt extends re{constructor(e,t,i,r,a=void 0,n={}){var h;super(void 0,r,a,t,n),this.entries=e,this.signals=[],this.parser=t;for(const c of e){let o,d;Array.isArray(c)?([o,d]=c,(h=d.context).owner??(h.owner=this)):(o=c,d=new re(ct(i,v=>t(v)[c]),x,a??this.invokable).toSignal()),this.signals.push([o,d]),Object.defineProperty(this.invokable,o,{value:d})}}toSignal(){return this.invokable}parse(e){return this.parser(e)}getter(){return this.parse(Object.fromEntries(this.signals.map(([e,t])=>[e,t()])))}setter(e){if(L(e))for(const[t,i]of this.signals)i(()=>this.parser(e())[t]);else{const t=this.parse(e);for(const[i,r]of this.signals)r(t[i])}return this.owner}reset(){for(const[,e]of this.signals)e.reset();return this.owner}save(){for(const[,e]of this.signals)e.save();return this.owner}}var ae;(function(s){s[s.Vertical=1]="Vertical",s[s.Horizontal=2]="Horizontal"})(ae||(ae={}));var I;(function(s){s[s.Top=4]="Top",s[s.Bottom=8]="Bottom",s[s.Left=16]="Left",s[s.Right=32]="Right"})(I||(I={}));var B;(function(s){s[s.Middle=3]="Middle",s[s.Top=5]="Top",s[s.Bottom=9]="Bottom",s[s.Left=18]="Left",s[s.Right=34]="Right",s[s.TopLeft=20]="TopLeft",s[s.TopRight=36]="TopRight",s[s.BottomLeft=24]="BottomLeft",s[s.BottomRight=40]="BottomRight"})(B||(B={}));const ge=1e-6;class p{static fromRotation(e){return p.identity.rotate(e)}static fromTranslation(e){return p.identity.translate(new u(e))}static fromScaling(e){return p.identity.scale(new u(e))}get x(){return new u(this.values[0],this.values[1])}get y(){return new u(this.values[2],this.values[3])}get scaleX(){return this.values[0]}set scaleX(e){this.values[0]=this.x.normalized.scale(e).x}get skewX(){return this.values[1]}set skewX(e){this.values[1]=e}get scaleY(){return this.values[3]}set scaleY(e){this.values[3]=this.y.normalized.scale(e).y}get skewY(){return this.values[2]}set skewY(e){this.values[2]=e}get translateX(){return this.values[4]}set translateX(e){this.values[4]=e}get translateY(){return this.values[5]}set translateY(e){this.values[5]=e}get rotation(){return u.degrees(this.values[0],this.values[1])}set rotation(e){const t=this.rotate(e-this.rotation);this.values[0]=t.values[0],this.values[1]=t.values[1],this.values[2]=t.values[2],this.values[3]=t.values[3]}get translation(){return new u(this.values[4],this.values[5])}set translation(e){const t=new u(e);this.values[4]=t.x,this.values[5]=t.y}get scaling(){return new u(this.values[0],this.values[3])}set scaling(e){const t=new u(e),i=new u(this.values[0],this.values[1]).normalized,r=new u(this.values[2],this.values[3]).normalized;this.values[0]=i.x*t.x,this.values[1]=i.y*t.y,this.values[2]=r.x*t.x,this.values[3]=r.y*t.y}get inverse(){const e=this.values[0],t=this.values[1],i=this.values[2],r=this.values[3],a=this.values[4],n=this.values[5];let h=e*r-t*i;return h?(h=1/h,new p(r*h,-t*h,-i*h,e*h,(i*n-r*a)*h,(t*a-e*n)*h)):null}get determinant(){return this.values[0]*this.values[3]-this.values[1]*this.values[2]}get domMatrix(){return new DOMMatrix([this.values[0],this.values[1],this.values[2],this.values[3],this.values[4],this.values[5]])}constructor(e,t,i,r,a,n){if(this.values=new Float32Array(6),arguments.length===0){this.values=new Float32Array([1,0,0,1,0,0]);return}if(arguments.length===6){this.values[0]=e,this.values[1]=t,this.values[2]=i,this.values[3]=r,this.values[4]=a,this.values[5]=n;return}if(e instanceof DOMMatrix){this.values[0]=e.m11,this.values[1]=e.m12,this.values[2]=e.m21,this.values[3]=e.m22,this.values[4]=e.m41,this.values[5]=e.m42;return}if(e instanceof p){this.values=e.values;return}if(Array.isArray(e)){if(e.length===2){this.values[0]=e[0],this.values[1]=e[1],this.values[2]=t[0],this.values[3]=t[1],this.values[4]=i[0],this.values[5]=i[1];return}if(e.length===3){const d=new u(e[0]),v=new u(e[1]),g=new u(e[2]);this.values[0]=d.x,this.values[1]=d.y,this.values[2]=v.x,this.values[3]=v.y,this.values[4]=g.x,this.values[5]=g.y;return}this.values[0]=e[0],this.values[1]=e[1],this.values[2]=e[2],this.values[3]=e[3],this.values[4]=e[4],this.values[5]=e[5];return}const h=new u(e),c=new u(t),o=new u(i);this.values[0]=h.x,this.values[1]=h.y,this.values[2]=c.x,this.values[3]=c.y,this.values[4]=o.x,this.values[5]=o.y}column(e){return new u(this.values[e*2],this.values[e*2+1])}row(e){return[this.values[e],this.values[e+2],this.values[e+4]]}mul(e){const t=this.values[0],i=this.values[1],r=this.values[2],a=this.values[3],n=this.values[4],h=this.values[5],c=e.values[0],o=e.values[1],d=e.values[2],v=e.values[3],g=e.values[4],S=e.values[5];return new p(t*c+r*o,i*c+a*o,t*d+r*v,i*d+a*v,t*g+r*S+n,i*g+a*S+h)}rotate(e,t=!0){t&&(e*=D);const i=this.values[0],r=this.values[1],a=this.values[2],n=this.values[3],h=this.values[4],c=this.values[5],o=Math.sin(e),d=Math.cos(e);return new p(i*d+a*o,r*d+n*o,i*-o+a*d,r*-o+n*d,h,c)}scale(e){const t=new u(e);return new p(this.values[0]*t.x,this.values[1]*t.x,this.values[2]*t.y,this.values[3]*t.y,this.values[4],this.values[5])}mulScalar(e){return new p(this.values[0]*e,this.values[1]*e,this.values[2]*e,this.values[3]*e,this.values[4]*e,this.values[5]*e)}translate(e){const t=new u(e);return new p(this.values[0],this.values[1],this.values[2],this.values[3],this.values[0]*t.x+this.values[2]*t.y+this.values[4],this.values[1]*t.x+this.values[3]*t.y+this.values[5])}add(e){return new p(this.values[0]+e.values[0],this.values[1]+e.values[1],this.values[2]+e.values[2],this.values[3]+e.values[3],this.values[4]+e.values[4],this.values[5]+e.values[5])}sub(e){return new p(this.values[0]-e.values[0],this.values[1]-e.values[1],this.values[2]-e.values[2],this.values[3]-e.values[3],this.values[4]-e.values[4],this.values[5]-e.values[5])}toSymbol(){return p.symbol}equals(e,t=ge){return Math.abs(this.values[0]-e.values[0])<=t+Number.EPSILON&&Math.abs(this.values[1]-e.values[1])<=t+Number.EPSILON&&Math.abs(this.values[2]-e.values[2])<=t+Number.EPSILON&&Math.abs(this.values[3]-e.values[3])<=t+Number.EPSILON&&Math.abs(this.values[4]-e.values[4])<=t+Number.EPSILON&&Math.abs(this.values[5]-e.values[5])<=t+Number.EPSILON}exactlyEquals(e){return this.values[0]===e.values[0]&&this.values[1]===e.values[1]&&this.values[2]===e.values[2]&&this.values[3]===e.values[3]&&this.values[4]===e.values[4]&&this.values[5]===e.values[5]}}p.symbol=Symbol.for("@motion-canvas/core/types/Matrix2D");p.identity=new p(1,0,0,1,0,0);p.zero=new p(0,0,0,0,0,0);class u{static createSignal(e,t=u.lerp,i){return new vt(["x","y"],r=>new u(r),e,t,i).toSignal()}static lerp(e,t,i){let r,a;return typeof i=="number"?r=a=i:(r=i.x,a=i.y),new u(x(e.x,t.x,r),x(e.y,t.y,a))}static arcLerp(e,t,i,r=!1,a){return a??(a=e.sub(t).ctg),u.lerp(e,t,lt(i,r,a))}static createArcLerp(e,t){return(i,r,a)=>u.arcLerp(i,r,a,e,t)}static polarLerp(e,t,i,r=!1,a=u.zero){e=e.sub(a),t=t.sub(a);const n=e.degrees;let h=t.degrees;n>h!==r&&(h=h+(r?-360:360));const c=x(n,h,i)*D,o=x(e.magnitude,t.magnitude,i);return new u(o*Math.cos(c)+a.x,o*Math.sin(c)+a.y)}static createPolarLerp(e=!1,t=u.zero){return(i,r,a)=>u.polarLerp(i,r,a,e,new u(t))}static fromOrigin(e){const t=new u;return e===B.Middle||(e&I.Left?t.x=-1:e&I.Right&&(t.x=1),e&I.Top?t.y=-1:e&I.Bottom&&(t.y=1)),t}static fromScalar(e){return new u(e,e)}static fromRadians(e){return new u(Math.cos(e),Math.sin(e))}static fromDegrees(e){return u.fromRadians(e*D)}static radians(e,t){return Math.atan2(t,e)}static degrees(e,t){return u.radians(e,t)*et}static magnitude(e,t){return Math.sqrt(e*e+t*t)}static squaredMagnitude(e,t){return e*e+t*t}static angleBetween(e,t){return Math.acos(pe(-1,1,e.dot(t)/(e.magnitude*t.magnitude)))*(e.cross(t)>=0?1:-1)}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}get magnitude(){return u.magnitude(this.x,this.y)}get squaredMagnitude(){return u.squaredMagnitude(this.x,this.y)}get normalized(){return this.scale(1/u.magnitude(this.x,this.y))}get safe(){return new u(isNaN(this.x)?0:this.x,isNaN(this.y)?0:this.y)}get flipped(){return new u(-this.x,-this.y)}get floored(){return new u(Math.floor(this.x),Math.floor(this.y))}get perpendicular(){return new u(this.y,-this.x)}get radians(){return u.radians(this.x,this.y)}get degrees(){return u.degrees(this.x,this.y)}get ctg(){return this.x/this.y}constructor(e,t){if(this.x=0,this.y=0,e!=null){if(typeof e!="object"){this.x=e,this.y=t??e;return}if(Array.isArray(e)){this.x=e[0],this.y=e[1];return}if("width"in e){this.x=e.width,this.y=e.height;return}this.x=e.x,this.y=e.y}}lerp(e,t){return u.lerp(this,e,t)}getOriginOffset(e){const t=u.fromOrigin(e);return t.x*=this.x/2,t.y*=this.y/2,t}scale(e){return new u(this.x*e,this.y*e)}transformAsPoint(e){const t=new p(e);return new u(this.x*t.scaleX+this.y*t.skewY+t.translateX,this.x*t.skewX+this.y*t.scaleY+t.translateY)}transform(e){const t=new p(e);return new u(this.x*t.scaleX+this.y*t.skewY,this.x*t.skewX+this.y*t.scaleY)}mul(e){const t=new u(e);return new u(this.x*t.x,this.y*t.y)}div(e){const t=new u(e);return new u(this.x/t.x,this.y/t.y)}add(e){const t=new u(e);return new u(this.x+t.x,this.y+t.y)}sub(e){const t=new u(e);return new u(this.x-t.x,this.y-t.y)}dot(e){const t=new u(e);return this.x*t.x+this.y*t.y}cross(e){const t=new u(e);return this.x*t.y-this.y*t.x}mod(e){const t=new u(e);return new u(this.x%t.x,this.y%t.y)}rotate(e,t=u.zero){const i=new u(t),r=p.fromTranslation(i).rotate(e).translate(i.flipped);return this.transformAsPoint(r)}addX(e){return new u(this.x+e,this.y)}addY(e){return new u(this.x,this.y+e)}toSymbol(){return u.symbol}toString(){return`Vector2(${this.x}, ${this.y})`}serialize(){return{x:this.x,y:this.y}}exactlyEquals(e){return this.x===e.x&&this.y===e.y}equals(e,t=ge){return Math.abs(this.x-e.x)<=t+Number.EPSILON&&Math.abs(this.y-e.y)<=t+Number.EPSILON}}u.symbol=Symbol.for("@motion-canvas/core/types/Vector2");u.zero=new u;u.one=new u(1,1);u.right=new u(1,0);u.left=new u(-1,0);u.up=new u(0,1);u.down=new u(0,-1);const ft=`${Qe}`,ne="motion-canvas-player";class pt extends HTMLElement{constructor(){super(),y(this,"root"),y(this,"canvas"),y(this,"overlay"),y(this,"button"),y(this,"state","initial"),y(this,"project",null),y(this,"player",null),y(this,"defaultSettings"),y(this,"abortController",null),y(this,"mouseMoveId",null),y(this,"finished",!1),y(this,"playing",!1),y(this,"connected",!1),y(this,"stage",new We),y(this,"handleMouseMove",()=>{this.mouseMoveId&&clearTimeout(this.mouseMoveId),this.hover&&!this.playing&&this.setPlaying(!0),this.mouseMoveId=window.setTimeout(()=>{this.mouseMoveId=null,this.updateClass()},2e3),this.updateClass()}),y(this,"handleMouseLeave",()=>{this.hover&&this.setPlaying(!1),this.mouseMoveId&&(clearTimeout(this.mouseMoveId),this.mouseMoveId=null,this.updateClass())}),y(this,"handleMouseDown",e=>{e.preventDefault()}),y(this,"handleClick",()=>{this.auto||(this.handleMouseMove(),this.setPlaying(!this.playing),this.button.animate([{scale:"0.9"},{scale:"1",easing:"ease-out"}],{duration:200}))}),y(this,"render",async()=>{this.player&&await this.stage.render(this.player.playback.currentScene,this.player.playback.previousScene)}),this.root=this.attachShadow({mode:"open"}),this.root.innerHTML=ft,this.overlay=this.root.querySelector(".overlay"),this.button=this.root.querySelector(".button"),this.canvas=this.stage.finalBuffer,this.canvas.classList.add("canvas"),this.root.prepend(this.canvas),this.overlay.addEventListener("click",this.handleClick),this.overlay.addEventListener("mousemove",this.handleMouseMove),this.overlay.addEventListener("mouseleave",this.handleMouseLeave),this.button.addEventListener("mousedown",this.handleMouseDown),this.setState("initial")}static get observedAttributes(){return["src","quality","width","height","auto","variables"]}get auto(){return!!this.getAttribute("auto")}get hover(){return this.getAttribute("auto")==="hover"}get quality(){const e=this.getAttribute("quality");return e?parseFloat(e):this.defaultSettings.resolutionScale}get width(){const e=this.getAttribute("width");return e?parseFloat(e):this.defaultSettings.size.width}get height(){const e=this.getAttribute("height");return e?parseFloat(e):this.defaultSettings.size.height}get variables(){try{const e=this.getAttribute("variables");return e?JSON.parse(e):{}}catch{return this.project.logger.warn("Project variables could not be parsed."),{}}}setState(e){this.state=e,this.setPlaying(this.playing)}setPlaying(e){var t,i;this.state==="ready"&&(e||this.auto&&!this.hover)?((t=this.player)==null||t.togglePlayback(!0),this.playing=!0):((i=this.player)==null||i.togglePlayback(!1),this.playing=!1),this.updateClass()}updateClass(){this.overlay.className=`overlay state-${this.state}`,this.canvas.className=`canvas state-${this.state}`,this.overlay.classList.toggle("playing",this.playing),this.overlay.classList.toggle("auto",this.auto),this.overlay.classList.toggle("hover",this.mouseMoveId!==null),this.connected&&(this.mouseMoveId!==null||!this.playing?this.dataset.overlay="":delete this.dataset.overlay)}async updateSource(e){var t,i,r,a;this.setState("initial"),(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;let n;try{const c=we(()=>import(e),[]),o=new Promise(d=>setTimeout(d,200));await Promise.any([o,c]),this.setState("loading"),n=(await c).default}catch(c){console.error(c),this.setState("error");return}this.defaultSettings=n.meta.getFullRenderingSettings();const h=new He(n);h.setVariables(this.variables),this.finished=!1,(i=this.player)==null||i.onRender.unsubscribe(this.render),(r=this.player)==null||r.togglePlayback(!1),(a=this.player)==null||a.deactivate(),this.project=n,this.player=h,this.updateSettings(),this.player.onRender.subscribe(this.render),this.player.togglePlayback(this.playing),this.setState("ready")}attributeChangedCallback(e,t,i){var r;switch(e){case"auto":this.setPlaying(this.playing);break;case"src":this.updateSource(i);break;case"quality":case"width":case"height":this.updateSettings();break;case"variables":(r=this.player)==null||r.setVariables(this.variables)}}disconnectedCallback(){var e,t;this.connected=!1,(e=this.player)==null||e.deactivate(),(t=this.player)==null||t.onRender.unsubscribe(this.render)}connectedCallback(){var e,t;this.connected=!0,(e=this.player)==null||e.activate(),(t=this.player)==null||t.onRender.subscribe(this.render)}updateSettings(){const e={...this.defaultSettings,size:new u(this.width,this.height),resolutionScale:this.quality};this.stage.configure(e),this.player.configure(e)}}customElements.get(ne)||customElements.define(ne,pt);(function(){const e="/";document.querySelectorAll("motion-canvas-player").forEach(t=>{let i=t.getAttribute("src");if(i!=null&&i.startsWith("/")){i=e+i.slice(1);const r=document.createElement("motion-canvas-player");r.setAttribute("auto",t.getAttribute("auto")??"true"),r.setAttribute("src",i),t.replaceWith(r)}})})(); diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..be1d371 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,20 @@ + + + + + + Document + + + + + + + + \ No newline at end of file diff --git a/dist/public/animations/project.js b/dist/public/animations/project.js new file mode 100644 index 0000000..16316ce --- /dev/null +++ b/dist/public/animations/project.js @@ -0,0 +1,59 @@ +class Vr{constructor(){this.subscribable=new ni(this),this.subscribers=new Set}subscribe(t){return this.subscribers.add(t),()=>this.unsubscribe(t)}unsubscribe(t){this.subscribers.delete(t)}clear(){this.subscribers.clear()}notifySubscribers(t){return[...this.subscribers].map(e=>e(t))}}class ni{constructor(t){this.dispatcher=t}subscribe(t){return this.dispatcher.subscribe(t)}unsubscribe(t){this.dispatcher.unsubscribe(t)}}class Lt extends Vr{dispatch(t){this.notifySubscribers(t)}}class qh extends Vr{constructor(){super(...arguments),this.value=!1}raise(){this.value||(this.value=!0,this.notifySubscribers())}reset(){this.value=!1}isRaised(){return this.value}subscribe(t){const e=super.subscribe(t);return this.value&&t(),e}}class te extends Vr{get current(){return this.value}set current(t){this.value=t,this.notifySubscribers(t)}constructor(t){super(),this.value=t,this.subscribable=new Wh(this)}subscribe(t,e=!0){const r=super.subscribe(t);return e&&t(this.value),r}}class Wh extends ni{get current(){return this.dispatcher.current}subscribe(t,e=!0){return this.dispatcher.subscribe(t,e)}}var Mt;(function(s){s.Error="error",s.Warn="warn",s.Info="info",s.Http="http",s.Verbose="verbose",s.Debug="debug",s.Silly="silly"})(Mt||(Mt={}));class Gh{constructor(){this.logged=new Lt,this.history=[],this.profilers={}}get onLogged(){return this.logged.subscribable}log(t){this.logged.dispatch(t),this.history.push(t)}error(t){this.logLevel(Mt.Error,t)}warn(t){this.logLevel(Mt.Warn,t)}info(t){this.logLevel(Mt.Info,t)}http(t){this.logLevel(Mt.Http,t)}verbose(t){this.logLevel(Mt.Verbose,t)}debug(t){this.logLevel(Mt.Debug,t)}silly(t){this.logLevel(Mt.Silly,t)}logLevel(t,e){const r=typeof e=="string"?{message:e}:e;r.level=t,this.log(r)}profile(t,e){const r=performance.now();if(this.profilers[t]){const a=this.profilers[t];delete this.profilers[t];const o=e??{message:t};o.level??(o.level=Mt.Debug),o.durationMs=r-a,this.log(o);return}this.profilers[t]=r}}class bt{get onChanged(){return this.value.subscribable}get onDisabled(){return this.disabled.subscribable}constructor(t,e){this.name=t,this.initial=e,this.type=void 0,this.spacing=!1,this.description="",this.disabled=new te(!1),this.value=new te(e)}get(){return this.value.current}set(t){this.value.current=this.parse(t)}parse(t){return t}serialize(){return this.value.current}clone(){return new this.constructor(this.name,this.get())}disable(t=!0){return this.disabled.current=t,this}space(t=!0){return this.spacing=t,this}describe(t){return this.description=t,this}}class Hh extends bt{get onFieldsChanged(){return this.event.subscribable}constructor(t,e){const r=new Map(Object.entries(e));super(t,Object.fromEntries(Array.from(r,([a,o])=>[a,o.get()]))),this.type=Object,this.ignoreChange=!1,this.customFields={},this.handleChange=()=>{this.ignoreChange||(this.value.current=this.transform("get"))},this.event=new te([...r.values()]),this.fields=r;for(const[a,o]of this.fields)Object.defineProperty(this,a,{value:o}),o.onChanged.subscribe(this.handleChange)}set(t){this.ignoreChange=!0;for(const[e,r]of Object.entries(t)){const a=this.fields.get(e);a?a.set(r):this.customFields[e]=r}this.ignoreChange=!1,this.handleChange()}serialize(){return this.transform("serialize")}clone(){return new this.constructor(this.name,this.transform("clone"))}transform(t){return{...Object.fromEntries(Array.from(this.fields,([r,a])=>[r,a[t]()])),...this.customFields}}}const _t=Hh;class Xr extends bt{constructor(){super(...arguments),this.type=Boolean}parse(t){return!!t}}var Xh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},si={exports:{}};/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */(function(s,t){(function(e,r){s.exports=r()})(Xh,function(){for(var e=function(n,i,l){return i===void 0&&(i=0),l===void 0&&(l=1),nl?l:n},r=e,a=function(n){n._clipped=!1,n._unclipped=n.slice(0);for(var i=0;i<=3;i++)i<3?((n[i]<0||n[i]>255)&&(n._clipped=!0),n[i]=r(n[i],0,255)):i===3&&(n[i]=r(n[i],0,1));return n},o={},h=0,c=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];h=3?Array.prototype.slice.call(n):P(n[0])=="object"&&i?i.split("").filter(function(l){return n[0][l]!==void 0}).map(function(l){return n[0][l]}):n[0]},K=w,ct=function(n){if(n.length<2)return null;var i=n.length-1;return K(n[i])=="string"?n[i].toLowerCase():null},Rt=Math.PI,C={clip_rgb:a,limit:e,type:w,unpack:O,last:ct,PI:Rt,TWOPI:Rt*2,PITHIRD:Rt/3,DEG2RAD:Rt/180,RAD2DEG:180/Rt},rt={format:{},autodetect:[]},dr=C.last,gr=C.clip_rgb,ze=C.type,$t=rt,pn=function(){for(var i=[],l=arguments.length;l--;)i[l]=arguments[l];var u=this;if(ze(i[0])==="object"&&i[0].constructor&&i[0].constructor===this.constructor)return i[0];var p=dr(i),d=!1;if(!p){d=!0,$t.sorted||($t.autodetect=$t.autodetect.sort(function(x,R){return R.p-x.p}),$t.sorted=!0);for(var f=0,g=$t.autodetect;f4?n[4]:1;return d===1?[0,0,0,f]:[l>=1?0:255*(1-l)*(1-d),u>=1?0:255*(1-u)*(1-d),p>=1?0:255*(1-p)*(1-d),f]},Si=xi,ki=nt,gn=D,vn=rt,Ci=C.unpack,Pi=C.type,Ri=yi;gn.prototype.cmyk=function(){return Ri(this._rgb)},ki.cmyk=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(gn,[null].concat(n,["cmyk"])))},vn.format.cmyk=Si,vn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=Ci(n,"cmyk"),Pi(n)==="array"&&n.length===4)return"cmyk"}});var $i=C.unpack,Mi=C.last,vr=function(n){return Math.round(n*100)/100},Ti=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=$i(n,"hsla"),u=Mi(n)||"lsa";return l[0]=vr(l[0]||0),l[1]=vr(l[1]*100)+"%",l[2]=vr(l[2]*100)+"%",u==="hsla"||l.length>3&&l[3]<1?(l[3]=l.length>3?l[3]:1,u="hsla"):l.length=3,u+"("+l.join(",")+")"},Li=Ti,zi=C.unpack,Ii=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=zi(n,"rgba");var l=n[0],u=n[1],p=n[2];l/=255,u/=255,p/=255;var d=Math.min(l,u,p),f=Math.max(l,u,p),g=(f+d)/2,b,y;return f===d?(b=0,y=Number.NaN):b=g<.5?(f-d)/(f+d):(f-d)/(2-f-d),l==f?y=(u-p)/(f-d):u==f?y=2+(p-l)/(f-d):p==f&&(y=4+(l-u)/(f-d)),y*=60,y<0&&(y+=360),n.length>3&&n[3]!==void 0?[y,b,g,n[3]]:[y,b,g]},bn=Ii,Ai=C.unpack,Oi=C.last,Fi=Li,Ei=bn,br=Math.round,Di=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Ai(n,"rgba"),u=Oi(n)||"rgb";return u.substr(0,3)=="hsl"?Fi(Ei(l),u):(l[0]=br(l[0]),l[1]=br(l[1]),l[2]=br(l[2]),(u==="rgba"||l.length>3&&l[3]<1)&&(l[3]=l.length>3?l[3]:1,u="rgba"),u+"("+l.slice(0,u==="rgb"?3:4).join(",")+")")},Bi=Di,Ni=C.unpack,mr=Math.round,ji=function(){for(var n,i=[],l=arguments.length;l--;)i[l]=arguments[l];i=Ni(i,"hsl");var u=i[0],p=i[1],d=i[2],f,g,b;if(p===0)f=g=b=d*255;else{var y=[0,0,0],x=[0,0,0],R=d<.5?d*(1+p):d+p-d*p,S=2*d-R,T=u/360;y[0]=T+1/3,y[1]=T,y[2]=T-1/3;for(var M=0;M<3;M++)y[M]<0&&(y[M]+=1),y[M]>1&&(y[M]-=1),6*y[M]<1?x[M]=S+(R-S)*6*y[M]:2*y[M]<1?x[M]=R:3*y[M]<2?x[M]=S+(R-S)*(2/3-y[M])*6:x[M]=S;n=[mr(x[0]*255),mr(x[1]*255),mr(x[2]*255)],f=n[0],g=n[1],b=n[2]}return i.length>3?[f,g,b,i[3]]:[f,g,b,1]},mn=ji,yn=mn,wn=rt,xn=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Sn=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,kn=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Cn=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Pn=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Rn=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,$n=Math.round,Mn=function(n){n=n.toLowerCase().trim();var i;if(wn.format.named)try{return wn.format.named(n)}catch{}if(i=n.match(xn)){for(var l=i.slice(1,4),u=0;u<3;u++)l[u]=+l[u];return l[3]=1,l}if(i=n.match(Sn)){for(var p=i.slice(1,5),d=0;d<4;d++)p[d]=+p[d];return p}if(i=n.match(kn)){for(var f=i.slice(1,4),g=0;g<3;g++)f[g]=$n(f[g]*2.55);return f[3]=1,f}if(i=n.match(Cn)){for(var b=i.slice(1,5),y=0;y<3;y++)b[y]=$n(b[y]*2.55);return b[3]=+b[3],b}if(i=n.match(Pn)){var x=i.slice(1,4);x[1]*=.01,x[2]*=.01;var R=yn(x);return R[3]=1,R}if(i=n.match(Rn)){var S=i.slice(1,4);S[1]*=.01,S[2]*=.01;var T=yn(S);return T[3]=+i[4],T}};Mn.test=function(n){return xn.test(n)||Sn.test(n)||kn.test(n)||Cn.test(n)||Pn.test(n)||Rn.test(n)};var _i=Mn,qi=nt,Tn=D,Ln=rt,Wi=C.type,Gi=Bi,zn=_i;Tn.prototype.css=function(n){return Gi(this._rgb,n)},qi.css=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Tn,[null].concat(n,["css"])))},Ln.format.css=zn,Ln.autodetect.push({p:5,test:function(n){for(var i=[],l=arguments.length-1;l-- >0;)i[l]=arguments[l+1];if(!i.length&&Wi(n)==="string"&&zn.test(n))return"css"}});var In=D,Hi=nt,Xi=rt,Yi=C.unpack;Xi.format.gl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Yi(n,"rgba");return l[0]*=255,l[1]*=255,l[2]*=255,l},Hi.gl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(In,[null].concat(n,["gl"])))},In.prototype.gl=function(){var n=this._rgb;return[n[0]/255,n[1]/255,n[2]/255,n[3]]};var Ui=C.unpack,Zi=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Ui(n,"rgb"),u=l[0],p=l[1],d=l[2],f=Math.min(u,p,d),g=Math.max(u,p,d),b=g-f,y=b*100/255,x=f/(255-b)*100,R;return b===0?R=Number.NaN:(u===g&&(R=(p-d)/b),p===g&&(R=2+(d-u)/b),d===g&&(R=4+(u-p)/b),R*=60,R<0&&(R+=360)),[R,y,x]},Ji=Zi,Qi=C.unpack,Vi=Math.floor,Ki=function(){for(var n,i,l,u,p,d,f=[],g=arguments.length;g--;)f[g]=arguments[g];f=Qi(f,"hcg");var b=f[0],y=f[1],x=f[2],R,S,T;x=x*255;var M=y*255;if(y===0)R=S=T=x;else{b===360&&(b=0),b>360&&(b-=360),b<0&&(b+=360),b/=60;var B=Vi(b),_=b-B,G=x*(1-y),X=G+M*(1-_),lt=G+M*_,ot=G+M;switch(B){case 0:n=[ot,lt,G],R=n[0],S=n[1],T=n[2];break;case 1:i=[X,ot,G],R=i[0],S=i[1],T=i[2];break;case 2:l=[G,ot,lt],R=l[0],S=l[1],T=l[2];break;case 3:u=[G,X,ot],R=u[0],S=u[1],T=u[2];break;case 4:p=[lt,G,ot],R=p[0],S=p[1],T=p[2];break;case 5:d=[ot,G,X],R=d[0],S=d[1],T=d[2];break}}return[R,S,T,f.length>3?f[3]:1]},ta=Ki,ea=C.unpack,ra=C.type,na=nt,An=D,On=rt,sa=Ji;An.prototype.hcg=function(){return sa(this._rgb)},na.hcg=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(An,[null].concat(n,["hcg"])))},On.format.hcg=ta,On.autodetect.push({p:1,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=ea(n,"hcg"),ra(n)==="array"&&n.length===3)return"hcg"}});var ia=C.unpack,aa=C.last,Ue=Math.round,oa=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=ia(n,"rgba"),u=l[0],p=l[1],d=l[2],f=l[3],g=aa(n)||"auto";f===void 0&&(f=1),g==="auto"&&(g=f<1?"rgba":"rgb"),u=Ue(u),p=Ue(p),d=Ue(d);var b=u<<16|p<<8|d,y="000000"+b.toString(16);y=y.substr(y.length-6);var x="0"+Ue(f*255).toString(16);switch(x=x.substr(x.length-2),g.toLowerCase()){case"rgba":return"#"+y+x;case"argb":return"#"+x+y;default:return"#"+y}},Fn=oa,la=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,ha=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,ua=function(n){if(n.match(la)){(n.length===4||n.length===7)&&(n=n.substr(1)),n.length===3&&(n=n.split(""),n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]);var i=parseInt(n,16),l=i>>16,u=i>>8&255,p=i&255;return[l,u,p,1]}if(n.match(ha)){(n.length===5||n.length===9)&&(n=n.substr(1)),n.length===4&&(n=n.split(""),n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]);var d=parseInt(n,16),f=d>>24&255,g=d>>16&255,b=d>>8&255,y=Math.round((d&255)/255*100)/100;return[f,g,b,y]}throw new Error("unknown hex color: "+n)},En=ua,ca=nt,Dn=D,fa=C.type,Bn=rt,pa=Fn;Dn.prototype.hex=function(n){return pa(this._rgb,n)},ca.hex=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Dn,[null].concat(n,["hex"])))},Bn.format.hex=En,Bn.autodetect.push({p:4,test:function(n){for(var i=[],l=arguments.length-1;l-- >0;)i[l]=arguments[l+1];if(!i.length&&fa(n)==="string"&&[3,4,5,6,7,8,9].indexOf(n.length)>=0)return"hex"}});var da=C.unpack,Nn=C.TWOPI,ga=Math.min,va=Math.sqrt,ba=Math.acos,ma=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=da(n,"rgb"),u=l[0],p=l[1],d=l[2];u/=255,p/=255,d/=255;var f,g=ga(u,p,d),b=(u+p+d)/3,y=b>0?1-g/b:0;return y===0?f=NaN:(f=(u-p+(u-d))/2,f/=va((u-p)*(u-p)+(u-d)*(p-d)),f=ba(f),d>p&&(f=Nn-f),f/=Nn),[f*360,y,b]},ya=ma,wa=C.unpack,yr=C.limit,de=C.TWOPI,wr=C.PITHIRD,ge=Math.cos,xa=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=wa(n,"hsi");var l=n[0],u=n[1],p=n[2],d,f,g;return isNaN(l)&&(l=0),isNaN(u)&&(u=0),l>360&&(l-=360),l<0&&(l+=360),l/=360,l<1/3?(g=(1-u)/3,d=(1+u*ge(de*l)/ge(wr-de*l))/3,f=1-(g+d)):l<2/3?(l-=1/3,d=(1-u)/3,f=(1+u*ge(de*l)/ge(wr-de*l))/3,g=1-(d+f)):(l-=2/3,f=(1-u)/3,g=(1+u*ge(de*l)/ge(wr-de*l))/3,d=1-(f+g)),d=yr(p*d*3),f=yr(p*f*3),g=yr(p*g*3),[d*255,f*255,g*255,n.length>3?n[3]:1]},Sa=xa,ka=C.unpack,Ca=C.type,Pa=nt,jn=D,_n=rt,Ra=ya;jn.prototype.hsi=function(){return Ra(this._rgb)},Pa.hsi=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(jn,[null].concat(n,["hsi"])))},_n.format.hsi=Sa,_n.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=ka(n,"hsi"),Ca(n)==="array"&&n.length===3)return"hsi"}});var $a=C.unpack,Ma=C.type,Ta=nt,qn=D,Wn=rt,La=bn;qn.prototype.hsl=function(){return La(this._rgb)},Ta.hsl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(qn,[null].concat(n,["hsl"])))},Wn.format.hsl=mn,Wn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=$a(n,"hsl"),Ma(n)==="array"&&n.length===3)return"hsl"}});var za=C.unpack,Ia=Math.min,Aa=Math.max,Oa=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=za(n,"rgb");var l=n[0],u=n[1],p=n[2],d=Ia(l,u,p),f=Aa(l,u,p),g=f-d,b,y,x;return x=f/255,f===0?(b=Number.NaN,y=0):(y=g/f,l===f&&(b=(u-p)/g),u===f&&(b=2+(p-l)/g),p===f&&(b=4+(l-u)/g),b*=60,b<0&&(b+=360)),[b,y,x]},Fa=Oa,Ea=C.unpack,Da=Math.floor,Ba=function(){for(var n,i,l,u,p,d,f=[],g=arguments.length;g--;)f[g]=arguments[g];f=Ea(f,"hsv");var b=f[0],y=f[1],x=f[2],R,S,T;if(x*=255,y===0)R=S=T=x;else{b===360&&(b=0),b>360&&(b-=360),b<0&&(b+=360),b/=60;var M=Da(b),B=b-M,_=x*(1-y),G=x*(1-y*B),X=x*(1-y*(1-B));switch(M){case 0:n=[x,X,_],R=n[0],S=n[1],T=n[2];break;case 1:i=[G,x,_],R=i[0],S=i[1],T=i[2];break;case 2:l=[_,x,X],R=l[0],S=l[1],T=l[2];break;case 3:u=[_,G,x],R=u[0],S=u[1],T=u[2];break;case 4:p=[X,_,x],R=p[0],S=p[1],T=p[2];break;case 5:d=[x,_,G],R=d[0],S=d[1],T=d[2];break}}return[R,S,T,f.length>3?f[3]:1]},Na=Ba,ja=C.unpack,_a=C.type,qa=nt,Gn=D,Hn=rt,Wa=Fa;Gn.prototype.hsv=function(){return Wa(this._rgb)},qa.hsv=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Gn,[null].concat(n,["hsv"])))},Hn.format.hsv=Na,Hn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=ja(n,"hsv"),_a(n)==="array"&&n.length===3)return"hsv"}});var Ze={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ve=Ze,Ga=C.unpack,Xn=Math.pow,Ha=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Ga(n,"rgb"),u=l[0],p=l[1],d=l[2],f=Xa(u,p,d),g=f[0],b=f[1],y=f[2],x=116*b-16;return[x<0?0:x,500*(g-b),200*(b-y)]},xr=function(n){return(n/=255)<=.04045?n/12.92:Xn((n+.055)/1.055,2.4)},Sr=function(n){return n>ve.t3?Xn(n,1/3):n/ve.t2+ve.t0},Xa=function(n,i,l){n=xr(n),i=xr(i),l=xr(l);var u=Sr((.4124564*n+.3575761*i+.1804375*l)/ve.Xn),p=Sr((.2126729*n+.7151522*i+.072175*l)/ve.Yn),d=Sr((.0193339*n+.119192*i+.9503041*l)/ve.Zn);return[u,p,d]},Yn=Ha,be=Ze,Ya=C.unpack,Ua=Math.pow,Za=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=Ya(n,"lab");var l=n[0],u=n[1],p=n[2],d,f,g,b,y,x;return f=(l+16)/116,d=isNaN(u)?f:f+u/500,g=isNaN(p)?f:f-p/200,f=be.Yn*Cr(f),d=be.Xn*Cr(d),g=be.Zn*Cr(g),b=kr(3.2404542*d-1.5371385*f-.4985314*g),y=kr(-.969266*d+1.8760108*f+.041556*g),x=kr(.0556434*d-.2040259*f+1.0572252*g),[b,y,x,n.length>3?n[3]:1]},kr=function(n){return 255*(n<=.00304?12.92*n:1.055*Ua(n,1/2.4)-.055)},Cr=function(n){return n>be.t1?n*n*n:be.t2*(n-be.t0)},Un=Za,Ja=C.unpack,Qa=C.type,Va=nt,Zn=D,Jn=rt,Ka=Yn;Zn.prototype.lab=function(){return Ka(this._rgb)},Va.lab=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Zn,[null].concat(n,["lab"])))},Jn.format.lab=Un,Jn.autodetect.push({p:2,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=Ja(n,"lab"),Qa(n)==="array"&&n.length===3)return"lab"}});var to=C.unpack,eo=C.RAD2DEG,ro=Math.sqrt,no=Math.atan2,so=Math.round,io=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=to(n,"lab"),u=l[0],p=l[1],d=l[2],f=ro(p*p+d*d),g=(no(d,p)*eo+360)%360;return so(f*1e4)===0&&(g=Number.NaN),[u,f,g]},Qn=io,ao=C.unpack,oo=Yn,lo=Qn,ho=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=ao(n,"rgb"),u=l[0],p=l[1],d=l[2],f=oo(u,p,d),g=f[0],b=f[1],y=f[2];return lo(g,b,y)},uo=ho,co=C.unpack,fo=C.DEG2RAD,po=Math.sin,go=Math.cos,vo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=co(n,"lch"),u=l[0],p=l[1],d=l[2];return isNaN(d)&&(d=0),d=d*fo,[u,go(d)*p,po(d)*p]},Vn=vo,bo=C.unpack,mo=Vn,yo=Un,wo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=bo(n,"lch");var l=n[0],u=n[1],p=n[2],d=mo(l,u,p),f=d[0],g=d[1],b=d[2],y=yo(f,g,b),x=y[0],R=y[1],S=y[2];return[x,R,S,n.length>3?n[3]:1]},Kn=wo,xo=C.unpack,So=Kn,ko=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=xo(n,"hcl").reverse();return So.apply(void 0,l)},Co=ko,Po=C.unpack,Ro=C.type,ts=nt,Je=D,Pr=rt,es=uo;Je.prototype.lch=function(){return es(this._rgb)},Je.prototype.hcl=function(){return es(this._rgb).reverse()},ts.lch=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Je,[null].concat(n,["lch"])))},ts.hcl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Je,[null].concat(n,["hcl"])))},Pr.format.lch=Kn,Pr.format.hcl=Co,["lch","hcl"].forEach(function(n){return Pr.autodetect.push({p:2,test:function(){for(var i=[],l=arguments.length;l--;)i[l]=arguments[l];if(i=Po(i,n),Ro(i)==="array"&&i.length===3)return n}})});var $o={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},rs=$o,Mo=D,ns=rt,To=C.type,Ie=rs,Lo=En,zo=Fn;Mo.prototype.name=function(){for(var n=zo(this._rgb,"rgb"),i=0,l=Object.keys(Ie);i0;)i[l]=arguments[l+1];if(!i.length&&To(n)==="string"&&Ie[n.toLowerCase()])return"named"}});var Io=C.unpack,Ao=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Io(n,"rgb"),u=l[0],p=l[1],d=l[2];return(u<<16)+(p<<8)+d},Oo=Ao,Fo=C.type,Eo=function(n){if(Fo(n)=="number"&&n>=0&&n<=16777215){var i=n>>16,l=n>>8&255,u=n&255;return[i,l,u,1]}throw new Error("unknown num color: "+n)},Do=Eo,Bo=nt,ss=D,is=rt,No=C.type,jo=Oo;ss.prototype.num=function(){return jo(this._rgb)},Bo.num=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(ss,[null].concat(n,["num"])))},is.format.num=Do,is.autodetect.push({p:5,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n.length===1&&No(n[0])==="number"&&n[0]>=0&&n[0]<=16777215)return"num"}});var _o=nt,Rr=D,as=rt,os=C.unpack,ls=C.type,hs=Math.round;Rr.prototype.rgb=function(n){return n===void 0&&(n=!0),n===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(hs)},Rr.prototype.rgba=function(n){return n===void 0&&(n=!0),this._rgb.slice(0,4).map(function(i,l){return l<3?n===!1?i:hs(i):i})},_o.rgb=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Rr,[null].concat(n,["rgb"])))},as.format.rgb=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=os(n,"rgba");return l[3]===void 0&&(l[3]=1),l},as.autodetect.push({p:3,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=os(n,"rgba"),ls(n)==="array"&&(n.length===3||n.length===4&&ls(n[3])=="number"&&n[3]>=0&&n[3]<=1))return"rgb"}});var Qe=Math.log,qo=function(n){var i=n/100,l,u,p;return i<66?(l=255,u=i<6?0:-155.25485562709179-.44596950469579133*(u=i-2)+104.49216199393888*Qe(u),p=i<20?0:-254.76935184120902+.8274096064007395*(p=i-10)+115.67994401066147*Qe(p)):(l=351.97690566805693+.114206453784165*(l=i-55)-40.25366309332127*Qe(l),u=325.4494125711974+.07943456536662342*(u=i-50)-28.0852963507957*Qe(u),p=255),[l,u,p,1]},us=qo,Wo=us,Go=C.unpack,Ho=Math.round,Xo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];for(var l=Go(n,"rgb"),u=l[0],p=l[2],d=1e3,f=4e4,g=.4,b;f-d>g;){b=(f+d)*.5;var y=Wo(b);y[2]/y[0]>=p/u?f=b:d=b}return Ho(b)},Yo=Xo,$r=nt,Ve=D,Mr=rt,Uo=Yo;Ve.prototype.temp=Ve.prototype.kelvin=Ve.prototype.temperature=function(){return Uo(this._rgb)},$r.temp=$r.kelvin=$r.temperature=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(Ve,[null].concat(n,["temp"])))},Mr.format.temp=Mr.format.kelvin=Mr.format.temperature=us;var Zo=C.unpack,Tr=Math.cbrt,Jo=Math.pow,Qo=Math.sign,Vo=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=Zo(n,"rgb"),u=l[0],p=l[1],d=l[2],f=[Lr(u/255),Lr(p/255),Lr(d/255)],g=f[0],b=f[1],y=f[2],x=Tr(.4122214708*g+.5363325363*b+.0514459929*y),R=Tr(.2119034982*g+.6806995451*b+.1073969566*y),S=Tr(.0883024619*g+.2817188376*b+.6299787005*y);return[.2104542553*x+.793617785*R-.0040720468*S,1.9779984951*x-2.428592205*R+.4505937099*S,.0259040371*x+.7827717662*R-.808675766*S]},cs=Vo;function Lr(n){var i=Math.abs(n);return i<.04045?n/12.92:(Qo(n)||1)*Jo((i+.055)/1.055,2.4)}var Ko=C.unpack,Ke=Math.pow,tl=Math.sign,el=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=Ko(n,"lab");var l=n[0],u=n[1],p=n[2],d=Ke(l+.3963377774*u+.2158037573*p,3),f=Ke(l-.1055613458*u-.0638541728*p,3),g=Ke(l-.0894841775*u-1.291485548*p,3);return[255*zr(4.0767416621*d-3.3077115913*f+.2309699292*g),255*zr(-1.2684380046*d+2.6097574011*f-.3413193965*g),255*zr(-.0041960863*d-.7034186147*f+1.707614701*g),n.length>3?n[3]:1]},fs=el;function zr(n){var i=Math.abs(n);return i>.0031308?(tl(n)||1)*(1.055*Ke(i,1/2.4)-.055):n*12.92}var rl=C.unpack,nl=C.type,sl=nt,ps=D,ds=rt,il=cs;ps.prototype.oklab=function(){return il(this._rgb)},sl.oklab=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(ps,[null].concat(n,["oklab"])))},ds.format.oklab=fs,ds.autodetect.push({p:3,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=rl(n,"oklab"),nl(n)==="array"&&n.length===3)return"oklab"}});var al=C.unpack,ol=cs,ll=Qn,hl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var l=al(n,"rgb"),u=l[0],p=l[1],d=l[2],f=ol(u,p,d),g=f[0],b=f[1],y=f[2];return ll(g,b,y)},ul=hl,cl=C.unpack,fl=Vn,pl=fs,dl=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];n=cl(n,"lch");var l=n[0],u=n[1],p=n[2],d=fl(l,u,p),f=d[0],g=d[1],b=d[2],y=pl(f,g,b),x=y[0],R=y[1],S=y[2];return[x,R,S,n.length>3?n[3]:1]},gl=dl,vl=C.unpack,bl=C.type,ml=nt,gs=D,vs=rt,yl=ul;gs.prototype.oklch=function(){return yl(this._rgb)},ml.oklch=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return new(Function.prototype.bind.apply(gs,[null].concat(n,["oklch"])))},vs.format.oklch=gl,vs.autodetect.push({p:3,test:function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n=vl(n,"oklch"),bl(n)==="array"&&n.length===3)return"oklch"}});var bs=D,wl=C.type;bs.prototype.alpha=function(n,i){return i===void 0&&(i=!1),n!==void 0&&wl(n)==="number"?i?(this._rgb[3]=n,this):new bs([this._rgb[0],this._rgb[1],this._rgb[2],n],"rgb"):this._rgb[3]};var xl=D;xl.prototype.clipped=function(){return this._rgb._clipped||!1};var se=D,Sl=Ze;se.prototype.darken=function(n){n===void 0&&(n=1);var i=this,l=i.lab();return l[0]-=Sl.Kn*n,new se(l,"lab").alpha(i.alpha(),!0)},se.prototype.brighten=function(n){return n===void 0&&(n=1),this.darken(-n)},se.prototype.darker=se.prototype.darken,se.prototype.brighter=se.prototype.brighten;var kl=D;kl.prototype.get=function(n){var i=n.split("."),l=i[0],u=i[1],p=this[l]();if(u){var d=l.indexOf(u)-(l.substr(0,2)==="ok"?2:0);if(d>-1)return p[d];throw new Error("unknown channel "+u+" in mode "+l)}else return p};var me=D,Cl=C.type,Pl=Math.pow,Rl=1e-7,$l=20;me.prototype.luminance=function(n){if(n!==void 0&&Cl(n)==="number"){if(n===0)return new me([0,0,0,this._rgb[3]],"rgb");if(n===1)return new me([255,255,255,this._rgb[3]],"rgb");var i=this.luminance(),l="rgb",u=$l,p=function(f,g){var b=f.interpolate(g,.5,l),y=b.luminance();return Math.abs(n-y)n?p(f,b):p(b,g)},d=(i>n?p(new me([0,0,0]),this):p(this,new me([255,255,255]))).rgb();return new me(d.concat([this._rgb[3]]))}return Ml.apply(void 0,this._rgb.slice(0,3))};var Ml=function(n,i,l){return n=Ir(n),i=Ir(i),l=Ir(l),.2126*n+.7152*i+.0722*l},Ir=function(n){return n/=255,n<=.03928?n/12.92:Pl((n+.055)/1.055,2.4)},vt={},ms=D,ys=C.type,tr=vt,ws=function(n,i,l){l===void 0&&(l=.5);for(var u=[],p=arguments.length-3;p-- >0;)u[p]=arguments[p+3];var d=u[0]||"lrgb";if(!tr[d]&&!u.length&&(d=Object.keys(tr)[0]),!tr[d])throw new Error("interpolation mode "+d+" is not defined");return ys(n)!=="object"&&(n=new ms(n)),ys(i)!=="object"&&(i=new ms(i)),tr[d](n,i,l).alpha(n.alpha()+l*(i.alpha()-n.alpha()))},xs=D,Tl=ws;xs.prototype.mix=xs.prototype.interpolate=function(n,i){i===void 0&&(i=.5);for(var l=[],u=arguments.length-2;u-- >0;)l[u]=arguments[u+2];return Tl.apply(void 0,[this,n,i].concat(l))};var Ss=D;Ss.prototype.premultiply=function(n){n===void 0&&(n=!1);var i=this._rgb,l=i[3];return n?(this._rgb=[i[0]*l,i[1]*l,i[2]*l,l],this):new Ss([i[0]*l,i[1]*l,i[2]*l,l],"rgb")};var Ar=D,Ll=Ze;Ar.prototype.saturate=function(n){n===void 0&&(n=1);var i=this,l=i.lch();return l[1]+=Ll.Kn*n,l[1]<0&&(l[1]=0),new Ar(l,"lch").alpha(i.alpha(),!0)},Ar.prototype.desaturate=function(n){return n===void 0&&(n=1),this.saturate(-n)};var ks=D,Cs=C.type;ks.prototype.set=function(n,i,l){l===void 0&&(l=!1);var u=n.split("."),p=u[0],d=u[1],f=this[p]();if(d){var g=p.indexOf(d)-(p.substr(0,2)==="ok"?2:0);if(g>-1){if(Cs(i)=="string")switch(i.charAt(0)){case"+":f[g]+=+i;break;case"-":f[g]+=+i;break;case"*":f[g]*=+i.substr(1);break;case"/":f[g]/=+i.substr(1);break;default:f[g]=+i}else if(Cs(i)==="number")f[g]=i;else throw new Error("unsupported value for Color.set");var b=new ks(f,p);return l?(this._rgb=b._rgb,this):b}throw new Error("unknown channel "+d+" in mode "+p)}else return f};var zl=D,Il=function(n,i,l){var u=n._rgb,p=i._rgb;return new zl(u[0]+l*(p[0]-u[0]),u[1]+l*(p[1]-u[1]),u[2]+l*(p[2]-u[2]),"rgb")};vt.rgb=Il;var Al=D,Or=Math.sqrt,ye=Math.pow,Ol=function(n,i,l){var u=n._rgb,p=u[0],d=u[1],f=u[2],g=i._rgb,b=g[0],y=g[1],x=g[2];return new Al(Or(ye(p,2)*(1-l)+ye(b,2)*l),Or(ye(d,2)*(1-l)+ye(y,2)*l),Or(ye(f,2)*(1-l)+ye(x,2)*l),"rgb")};vt.lrgb=Ol;var Fl=D,El=function(n,i,l){var u=n.lab(),p=i.lab();return new Fl(u[0]+l*(p[0]-u[0]),u[1]+l*(p[1]-u[1]),u[2]+l*(p[2]-u[2]),"lab")};vt.lab=El;var Ps=D,we=function(n,i,l,u){var p,d,f,g;u==="hsl"?(f=n.hsl(),g=i.hsl()):u==="hsv"?(f=n.hsv(),g=i.hsv()):u==="hcg"?(f=n.hcg(),g=i.hcg()):u==="hsi"?(f=n.hsi(),g=i.hsi()):u==="lch"||u==="hcl"?(u="hcl",f=n.hcl(),g=i.hcl()):u==="oklch"&&(f=n.oklch().reverse(),g=i.oklch().reverse());var b,y,x,R,S,T;(u.substr(0,1)==="h"||u==="oklch")&&(p=f,b=p[0],x=p[1],S=p[2],d=g,y=d[0],R=d[1],T=d[2]);var M,B,_,G;return!isNaN(b)&&!isNaN(y)?(y>b&&y-b>180?G=y-(b+360):y180?G=y+360-b:G=y-b,B=b+l*G):isNaN(b)?isNaN(y)?B=Number.NaN:(B=y,(S==1||S==0)&&u!="hsv"&&(M=R)):(B=b,(T==1||T==0)&&u!="hsv"&&(M=x)),M===void 0&&(M=x+l*(R-x)),_=S+l*(T-S),u==="oklch"?new Ps([_,M,B],u):new Ps([B,M,_],u)},Dl=we,Rs=function(n,i,l){return Dl(n,i,l,"lch")};vt.lch=Rs,vt.hcl=Rs;var Bl=D,Nl=function(n,i,l){var u=n.num(),p=i.num();return new Bl(u+l*(p-u),"num")};vt.num=Nl;var jl=we,_l=function(n,i,l){return jl(n,i,l,"hcg")};vt.hcg=_l;var ql=we,Wl=function(n,i,l){return ql(n,i,l,"hsi")};vt.hsi=Wl;var Gl=we,Hl=function(n,i,l){return Gl(n,i,l,"hsl")};vt.hsl=Hl;var Xl=we,Yl=function(n,i,l){return Xl(n,i,l,"hsv")};vt.hsv=Yl;var Ul=D,Zl=function(n,i,l){var u=n.oklab(),p=i.oklab();return new Ul(u[0]+l*(p[0]-u[0]),u[1]+l*(p[1]-u[1]),u[2]+l*(p[2]-u[2]),"oklab")};vt.oklab=Zl;var Jl=we,Ql=function(n,i,l){return Jl(n,i,l,"oklch")};vt.oklch=Ql;var Fr=D,Vl=C.clip_rgb,Er=Math.pow,Dr=Math.sqrt,Br=Math.PI,$s=Math.cos,Ms=Math.sin,Kl=Math.atan2,th=function(n,i,l){i===void 0&&(i="lrgb"),l===void 0&&(l=null);var u=n.length;l||(l=Array.from(new Array(u)).map(function(){return 1}));var p=u/l.reduce(function(B,_){return B+_});if(l.forEach(function(B,_){l[_]*=p}),n=n.map(function(B){return new Fr(B)}),i==="lrgb")return eh(n,l);for(var d=n.shift(),f=d.get(i),g=[],b=0,y=0,x=0;x=360;)M-=360;f[T]=M}else f[T]=f[T]/g[T];return S/=u,new Fr(f,i).alpha(S>.99999?1:S,!0)},eh=function(n,i){for(var l=n.length,u=[0,0,0,0],p=0;p.9999999&&(u[3]=1),new Fr(Vl(u))},kt=nt,xe=C.type,rh=Math.pow,Nr=function(n){var i="rgb",l=kt("#ccc"),u=0,p=[0,1],d=[],f=[0,0],g=!1,b=[],y=!1,x=0,R=1,S=!1,T={},M=!0,B=1,_=function(k){if(k=k||["#fff","#000"],k&&xe(k)==="string"&&kt.brewer&&kt.brewer[k.toLowerCase()]&&(k=kt.brewer[k.toLowerCase()]),xe(k)==="array"){k.length===1&&(k=[k[0],k[0]]),k=k.slice(0);for(var A=0;A=g[j];)j++;return j-1}return 0},X=function(k){return k},lt=function(k){return k},ot=function(k,A){var j,N;if(A==null&&(A=!1),isNaN(k)||k===null)return l;if(A)N=k;else if(g&&g.length>2){var ht=G(k);N=ht/(g.length-2)}else R!==x?N=(k-x)/(R-x):N=1;N=lt(N),A||(N=X(N)),B!==1&&(N=rh(N,B)),N=f[0]+N*(1-f[0]-f[1]),N=Math.min(1,Math.max(0,N));var Q=Math.floor(N*1e4);if(M&&T[Q])j=T[Q];else{if(xe(b)==="array")for(var H=0;H=U&&H===d.length-1){j=b[H];break}if(N>U&&N2){var H=k.map(function(Z,J){return J/(k.length-1)}),U=k.map(function(Z){return(Z-x)/(R-x)});U.every(function(Z,J){return H[J]===Z})||(lt=function(Z){if(Z<=0||Z>=1)return Z;for(var J=0;Z>=U[J+1];)J++;var Pt=(Z-U[J])/(U[J+1]-U[J]),Xt=H[J]+Pt*(H[J+1]-H[J]);return Xt})}}return p=[x,R],W},W.mode=function(k){return arguments.length?(i=k,pt(),W):i},W.range=function(k,A){return _(k),W},W.out=function(k){return y=k,W},W.spread=function(k){return arguments.length?(u=k,W):u},W.correctLightness=function(k){return k==null&&(k=!0),S=k,pt(),S?X=function(A){for(var j=ot(0,!0).lab()[0],N=ot(1,!0).lab()[0],ht=j>N,Q=ot(A,!0).lab()[0],H=j+(N-j)*A,U=Q-H,Z=0,J=1,Pt=20;Math.abs(U)>.01&&Pt-- >0;)(function(){return ht&&(U*=-1),U<0?(Z=A,A+=(J-A)*.5):(J=A,A+=(Z-A)*.5),Q=ot(A,!0).lab()[0],U=Q-H})();return A}:X=function(A){return A},W},W.padding=function(k){return k!=null?(xe(k)==="number"&&(k=[k,k]),f=k,W):f},W.colors=function(k,A){arguments.length<2&&(A="hex");var j=[];if(arguments.length===0)j=b.slice(0);else if(k===1)j=[W(.5)];else if(k>1){var N=p[0],ht=p[1]-N;j=nh(0,k,!1).map(function(J){return W(N+J/(k-1)*ht)})}else{n=[];var Q=[];if(g&&g.length>2)for(var H=1,U=g.length,Z=1<=U;Z?HU;Z?H++:H--)Q.push((g[H-1]+g[H])*.5);else Q=p;j=Q.map(function(J){return W(J)})}return kt[A]&&(j=j.map(function(J){return J[A]()})),j},W.cache=function(k){return k!=null?(M=k,W):M},W.gamma=function(k){return k!=null?(B=k,W):B},W.nodata=function(k){return k!=null?(l=kt(k),W):l},W};function nh(n,i,l){for(var u=[],p=nd;p?f++:f--)u.push(f);return u}var Ae=D,sh=Nr,ih=function(n){for(var i=[1,1],l=1;l=5){var y,x,R;y=n.map(function(S){return S.lab()}),R=n.length-1,x=ih(R),p=function(S){var T=1-S,M=[0,1,2].map(function(B){return y.reduce(function(_,G,X){return _+x[X]*Math.pow(T,R-X)*Math.pow(S,X)*G[B]},0)});return new Ae(M,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return p},oh=function(n){var i=ah(n);return i.scale=function(){return sh(i)},i},jr=nt,Ct=function(n,i,l){if(!Ct[l])throw new Error("unknown blend mode "+l);return Ct[l](n,i)},Gt=function(n){return function(i,l){var u=jr(l).rgb(),p=jr(i).rgb();return jr.rgb(n(u,p))}},Ht=function(n){return function(i,l){var u=[];return u[0]=n(i[0],l[0]),u[1]=n(i[1],l[1]),u[2]=n(i[2],l[2]),u}},lh=function(n){return n},hh=function(n,i){return n*i/255},uh=function(n,i){return n>i?i:n},ch=function(n,i){return n>i?n:i},fh=function(n,i){return 255*(1-(1-n/255)*(1-i/255))},ph=function(n,i){return i<128?2*n*i/255:255*(1-2*(1-n/255)*(1-i/255))},dh=function(n,i){return 255*(1-(1-i/255)/(n/255))},gh=function(n,i){return n===255?255:(n=255*(i/255)/(1-n/255),n>255?255:n)};Ct.normal=Gt(Ht(lh)),Ct.multiply=Gt(Ht(hh)),Ct.screen=Gt(Ht(fh)),Ct.overlay=Gt(Ht(ph)),Ct.darken=Gt(Ht(uh)),Ct.lighten=Gt(Ht(ch)),Ct.dodge=Gt(Ht(gh)),Ct.burn=Gt(Ht(dh));for(var vh=Ct,_r=C.type,bh=C.clip_rgb,mh=C.TWOPI,yh=Math.pow,wh=Math.sin,xh=Math.cos,Ts=nt,Sh=function(n,i,l,u,p){n===void 0&&(n=300),i===void 0&&(i=-1.5),l===void 0&&(l=1),u===void 0&&(u=1),p===void 0&&(p=[0,1]);var d=0,f;_r(p)==="array"?f=p[1]-p[0]:(f=0,p=[p,p]);var g=function(b){var y=mh*((n+120)/360+i*b),x=yh(p[0]+f*b,u),R=d!==0?l[0]+b*d:l,S=R*x*(1-x)/2,T=xh(y),M=wh(y),B=x+S*(-.14861*T+1.78277*M),_=x+S*(-.29227*T-.90649*M),G=x+S*(1.97294*T);return Ts(bh([B*255,_*255,G*255,1]))};return g.start=function(b){return b==null?n:(n=b,g)},g.rotations=function(b){return b==null?i:(i=b,g)},g.gamma=function(b){return b==null?u:(u=b,g)},g.hue=function(b){return b==null?l:(l=b,_r(l)==="array"?(d=l[1]-l[0],d===0&&(l=l[1])):d=0,g)},g.lightness=function(b){return b==null?p:(_r(b)==="array"?(p=b,f=b[1]-b[0]):(p=[b,b],f=0),g)},g.scale=function(){return Ts.scale(g)},g.hue(l),g},kh=D,Ch="0123456789abcdef",Ph=Math.floor,Rh=Math.random,$h=function(){for(var n="#",i=0;i<6;i++)n+=Ch.charAt(Ph(Rh()*16));return new kh(n,"hex")},qr=w,Ls=Math.log,Mh=Math.pow,Th=Math.floor,Lh=Math.abs,zs=function(n,i){i===void 0&&(i=null);var l={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return qr(n)==="object"&&(n=Object.values(n)),n.forEach(function(u){i&&qr(u)==="object"&&(u=u[i]),u!=null&&!isNaN(u)&&(l.values.push(u),l.sum+=u,ul.max&&(l.max=u),l.count+=1)}),l.domain=[l.min,l.max],l.limits=function(u,p){return Is(l,u,p)},l},Is=function(n,i,l){i===void 0&&(i="equal"),l===void 0&&(l=7),qr(n)=="array"&&(n=zs(n));var u=n.min,p=n.max,d=n.values.sort(function(Gr,Hr){return Gr-Hr});if(l===1)return[u,p];var f=[];if(i.substr(0,1)==="c"&&(f.push(u),f.push(p)),i.substr(0,1)==="e"){f.push(u);for(var g=1;g 0");var b=Math.LOG10E*Ls(u),y=Math.LOG10E*Ls(p);f.push(u);for(var x=1;x200&&(lt=!1)}for(var Yt={},Se=0;Seu?(l+.05)/(u+.05):(u+.05)/(l+.05)},Fs=D,Ft=Math.sqrt,st=Math.pow,Ih=Math.min,Ah=Math.max,Es=Math.atan2,Ds=Math.abs,er=Math.cos,Bs=Math.sin,Oh=Math.exp,Ns=Math.PI,Fh=function(n,i,l,u,p){l===void 0&&(l=1),u===void 0&&(u=1),p===void 0&&(p=1);var d=function(ae){return 360*ae/(2*Ns)},f=function(ae){return 2*Ns*ae/360};n=new Fs(n),i=new Fs(i);var g=Array.from(n.lab()),b=g[0],y=g[1],x=g[2],R=Array.from(i.lab()),S=R[0],T=R[1],M=R[2],B=(b+S)/2,_=Ft(st(y,2)+st(x,2)),G=Ft(st(T,2)+st(M,2)),X=(_+G)/2,lt=.5*(1-Ft(st(X,7)/(st(X,7)+st(25,7)))),ot=y*(1+lt),pt=T*(1+lt),W=Ft(st(ot,2)+st(x,2)),k=Ft(st(pt,2)+st(M,2)),A=(W+k)/2,j=d(Es(x,ot)),N=d(Es(M,pt)),ht=j>=0?j:j+360,Q=N>=0?N:N+360,H=Ds(ht-Q)>180?(ht+Q+360)/2:(ht+Q)/2,U=1-.17*er(f(H-30))+.24*er(f(2*H))+.32*er(f(3*H+6))-.2*er(f(4*H-63)),Z=Q-ht;Z=Ds(Z)<=180?Z:Q<=ht?Z+360:Z-360,Z=2*Ft(W*k)*Bs(f(Z)/2);var J=S-b,Pt=k-W,Xt=1+.015*st(B-50,2)/Ft(20+st(B-50,2)),Yt=1+.045*A,Se=1+.015*A*U,ke=30*Oh(-st((H-275)/25,2)),Et=2*Ft(st(A,7)/(st(A,7)+st(25,7))),ie=-Et*Bs(2*f(ke)),Oe=Ft(st(J/(l*Xt),2)+st(Pt/(u*Yt),2)+st(Z/(p*Se),2)+ie*(Pt/(u*Yt))*(Z/(p*Se)));return Ah(0,Ih(100,Oe))},js=D,Eh=function(n,i,l){l===void 0&&(l="lab"),n=new js(n),i=new js(i);var u=n.get(l),p=i.get(l),d=0;for(var f in u){var g=(u[f]||0)-(p[f]||0);d+=g*g}return Math.sqrt(d)},Dh=D,Bh=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];try{return new(Function.prototype.bind.apply(Dh,[null].concat(n))),!0}catch{return!1}},_s=nt,qs=Nr,Nh={cool:function(){return qs([_s.hsl(180,1,.9),_s.hsl(250,.7,.4)])},hot:function(){return qs(["#000","#f00","#ff0","#fff"]).mode("rgb")}},rr={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},Wr=0,Ws=Object.keys(rr);WruseThread() can only be called from within generator functions. + It's not available during rendering.

+`);return s}function Zh(s){tn.push(s)}function Jh(s){if(tn.pop()!==s)throw new Error("startThread/endThread was called out of order.")}function Fe(s){return s[0].toUpperCase()+s.slice(1)}function ai(s){return{message:s.message,stack:s.stack,remarks:s.remarks}}const Qh=180/Math.PI,Zt=Math.PI/180;function Hs(s,t,e){let r=0,a=s;t!==void 0&&(r=s,a=t),e=e===void 0?r{this.resolveCurrent=t})}release(){var t;this.current=null,(t=this.resolveCurrent)==null||t.call(this),this.resolveCurrent=null}}const en=[];function oi(){const s=en.at(-1);if(!s)throw new Error("The playback is not available in the current context.");return s}function Kh(s){en.push(s)}function tu(s){if(en.pop()!==s)throw new Error("startPlayback/endPlayback were called out of order.")}function ce(s,...t){const e={[s.name]:s},r=Object.getOwnPropertyDescriptor(e,s.name);if(r)for(let a=t.length-1;a>=0;a--)t[a](e,s.name,r)}const Xs=Symbol.for("@motion-canvas/core/decorators/UNINITIALIZED");function rn(s){return(t,e)=>{let r=Xs;Object.defineProperty(t,e,{get(){return r===Xs&&(r=s.call(this)),r}})}}function wt(s){return function(t,e,r){r.value.prototype.name=s??e,r.value.prototype.threadable=!0}}ce(li,wt());function*li(s,...t){let e=!0;typeof s=="boolean"?e=s:t.push(s);const r=or(),a=t.map(c=>r.children.find(m=>m.runner===c)).filter(c=>c),o=r.time();let h;if(e){for(;a.find(c=>!c.canceled);)yield;h=Math.max(...a.map(c=>c.time()))}else{for(;!a.find(m=>m.canceled);)yield;const c=a.filter(m=>m.canceled);h=Math.min(...c.map(m=>m.time()))}r.time(Math.max(o,h))}function ir(s,t){const e=Object.getPrototypeOf(s);e.threadable||(e.threadable=!0,e.name=typeof t=="string"?t:eu(t))}function eu(s){return Object.getPrototypeOf(s).name??null}class Ys{get fixed(){return this.fixedTime}get canceled(){var t;return this.isCanceled||(((t=this.parent)==null?void 0:t.canceled)??!1)}get paused(){var t;return this.isPaused||(((t=this.parent)==null?void 0:t.paused)??!1)}constructor(t){this.runner=t,this.children=[],this.time=Te(0),this.parent=null,this.isCanceled=!1,this.isPaused=!1,this.fixedTime=0}next(){if(this.paused)return{value:null,done:!1};Zh(this);const t=this.runner.next(this.value);return Jh(this),this.value=null,t}update(t){this.paused||(this.time(this.time()+t),this.fixedTime+=t),this.children=this.children.filter(e=>!e.canceled)}add(t){t.cancel(),t.parent=this,t.isCanceled=!1,t.time(this.time()),t.fixedTime=this.fixedTime,this.children.push(t),ir(t.runner,`unknown ${this.children.length}`)}cancel(){this.isCanceled=!0,this.parent=null}pause(t){this.isPaused=t}}function ru(s){return s&&(typeof s=="object"||typeof s=="function")&&"toPromise"in s}function nu(s){return s!==null&&typeof s=="object"&&Symbol.iterator in s&&"next"in s}function su(s){return typeof(s==null?void 0:s.then)=="function"}ce(hi,wt());function*hi(s,t){const e=oi(),r=s();ir(r,"root");const a=new Ys(r);t==null||t(a);let o=[a];for(;o.length>0;){const h=[],c=[...o],m=e.framesToSeconds(1)*e.speed;for(;c.length>0;){const w=c.pop();if(!w||w.canceled)continue;const P=w.next();if(P.done){w.cancel();continue}if(nu(P.value)){const O=new Ys(P.value);w.value=P.value,w.add(O),c.push(w),c.push(O)}else P.value?(w.value=yield P.value,c.push(w)):(w.update(m),h.unshift(w))}o=h.filter(w=>!w.canceled),o.length>0&&(yield)}}class iu{constructor(t){this.scene=t,this.signals={},this.variables={},this.handleReset=()=>{this.signals={}},t.onReset.subscribe(this.handleReset)}get(t,e){var r;return(r=this.signals)[t]??(r[t]=Te(this.variables[t]??e)),()=>this.signals[t]()}updateSignals(t){this.variables=t,Object.keys(t).map(e=>{e in this.signals&&this.signals[e](t[e])})}}var zt;(function(s){s[s.BeforeRender=0]="BeforeRender",s[s.BeginRender=1]="BeginRender",s[s.FinishRender=2]="FinishRender",s[s.AfterRender=3]="AfterRender"})(zt||(zt={}));class au{get onBeforeRender(){return this.beforeRender.subscribable}get onBeginRender(){return this.beginRender.subscribable}get onFinishRender(){return this.finishRender.subscribable}get onAfterRender(){return this.afterRender.subscribable}constructor(t){this.scene=t,this.beforeRender=new Lt,this.beginRender=new Lt,this.finishRender=new Lt,this.afterRender=new Lt,this.scene.onRenderLifecycle.subscribe(([e,r])=>{switch(e){case zt.BeforeRender:return this.beforeRender.dispatch(r);case zt.BeginRender:return this.beginRender.dispatch(r);case zt.FinishRender:return this.finishRender.dispatch(r);case zt.AfterRender:return this.afterRender.dispatch(r)}}),this.scene.onReset.subscribe(()=>{this.beforeRender.clear(),this.beginRender.clear(),this.finishRender.clear(),this.afterRender.clear()})}}var ut;(function(s){s[s.Initial=0]="Initial",s[s.AfterTransitionIn=1]="AfterTransitionIn",s[s.CanTransitionOut=2]="CanTransitionOut",s[s.Finished=3]="Finished"})(ut||(ut={}));class Ne{constructor(t){this.state=t,this.nextGauss=null}static createSeed(){return Math.floor(Math.random()*4294967296)}nextFloat(t=0,e=1){return V(t,e,this.next())}nextInt(t=0,e=4294967296){let r=Math.floor(V(t,e,this.next()));return r===e&&(r=t),r}gauss(t=0,e=1){let r=this.nextGauss;if(this.nextGauss=null,r===null){const a=this.next()*2*Math.PI,o=Math.sqrt(-2*Math.log(1-this.next()));r=Math.cos(a)*o,this.nextGauss=Math.sin(a)*o}return t+r*e}floatArray(t,e=0,r=1){return Hs(t).map(()=>this.nextFloat(e,r))}intArray(t,e=0,r=4294967296){return Hs(t).map(()=>this.nextInt(e,r))}spawn(){return new Ne(this.nextInt())}next(){this.state|=0,this.state=this.state+1831565813|0;let t=Math.imul(this.state^this.state>>>15,1|this.state);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}var je;(function(s){s[s.Playing=0]="Playing",s[s.Rendering=1]="Rendering",s[s.Paused=2]="Paused",s[s.Presenting=3]="Presenting"})(je||(je={}));class ou{get onChanged(){return this.slides.subscribable}constructor(t){this.scene=t,this.slides=new te([]),this.lookup=new Map,this.collisionLookup=new Set,this.current=null,this.canResume=!1,this.waitsForId=null,this.targetId=null,this.handleReload=()=>{this.lookup.clear(),this.collisionLookup.clear(),this.current=null,this.waitsForId=null,this.targetId=null},this.handleReset=()=>{this.collisionLookup.clear(),this.current=null,this.waitsForId=null},this.handleRecalculated=()=>{this.slides.current=[...this.lookup.values()]},this.scene.onReloaded.subscribe(this.handleReload),this.scene.onReset.subscribe(this.handleReset),this.scene.onRecalculated.subscribe(this.handleRecalculated)}setTarget(t){this.targetId=t}resume(){this.canResume=!0}isWaitingFor(t){return this.waitsForId===t}isWaiting(){return this.waitsForId!==null}didHappen(t){var e;if(this.current===null)return!1;for(const r of this.lookup.keys()){if(r===t)return!0;if(r===((e=this.current)==null?void 0:e.id))return!1}return!1}getCurrent(){return this.current}register(t,e){if(this.waitsForId!==null)throw new Error(`The animation already waits for a slide: ${this.waitsForId}.`);const r=this.toId(t);this.scene.playback.state!==je.Presenting&&(this.lookup.has(r)||this.lookup.set(r,{id:r,name:t,time:e,scene:this.scene,stack:new Error().stack}),this.collisionLookup.has(t)?this.scene.logger.warn({message:`A slide named "${t}" already exists.`,stack:new Error().stack}):this.collisionLookup.add(t)),this.waitsForId=r,this.current=this.lookup.get(r)??null,this.canResume=!1}shouldWait(t){const e=this.toId(t);if(this.waitsForId!==e)throw new Error(`The animation waits for a different slide: ${this.waitsForId}.`);if(!this.lookup.get(e))throw new Error(`Could not find the "${t}" slide.`);let a=this.canResume;return this.scene.playback.state!==je.Presenting&&(a=e!==this.targetId),a&&(this.waitsForId=null),!a}toId(t){return`${this.scene.name}:${t}`}}class lu{get firstFrame(){return this.cache.current.firstFrame}get lastFrame(){return this.firstFrame+this.cache.current.duration}get onCacheChanged(){return this.cache.subscribable}get onReloaded(){return this.reloaded.subscribable}get onRecalculated(){return this.recalculated.subscribable}get onThreadChanged(){return this.thread.subscribable}get onRenderLifecycle(){return this.renderLifecycle.subscribable}get onReset(){return this.afterReset.subscribable}get LifecycleEvents(){return this.logger.warn("LifecycleEvents is deprecated. Use lifecycleEvents instead."),this.lifecycleEvents}get previous(){return this.previousScene}constructor(t){this.cache=new te({firstFrame:0,transitionDuration:0,duration:0,lastFrame:0}),this.reloaded=new Lt,this.recalculated=new Lt,this.thread=new te(null),this.renderLifecycle=new Lt,this.afterReset=new Lt,this.lifecycleEvents=new au(this),this.previousScene=null,this.runner=null,this.state=ut.Initial,this.cached=!1,this.counters={},this.name=t.name,this.size=t.size,this.resolutionScale=t.resolutionScale,this.logger=t.logger,this.playback=t.playback,this.meta=t.meta,this.runnerFactory=t.config,this.creationStack=t.stack,ce(this.runnerFactory,wt(this.name)),this.timeEvents=new t.timeEventsClass(this),this.variables=new iu(this),this.slides=new ou(this),this.random=new Ne(this.meta.seed.get())}update(){}async render(t){let e=0;do{e++,await it.consumePromises(),t.save();const r=Y.fromSizeCentered(this.getSize());t.clearRect(r.x,r.y,r.width,r.height),this.execute(()=>this.draw(t)),t.restore()}while(it.hasPromises()&&e<10);e>1&&this.logger.debug(`render iterations: ${e}`)}reload({config:t,size:e,stack:r,resolutionScale:a}={}){t&&(this.runnerFactory=t),e&&(this.size=e),a&&(this.resolutionScale=a),r&&(this.creationStack=r),this.cached=!1,this.reloaded.dispatch()}async recalculate(t){const e=this.cache.current;if(e.firstFrame=this.playback.frame,e.lastFrame=e.firstFrame+e.duration,this.isCached()){t(e.lastFrame),this.cache.current={...e};return}for(e.transitionDuration=-1,await this.reset();!this.canTransitionOut();)e.transitionDuration<0&&this.state===ut.AfterTransitionIn&&(e.transitionDuration=this.playback.frame-e.firstFrame),t(this.playback.frame+1),await this.next();e.transitionDuration===-1&&(e.transitionDuration=0),e.lastFrame=this.playback.frame,e.duration=e.lastFrame-e.firstFrame,await new Promise(r=>setTimeout(r,0)),this.cached=!0,this.cache.current={...e},this.recalculated.dispatch()}async next(){var e;if(!this.runner)return;let t=this.execute(()=>this.runner.next());for(this.update();t.value;){if(ru(t.value)){const r=await t.value.toPromise();t=this.execute(()=>this.runner.next(r))}else if(su(t.value)){const r=await t.value;t=this.execute(()=>this.runner.next(r))}else this.logger.warn({message:"Invalid value yielded by the scene.",object:t.value}),t=this.execute(()=>this.runner.next(t.value));this.update()}if(it.hasPromises()){const r=await it.consumePromises();this.logger.error({message:"Tried to access an asynchronous property before the node was ready. Make sure to yield the node before accessing the property.",stack:r[0].stack,inspect:((e=r[0].owner)==null?void 0:e.key)??void 0})}t.done&&(this.state=ut.Finished)}async reset(t=null){this.counters={},this.previousScene=t,this.random=new Ne(this.meta.seed.get()),this.runner=hi(()=>this.runnerFactory(this.getView()),e=>{this.thread.current=e}),this.state=ut.AfterTransitionIn,this.afterReset.dispatch(),await this.next()}getSize(){return this.size}isAfterTransitionIn(){return this.state===ut.AfterTransitionIn}canTransitionOut(){return this.state===ut.CanTransitionOut||this.state===ut.Finished}isFinished(){return this.state===ut.Finished}enterInitial(){this.state===ut.AfterTransitionIn?this.state=ut.Initial:this.logger.warn(`Scene ${this.name} entered initial in an unexpected state: ${this.state}`)}enterAfterTransitionIn(){this.state===ut.Initial?this.state=ut.AfterTransitionIn:this.logger.warn(`Scene ${this.name} transitioned in an unexpected state: ${this.state}`)}enterCanTransitionOut(){this.state===ut.AfterTransitionIn||this.state===ut.Initial?this.state=ut.CanTransitionOut:this.logger.warn(`Scene ${this.name} was marked as finished in an unexpected state: ${this.state}`)}isCached(){return this.cached}execute(t){let e;Yh(this),Kh(this.playback);try{e=t()}finally{tu(this.playback),Uh(this)}return e}}function hu(){return new _t("scene",{version:new bt("version",1),timeEvents:new bt("time events",[]),seed:new bt("seed",Ne.createSeed())})}function uu(){let s;return e=>{if(e!==void 0)s=e;else return s}}function cu(s){const t=ii(),e=or();return t.timeEvents.register(s,e.time())}function fu(s,t,e){if(t.length>=s.length){const r=Math.floor(t.length*e),a=Math.floor(V(s.length-1,t.length,e));let o="";for(let h=0;h=0;h--)h ${t} may result in unexpected behavior.`);return}if(typeof s=="number"&&typeof t=="number")return V(s,t,e);if(typeof s=="string"&&typeof t=="string")return fu(s,t,e);if(typeof s=="boolean"&&typeof t=="boolean")return e<.5?s:t;if("lerp"in s)return s.lerp(t,e);if(s&&t&&typeof s=="object"&&typeof t=="object")if(Array.isArray(s)&&Array.isArray(t)){if(s.length===t.length)return s.map((a,o)=>he(a,t[o],e))}else{let a=!1;if(!(s instanceof Map)&&!(t instanceof Map)&&(a=!0,s=new Map(Object.entries(s)),t=new Map(Object.entries(t))),s instanceof Map&&t instanceof Map){const o=new Map;for(const h of new Set([...s.keys(),...t.keys()])){const c=he(s.get(h),t.get(h),e,!0);c!==void 0&&o.set(h,c)}return a?Object.fromEntries(o):o}}return t}function V(s,t,e){return s+(t-s)*e}function pu(s,t,e,r,a){return e+(a-s)*(r-e)/(t-s)}function dt(s,t,e){return et?t:e}function ui(s,t,e){let r=t;e>1?e=1/e:r=!r;const a=r?Math.acos(dt(-1,1,1-s)):Math.asin(s),o=V(a,V(0,Math.PI/2,s),e);let h=Math.sin(o),c=1-Math.cos(o);return t&&([h,c]=[c,h]),new v(h,c)}function nn(s,t=0,e=1){return s=s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,V(t,e,s)}function du(s,t=0,e=1){return s=s===1?1:1-Math.pow(2,-10*s),V(t,e,s)}function gu(s,t=0,e=1){return V(t,e,s)}ce(Re,wt());function*Re(s,t,e){const r=or(),a=r.time(),o=r.time()+s;for(t(0,0);o>r.fixed;){const h=r.fixed-a,c=h/s;h>0&&t(c,h),yield}r.time(o),t(1,s),e==null||e(1,s)}ce(Ee,wt());function*Ee(...s){for(const t of s)yield t;yield*li(...s)}ce(vu,wt());function*vu(s,t){yield*sn(cu(s)),t&&(yield*t)}ce(sn,wt());function*sn(s=0,t){const e=or(),r=oi().framesToSeconds(1),a=e.time()+s;for(;a-r>e.fixed;)yield;e.time(a),t&&(yield*t)}function Us(s,t){let e;return typeof s=="string"?(e=t(),ir(e,s)):(e=s(),ir(e,e)),e}class it{static collectPromise(t,e=null){const r={promise:t,value:e,stack:new Error().stack},a=this.collectionStack.at(-1);return a&&(r.owner=a.owner),t.then(o=>{r.value=o,a==null||a.markDirty()}),this.promises.push(r),r}static hasPromises(){return this.promises.length>0}static async consumePromises(){const t=[...this.promises];return await Promise.all(t.map(e=>e.promise)),this.promises=this.promises.filter(e=>!t.includes(e)),t}constructor(t){this.owner=t,this.dependencies=new Set,this.event=new qh,this.markDirty=()=>this.event.raise(),this.invokable=this.invoke.bind(this),Object.defineProperty(this.invokable,"context",{value:this}),Object.defineProperty(this.invokable,"toPromise",{value:this.toPromise.bind(this)})}invoke(){}startCollecting(){if(it.collectionSet.has(this))throw new Kr("A circular dependency occurred between signals.",`This can happen when signals reference each other in a loop. + Try using the attached stack trace to locate said loop.`);it.collectionSet.add(this),it.collectionStack.push(this)}finishCollecting(){if(it.collectionSet.delete(this),it.collectionStack.pop()!==this)throw new Error("collectStart/collectEnd was called out of order.")}clearDependencies(){this.dependencies.forEach(t=>t.unsubscribe(this.markDirty)),this.dependencies.clear()}collect(){const t=it.collectionStack.at(-1);t&&(t.dependencies.add(this.event.subscribable),this.event.subscribe(t.markDirty))}dispose(){this.clearDependencies(),this.event.clear(),this.owner=null}async toPromise(){do await it.consumePromises(),this.invokable();while(it.hasPromises());return this.invokable}}it.collectionSet=new Set;it.collectionStack=[];it.promises=[];function Qt(s){return typeof s=="function"}function $e(s,t){return Qt(s)?()=>t(s()):t(s)}function _e(s){return Qt(s)?s():s}const Zs=Symbol.for("@motion-canvas/core/signals/default");class ue extends it{constructor(t,e,r=void 0,a=h=>h,o={}){super(r),this.initial=t,this.interpolation=e,this.parser=a,Object.defineProperty(this.invokable,"reset",{value:this.reset.bind(this)}),Object.defineProperty(this.invokable,"save",{value:this.save.bind(this)}),Object.defineProperty(this.invokable,"isInitial",{value:this.isInitial.bind(this)}),this.initial!==void 0&&(this.current=this.initial,this.markDirty(),Qt(this.initial)||(this.last=this.parse(this.initial))),this.extensions={getter:this.getter.bind(this),setter:this.setter.bind(this),tweener:this.tweener.bind(this),...o}}toSignal(){return this.invokable}parse(t){return this.parser(t)}set(t){return this.extensions.setter(t),this.owner}setter(t){return t===Zs&&(t=this.initial),this.current===t?this.owner:(this.current=t,this.markDirty(),this.clearDependencies(),Qt(t)||(this.last=this.parse(t)),this.owner)}get(){return this.extensions.getter()}getter(){var t;if(this.event.isRaised()&&Qt(this.current)){this.clearDependencies(),this.startCollecting();try{this.last=this.parse(this.current())}catch(e){yt().error({...ai(e),inspect:(t=this.owner)==null?void 0:t.key})}this.finishCollecting()}return this.event.reset(),this.collect(),this.last}invoke(t,e,r=nn,a=this.interpolation){return t===void 0?this.get():e===void 0?this.set(t):this.createQueue(r,a).to(t,e)}createQueue(t,e){const r=this.get(),a=[],o=Us("animation chain",function*(){for(;a.length>0;)yield*a.shift()});return o.to=(h,c,m=t,w=e)=>(t=m,e=w,a.push(this.tween(h,c,m,w)),o),o.back=(h,c=t,m=e)=>(t=c,e=m,a.push(this.tween(r,h,t,e)),o),o.wait=h=>(a.push(sn(h)),o),o.run=h=>(a.push(h),o),o.do=h=>(a.push(Us(function*(){h()})),o),o}*tween(t,e,r,a){t===Zs&&(t=this.initial),yield*this.extensions.tweener(t,e,r,a),this.set(t)}*tweener(t,e,r,a){const o=this.get();yield*Re(e,h=>{this.set(a(o,this.parse(_e(t)),r(h)))})}dispose(){super.dispose(),this.initial=void 0,this.current=void 0,this.last=void 0}reset(){return this.initial!==void 0&&this.set(this.initial),this.owner}save(){return this.set(this.get())}isInitial(){return this.collect(),this.current===this.initial}raw(){return this.current}}class lr extends ue{constructor(t,e,r,a,o=void 0,h={}){var c;super(void 0,a,o,e,h),this.entries=t,this.signals=[],this.parser=e;for(const m of t){let w,P;Array.isArray(m)?([w,P]=m,(c=P.context).owner??(c.owner=this)):(w=m,P=new ue($e(r,O=>e(O)[m]),V,o??this.invokable).toSignal()),this.signals.push([w,P]),Object.defineProperty(this.invokable,w,{value:P})}}toSignal(){return this.invokable}parse(t){return this.parser(t)}getter(){return this.parse(Object.fromEntries(this.signals.map(([t,e])=>[t,e()])))}setter(t){if(Qt(t))for(const[e,r]of this.signals)r(()=>this.parser(t())[e]);else{const e=this.parse(t);for(const[r,a]of this.signals)a(e[r])}return this.owner}reset(){for(const[,t]of this.signals)t.reset();return this.owner}save(){for(const[,t]of this.signals)t.save();return this.owner}}class bu extends it{constructor(t,e){super(e),this.factory=t,this.markDirty()}toSignal(){return this.invokable}dispose(){super.dispose(),this.last=void 0}invoke(...t){var e;if(this.event.isRaised()){this.clearDependencies(),this.startCollecting();try{this.last=this.factory(...t)}catch(r){yt().error({...ai(r),inspect:(e=this.owner)==null?void 0:e.key})}this.finishCollecting()}return this.event.reset(),this.collect(),this.last}}function mu(s,t){return new bu(s,t).toSignal()}function Te(s,t=he,e){return new ue(s,t,e).toSignal()}const ee=(()=>(et.Color.symbol=et.Color.prototype.symbol=Symbol.for("@motion-canvas/core/types/Color"),et.Color.lerp=et.Color.prototype.lerp=(s,t,e,r="lch")=>{typeof s=="string"&&(s=new et.Color(s)),typeof t=="string"&&(t=new et.Color(t));const a=s instanceof et.Color,o=t instanceof et.Color;return a||(s=o?t.alpha(0):new et.Color("rgba(0, 0, 0, 0)")),o||(t=a?s.alpha(0):new et.Color("rgba(0, 0, 0, 0)")),et.mix(s,t,e,r)},et.Color.createLerp=et.Color.prototype.createLerp=s=>(t,e,r)=>et.Color.lerp(t,e,r,s),et.Color.createSignal=(s,t=et.Color.lerp)=>new ue(s,t,void 0,e=>new et.Color(e)).toSignal(),et.Color.prototype.toSymbol=()=>et.Color.symbol,et.Color.prototype.serialize=function(){return this.css()},et.Color.prototype.lerp=function(s,t,e){return et.Color.lerp(this,s,t,e)},et.Color))();var Js;(function(s){s[s.Vertical=1]="Vertical",s[s.Horizontal=2]="Horizontal"})(Js||(Js={}));var It;(function(s){s[s.Top=4]="Top",s[s.Bottom=8]="Bottom",s[s.Left=16]="Left",s[s.Right=32]="Right"})(It||(It={}));var gt;(function(s){s[s.Middle=3]="Middle",s[s.Top=5]="Top",s[s.Bottom=9]="Bottom",s[s.Left=18]="Left",s[s.Right=34]="Right",s[s.TopLeft=20]="TopLeft",s[s.TopRight=36]="TopRight",s[s.BottomLeft=24]="BottomLeft",s[s.BottomRight=40]="BottomRight"})(gt||(gt={}));function yu(s){if(s===gt.Middle)return v.zero;let t=0;s&It.Left?t=-1:s&It.Right&&(t=1);let e=0;return s&It.Top?e=-1:s&It.Bottom&&(e=1),new v(t,e)}const De=1e-6;class tt{static fromRotation(t){return tt.identity.rotate(t)}static fromTranslation(t){return tt.identity.translate(new v(t))}static fromScaling(t){return tt.identity.scale(new v(t))}get x(){return new v(this.values[0],this.values[1])}get y(){return new v(this.values[2],this.values[3])}get scaleX(){return this.values[0]}set scaleX(t){this.values[0]=this.x.normalized.scale(t).x}get skewX(){return this.values[1]}set skewX(t){this.values[1]=t}get scaleY(){return this.values[3]}set scaleY(t){this.values[3]=this.y.normalized.scale(t).y}get skewY(){return this.values[2]}set skewY(t){this.values[2]=t}get translateX(){return this.values[4]}set translateX(t){this.values[4]=t}get translateY(){return this.values[5]}set translateY(t){this.values[5]=t}get rotation(){return v.degrees(this.values[0],this.values[1])}set rotation(t){const e=this.rotate(t-this.rotation);this.values[0]=e.values[0],this.values[1]=e.values[1],this.values[2]=e.values[2],this.values[3]=e.values[3]}get translation(){return new v(this.values[4],this.values[5])}set translation(t){const e=new v(t);this.values[4]=e.x,this.values[5]=e.y}get scaling(){return new v(this.values[0],this.values[3])}set scaling(t){const e=new v(t),r=new v(this.values[0],this.values[1]).normalized,a=new v(this.values[2],this.values[3]).normalized;this.values[0]=r.x*e.x,this.values[1]=r.y*e.y,this.values[2]=a.x*e.x,this.values[3]=a.y*e.y}get inverse(){const t=this.values[0],e=this.values[1],r=this.values[2],a=this.values[3],o=this.values[4],h=this.values[5];let c=t*a-e*r;return c?(c=1/c,new tt(a*c,-e*c,-r*c,t*c,(r*h-a*o)*c,(e*o-t*h)*c)):null}get determinant(){return this.values[0]*this.values[3]-this.values[1]*this.values[2]}get domMatrix(){return new DOMMatrix([this.values[0],this.values[1],this.values[2],this.values[3],this.values[4],this.values[5]])}constructor(t,e,r,a,o,h){if(this.values=new Float32Array(6),arguments.length===0){this.values=new Float32Array([1,0,0,1,0,0]);return}if(arguments.length===6){this.values[0]=t,this.values[1]=e,this.values[2]=r,this.values[3]=a,this.values[4]=o,this.values[5]=h;return}if(t instanceof DOMMatrix){this.values[0]=t.m11,this.values[1]=t.m12,this.values[2]=t.m21,this.values[3]=t.m22,this.values[4]=t.m41,this.values[5]=t.m42;return}if(t instanceof tt){this.values=t.values;return}if(Array.isArray(t)){if(t.length===2){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=e[0],this.values[3]=e[1],this.values[4]=r[0],this.values[5]=r[1];return}if(t.length===3){const P=new v(t[0]),O=new v(t[1]),K=new v(t[2]);this.values[0]=P.x,this.values[1]=P.y,this.values[2]=O.x,this.values[3]=O.y,this.values[4]=K.x,this.values[5]=K.y;return}this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2],this.values[3]=t[3],this.values[4]=t[4],this.values[5]=t[5];return}const c=new v(t),m=new v(e),w=new v(r);this.values[0]=c.x,this.values[1]=c.y,this.values[2]=m.x,this.values[3]=m.y,this.values[4]=w.x,this.values[5]=w.y}column(t){return new v(this.values[t*2],this.values[t*2+1])}row(t){return[this.values[t],this.values[t+2],this.values[t+4]]}mul(t){const e=this.values[0],r=this.values[1],a=this.values[2],o=this.values[3],h=this.values[4],c=this.values[5],m=t.values[0],w=t.values[1],P=t.values[2],O=t.values[3],K=t.values[4],ct=t.values[5];return new tt(e*m+a*w,r*m+o*w,e*P+a*O,r*P+o*O,e*K+a*ct+h,r*K+o*ct+c)}rotate(t,e=!0){e&&(t*=Zt);const r=this.values[0],a=this.values[1],o=this.values[2],h=this.values[3],c=this.values[4],m=this.values[5],w=Math.sin(t),P=Math.cos(t);return new tt(r*P+o*w,a*P+h*w,r*-w+o*P,a*-w+h*P,c,m)}scale(t){const e=new v(t);return new tt(this.values[0]*e.x,this.values[1]*e.x,this.values[2]*e.y,this.values[3]*e.y,this.values[4],this.values[5])}mulScalar(t){return new tt(this.values[0]*t,this.values[1]*t,this.values[2]*t,this.values[3]*t,this.values[4]*t,this.values[5]*t)}translate(t){const e=new v(t);return new tt(this.values[0],this.values[1],this.values[2],this.values[3],this.values[0]*e.x+this.values[2]*e.y+this.values[4],this.values[1]*e.x+this.values[3]*e.y+this.values[5])}add(t){return new tt(this.values[0]+t.values[0],this.values[1]+t.values[1],this.values[2]+t.values[2],this.values[3]+t.values[3],this.values[4]+t.values[4],this.values[5]+t.values[5])}sub(t){return new tt(this.values[0]-t.values[0],this.values[1]-t.values[1],this.values[2]-t.values[2],this.values[3]-t.values[3],this.values[4]-t.values[4],this.values[5]-t.values[5])}toSymbol(){return tt.symbol}equals(t,e=De){return Math.abs(this.values[0]-t.values[0])<=e+Number.EPSILON&&Math.abs(this.values[1]-t.values[1])<=e+Number.EPSILON&&Math.abs(this.values[2]-t.values[2])<=e+Number.EPSILON&&Math.abs(this.values[3]-t.values[3])<=e+Number.EPSILON&&Math.abs(this.values[4]-t.values[4])<=e+Number.EPSILON&&Math.abs(this.values[5]-t.values[5])<=e+Number.EPSILON}exactlyEquals(t){return this.values[0]===t.values[0]&&this.values[1]===t.values[1]&&this.values[2]===t.values[2]&&this.values[3]===t.values[3]&&this.values[4]===t.values[4]&&this.values[5]===t.values[5]}}tt.symbol=Symbol.for("@motion-canvas/core/types/Matrix2D");tt.identity=new tt(1,0,0,1,0,0);tt.zero=new tt(0,0,0,0,0,0);class v{static createSignal(t,e=v.lerp,r){return new lr(["x","y"],a=>new v(a),t,e,r).toSignal()}static lerp(t,e,r){let a,o;return typeof r=="number"?a=o=r:(a=r.x,o=r.y),new v(V(t.x,e.x,a),V(t.y,e.y,o))}static arcLerp(t,e,r,a=!1,o){return o??(o=t.sub(e).ctg),v.lerp(t,e,ui(r,a,o))}static createArcLerp(t,e){return(r,a,o)=>v.arcLerp(r,a,o,t,e)}static polarLerp(t,e,r,a=!1,o=v.zero){t=t.sub(o),e=e.sub(o);const h=t.degrees;let c=e.degrees;h>c!==a&&(c=c+(a?-360:360));const w=V(h,c,r)*Zt,P=V(t.magnitude,e.magnitude,r);return new v(P*Math.cos(w)+o.x,P*Math.sin(w)+o.y)}static createPolarLerp(t=!1,e=v.zero){return(r,a,o)=>v.polarLerp(r,a,o,t,new v(e))}static fromOrigin(t){const e=new v;return t===gt.Middle||(t&It.Left?e.x=-1:t&It.Right&&(e.x=1),t&It.Top?e.y=-1:t&It.Bottom&&(e.y=1)),e}static fromScalar(t){return new v(t,t)}static fromRadians(t){return new v(Math.cos(t),Math.sin(t))}static fromDegrees(t){return v.fromRadians(t*Zt)}static radians(t,e){return Math.atan2(e,t)}static degrees(t,e){return v.radians(t,e)*Qh}static magnitude(t,e){return Math.sqrt(t*t+e*e)}static squaredMagnitude(t,e){return t*t+e*e}static angleBetween(t,e){return Math.acos(dt(-1,1,t.dot(e)/(t.magnitude*e.magnitude)))*(t.cross(e)>=0?1:-1)}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}get magnitude(){return v.magnitude(this.x,this.y)}get squaredMagnitude(){return v.squaredMagnitude(this.x,this.y)}get normalized(){return this.scale(1/v.magnitude(this.x,this.y))}get safe(){return new v(isNaN(this.x)?0:this.x,isNaN(this.y)?0:this.y)}get flipped(){return new v(-this.x,-this.y)}get floored(){return new v(Math.floor(this.x),Math.floor(this.y))}get perpendicular(){return new v(this.y,-this.x)}get radians(){return v.radians(this.x,this.y)}get degrees(){return v.degrees(this.x,this.y)}get ctg(){return this.x/this.y}constructor(t,e){if(this.x=0,this.y=0,t!=null){if(typeof t!="object"){this.x=t,this.y=e??t;return}if(Array.isArray(t)){this.x=t[0],this.y=t[1];return}if("width"in t){this.x=t.width,this.y=t.height;return}this.x=t.x,this.y=t.y}}lerp(t,e){return v.lerp(this,t,e)}getOriginOffset(t){const e=v.fromOrigin(t);return e.x*=this.x/2,e.y*=this.y/2,e}scale(t){return new v(this.x*t,this.y*t)}transformAsPoint(t){const e=new tt(t);return new v(this.x*e.scaleX+this.y*e.skewY+e.translateX,this.x*e.skewX+this.y*e.scaleY+e.translateY)}transform(t){const e=new tt(t);return new v(this.x*e.scaleX+this.y*e.skewY,this.x*e.skewX+this.y*e.scaleY)}mul(t){const e=new v(t);return new v(this.x*e.x,this.y*e.y)}div(t){const e=new v(t);return new v(this.x/e.x,this.y/e.y)}add(t){const e=new v(t);return new v(this.x+e.x,this.y+e.y)}sub(t){const e=new v(t);return new v(this.x-e.x,this.y-e.y)}dot(t){const e=new v(t);return this.x*e.x+this.y*e.y}cross(t){const e=new v(t);return this.x*e.y-this.y*e.x}mod(t){const e=new v(t);return new v(this.x%e.x,this.y%e.y)}rotate(t,e=v.zero){const r=new v(e),a=tt.fromTranslation(r).rotate(t).translate(r.flipped);return this.transformAsPoint(a)}addX(t){return new v(this.x+t,this.y)}addY(t){return new v(this.x,this.y+t)}toSymbol(){return v.symbol}toString(){return`Vector2(${this.x}, ${this.y})`}serialize(){return{x:this.x,y:this.y}}exactlyEquals(t){return this.x===t.x&&this.y===t.y}equals(t,e=De){return Math.abs(this.x-t.x)<=e+Number.EPSILON&&Math.abs(this.y-t.y)<=e+Number.EPSILON}}v.symbol=Symbol.for("@motion-canvas/core/types/Vector2");v.zero=new v;v.one=new v(1,1);v.right=new v(1,0);v.left=new v(-1,0);v.up=new v(0,1);v.down=new v(0,-1);function wu(s,t){return v.fromDegrees(s).transform(t).degrees}function Yr(s,t){return v.magnitude(t.m11,t.m12)*s}class Y{static createSignal(t,e=Y.lerp){return new lr(["x","y","width","height"],r=>new Y(r),t,e).toSignal()}static lerp(t,e,r){let a,o,h,c;return typeof r=="number"?a=o=h=c=r:r instanceof v?(a=h=r.x,o=c=r.y):(a=r.x,o=r.y,h=r.width,c=r.height),new Y(V(t.x,e.x,a),V(t.y,e.y,o),V(t.width,e.width,h),V(t.height,e.height,c))}static arcLerp(t,e,r,a=!1,o){return o??(o=(t.position.sub(e.position).ctg+t.size.sub(e.size).ctg)/2),Y.lerp(t,e,ui(r,a,o))}static fromSizeCentered(t){return new Y(-t.width/2,-t.height/2,t.width,t.height)}static fromPoints(...t){let e=1/0,r=1/0,a=-1/0,o=-1/0;for(const h of t)h.x>a&&(a=h.x),h.xo&&(o=h.y),h.ya&&(a=c),h.xo&&(o=m),h.ye.transformAsPoint(t))}expand(t){return new Y(this.x-t,this.y-t,this.width+t*2,this.height+t*2)}addSpacing(t){const e=new Y(this);return e.left-=t.left,e.top-=t.top,e.right+=t.right,e.bottom+=t.bottom,e}includes(t){return t.x>=this.x&&t.x<=this.x+this.width&&t.y>=this.y&&t.y<=this.y+this.height}intersects(t){return this.leftt.left&&this.topt.top}intersection(t){const e=new Y;return this.intersects(t)&&(e.left=Math.max(this.left,t.left),e.top=Math.max(this.top,t.top),e.right=Math.min(this.right,t.right),e.bottom=Math.min(this.bottom,t.bottom)),e}toSymbol(){return Y.symbol}toString(){return`BBox(${this.x}, ${this.y}, ${this.width}, ${this.height})`}serialize(){return{x:this.x,y:this.y,width:this.width,height:this.height}}}Y.symbol=Symbol.for("@motion-canvas/core/types/Rect");class Tt{static createSignal(t,e=Tt.lerp){return new lr(["top","right","bottom","left"],r=>new Tt(r),t,e).toSignal()}static lerp(t,e,r){return new Tt(V(t.top,e.top,r),V(t.right,e.right,r),V(t.bottom,e.bottom,r),V(t.left,e.left,r))}get x(){return this.left+this.right}get y(){return this.top+this.bottom}constructor(t=0,e,r,a){if(this.top=0,this.right=0,this.bottom=0,this.left=0,t!=null){if(Array.isArray(t)&&(a=t[3],r=t[2],e=t[1],t=t[0]),typeof t=="number"){this.top=t,this.right=e!==void 0?e:t,this.bottom=r!==void 0?r:t,this.left=a!==void 0?a:e!==void 0?e:t;return}this.top=t.top,this.right=t.right,this.bottom=t.bottom,this.left=t.left}}lerp(t,e){return Tt.lerp(this,t,e)}scale(t){return new Tt(this.top*t,this.right*t,this.bottom*t,this.left*t)}addScalar(t){return new Tt(this.top+t,this.right+t,this.bottom+t,this.left+t)}toSymbol(){return Tt.symbol}toString(){return`Spacing(${this.top}, ${this.right}, ${this.bottom}, ${this.left})`}serialize(){return{top:this.top,right:this.right,bottom:this.bottom,left:this.left}}}Tt.symbol=Symbol.for("@motion-canvas/core/types/Spacing");class Ur extends bt{constructor(){super(...arguments),this.type=ee.symbol}parse(t){return t===null?null:new ee(t)}serialize(){var t;return((t=this.value.current)==null?void 0:t.serialize())??null}}class Vt extends bt{constructor(t,e,r=e[0].value){super(t,r),this.options=e,this.type=Vt.symbol}set(t){super.set(this.getOption(t).value)}parse(t){return this.getOption(t).value}getOption(t){return this.options.find(e=>e.value===t)??this.options[0]}}Vt.symbol=Symbol.for("@motion-canvas/core/meta/EnumMetaField");class xu extends bt{get onFieldsChanged(){return this.fields.subscribable}get options(){return this.optionFields[this.current]}constructor(t,e,r=0){const a=e.plugins.flatMap(c=>{var m;return((m=c.exporters)==null?void 0:m.call(c,e))??[]}),o=a.map(c=>c.meta(e)),h=new Vt("exporter",a.map(c=>({value:c.id,text:c.displayName})),a[r].id);super(t,{name:h.get(),options:o[r].get()}),this.current=r,this.type=Object,this.handleChange=()=>{const c=this.exporterField.get(),m=Math.max(this.exporters.findIndex(w=>w.id===c),0);this.current!==m&&(this.options.onChanged.unsubscribe(this.handleChange),this.current=m,this.options.onChanged.subscribe(this.handleChange,!1),this.fields.current=[this.exporterField,this.options]),this.value.current={name:this.exporterField.get(),options:this.options.get()}},this.exporters=a,this.exporterField=h,this.exporterField.onChanged.subscribe(this.handleChange,!1),this.exporterField.disable(o.length<2).space(),this.optionFields=o,this.optionFields[r].onChanged.subscribe(this.handleChange,!1),this.fields=new te([this.exporterField,this.options])}set(t){this.exporterField.set(t.name),this.options.set(t.options)}serialize(){return{name:this.exporterField.serialize(),options:this.options.serialize()}}clone(){return new this.constructor(this.name,this.exporters,this.current)}}class Nt{constructor(t,e=!1){this.name=t,this.source=e,this.lock=new Vh,this.ignoreChange=!1,this.cache=null,this.metaField=null,this.handleChanged=async()=>{}}attach(t){var e;this.metaField||(this.metaField=t,this.cache&&this.metaField.set(this.cache),(e=this.metaField)==null||e.onChanged.subscribe(this.handleChanged))}async saveData(t){if(this.source===!1)return;if(!this.source)throw new Error(`The meta file for ${this.name} is missing.`);if(Nt.sourceLookup[this.source])throw new Error(`Metadata for ${this.name} is already being updated`);const e=this.source;await new Promise((r,a)=>{setTimeout(()=>{delete Nt.sourceLookup[e],a(`Connection timeout when updating metadata for ${this.name}`)},1e3),Nt.sourceLookup[e]=()=>{delete Nt.sourceLookup[e],r()},(void 0).send("motion-canvas:meta",{source:e,data:t})})}loadData(t){var e;this.ignoreChange=!0,this.cache=t,(e=this.metaField)==null||e.set(t),this.ignoreChange=!1}}Nt.sourceLookup={};class sr extends bt{constructor(){super(...arguments),this.type=Number,this.presets=[]}parse(t){let e=parseFloat(t);return this.min!==void 0&&ethis.max&&(e=this.max),e}getPresets(){return this.presets}setPresets(t){return this.presets=t,this}setRange(t,e){return this.min=t,this.max=e,this}}class hr extends bt{constructor(){super(...arguments),this.type=hr.symbol}parse(t){return this.parseRange(1/0,t[0],t[1]??1/0)}update(t,e,r,a){this.value.current=this.parseRange(r/a-De,t/a-De,e/a-De)}parseRange(t,e=this.value.current[0],r=this.value.current[1]){return e=dt(0,t,e),r=dt(0,t,r??1/0),e>r&&([e,r]=[r,e]),r>=t&&(r=1/0),[e,r]}}hr.symbol=Symbol.for("@motion-canvas/core/meta/RangeMetaField");class ci extends bt{constructor(){super(...arguments),this.type=v.symbol}parse(t){return new v(t)}serialize(){return this.value.current.serialize()}}const Qs=[{value:.25,text:"0.25x (Quarter)"},{value:.5,text:"0.5x (Half)"},{value:1,text:"1.0x (Full)"},{value:2,text:"2.0x (Double)"}],Su=[{value:"srgb",text:"sRGB"},{value:"display-p3",text:"DCI-P3"}],ku=[{value:"image/png",text:"png"},{value:"image/jpeg",text:"jpeg"},{value:"image/webp",text:"webp"}],Vs=[{value:30,text:"30 FPS"},{value:60,text:"60 FPS"}];function Cu(s){const t={version:new bt("version",1),shared:new _t("General",{background:new Ur("background",null),range:new hr("range",[0,1/0]),size:new ci("resolution",new v(1920,1080)),audioOffset:new sr("audio offset",0)}),preview:new _t("Preview",{fps:new sr("frame rate",30).setPresets(Vs),resolutionScale:new Vt("scale",Qs,1)}),rendering:new _t("Rendering",{fps:new sr("frame rate",60).setPresets(Vs),resolutionScale:new Vt("scale",Qs,1),colorSpace:new Vt("color space",Su),exporter:new xu("exporter",s)})};return t.shared.audioOffset.disable(!s.audio),t}class Pu extends _t{constructor(t){super("project",Cu(t))}getFullPreviewSettings(){return{...this.shared.get(),...this.preview.get()}}getFullRenderingSettings(){return{...this.shared.get(),...this.rendering.get()}}}function Ru(s){return typeof s=="function"?s:()=>s}const $u=Ru({name:"mc-default-plugin",exporters(){return[Kt]}});function Mu(){return new _t("Application Settings",{version:new bt("version",1),appearance:new _t("Appearance",{color:new Ur("accent color",new ee("#33a6ff")).describe("The accent color for the user interface. (Leave empty to use the default color)"),font:new Xr("legacy font",!1).describe("Use the 'JetBrains Mono' font for the user interface."),coordinates:new Xr("coordinates",!0).describe("Display mouse coordinates within the preview window.")}),defaults:new _t("Defaults",{background:new Ur("background",null).describe("The default background color used in new projects."),size:new ci("resolution",new v(1920,1080)).describe("The default resolution used in new projects.")})})}function Tu(s,t,e,r,a,o){const h=Mu();o.attach(h);const c=$u();e=[c,...r.plugins??[],...e.filter(P=>P.name!==c.name)];const w={...e.reduce((P,O)=>{var K;return{...P,...((K=O.settings)==null?void 0:K.call(O,P))??{}}},{name:s,...r})};return w.versions=t,w.logger=new Gh,w.plugins=e,w.settings=h,w.meta=new Pu(w),w.meta.shared.set(h.defaults.get()),a.attach(w.meta),e.forEach(P=>{var O;return(O=P.project)==null?void 0:O.call(P,w)}),w}const Lu=1e3;class Kt{static meta(){const t=new _t(this.name,{fileType:new Vt("file type",ku),quality:new sr("quality",100).setRange(0,100).describe("A number between 0 and 100 indicating the image quality."),groupByScene:new Xr("group by scene",!1).describe("Group exported images by scene. When checked, separates the sequence into subdirectories for each scene in the project.")});return t.fileType.onChanged.subscribe(e=>{t.quality.disable(e==="image/png")}),t}static async create(t,e){return new Kt(t.logger,e)}constructor(t,e){this.logger=t,this.settings=e,this.frameLookup=new Set,this.handleResponse=({frame:a})=>{this.frameLookup.delete(a)};const r=e.exporter.options;this.projectName=e.name,this.quality=dt(0,1,r.quality/100),this.fileType=r.fileType,this.groupByScene=r.groupByScene}async start(){Kt.response.subscribe(this.handleResponse)}async handleFrame(t,e,r,a,o){if(this.frameLookup.has(e)){this.logger.warn(`Frame no. ${e} is already being exported.`);return}}async stop(){for(;this.frameLookup.size>0;)await new Promise(t=>setTimeout(t,Lu));Kt.response.unsubscribe(this.handleResponse)}}Kt.id="@motion-canvas/core/image-sequence";Kt.displayName="Image sequence";Kt.response=new Lt;let an;an??(an=new Nt("project",!1));an.loadData({version:0});const zu=an;let on;on??(on=new Nt("example",!1));on.loadData({version:0});const Iu=on;function Au(s){var t;return!!((t=s.prototype)!=null&&t.isClass)}const Ou=Symbol.for("@motion-canvas/2d/fragment");function Fu(s,t){const{ref:e,children:r,...a}=t,o=Array.isArray(r)?r.flat():r;if(s===Ou)return o;if(Au(s)){const h=new s({...a,children:o});return e==null||e(h),h}else return s({...a,ref:e,children:o})}function Ks(s,t){const e=dt(0,s.arcLength,t);let r=0;for(const a of s.segments){const o=r;if(r+=a.arcLength,r>=e){const h=(e-o)/a.arcLength;return a.getPoint(dt(0,1,h))}}return{position:v.zero,tangent:v.up,normal:v.up}}const Dt=Symbol.for("@motion-canvas/2d/decorators/initializers");function qe(s,t){if(!s[Dt])s[Dt]=[];else if(s[Dt]&&!Object.prototype.hasOwnProperty.call(s,Dt)){const e=Object.getPrototypeOf(s);s[Dt]=[...e[Dt]]}s[Dt].push(t)}function Eu(s,t){if(s[Dt])try{s[Dt].forEach(e=>e(s,t))}catch(e){throw e.inspect??(e.inspect=s.key),e}}function Zr(s={},t,e){const r={};if(e&&t){const a=s.setter??(t==null?void 0:t[`set${Fe(e)}`]);a&&(r.setter=a.bind(t));const o=s.getter??(t==null?void 0:t[`get${Fe(e)}`]);o&&(r.getter=o.bind(t));const h=s.tweener??(t==null?void 0:t[`tween${Fe(e)}`]);h&&(r.tweener=h.bind(t))}return r}const Bt=Symbol.for("@motion-canvas/2d/decorators/properties");function fe(s,t){var e;return((e=s[Bt])==null?void 0:e[t])??null}function ln(s,t){let e;return s[Bt]?s[Bt]&&!Object.prototype.hasOwnProperty.call(s,Bt)?s[Bt]=e=Object.fromEntries(Object.entries(s[Bt]).map(([r,a])=>[r,{...a}])):e=s[Bt]:s[Bt]=e={},e[t]??(e[t]={cloneable:!0,inspectable:!0,compoundEntries:[]}),e[t]}function fi(s){return s&&typeof s=="object"?s[Bt]??{}:{}}function hn(s,t){Eu(s);for(const[e,r]of Object.entries(fi(s))){const a=s[e];if(a.reset(),t[e]!==void 0&&a(t[e]),r.compoundEntries!==void 0)for(const[o,h]of r.compoundEntries)h in t&&a[o](t[h])}}function $(){return(s,t)=>{const e=ln(s,t);qe(s,r=>{var h,c;const a=(h=r[`getDefault${Fe(t)}`])==null?void 0:h.bind(r),o=new ue(a??e.default,e.interpolationFunction??he,r,(c=e.parser)==null?void 0:c.bind(r),Zr(e,r,t));r[t]=o.toSignal()})}}function z(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.default=s}}function Du(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.interpolationFunction=s}}function Bu(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.parser=s}}function We(s){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.parser=a=>new s(a),"lerp"in s&&(r.interpolationFunction??(r.interpolationFunction=s.lerp))}}function Le(s=!0){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.cloneable=s}}function pi(s=!0){return(t,e)=>{const r=fe(t,e);if(!r){yt().error(`Missing property decorator for "${e.toString()}"`);return}r.inspectable=s}}const ti={invert:{name:"invert"},sepia:{name:"sepia"},grayscale:{name:"grayscale"},brightness:{name:"brightness",default:1},contrast:{name:"contrast",default:1},saturate:{name:"saturate",default:1},hue:{name:"hue-rotate",unit:"deg",scale:1},blur:{name:"blur",transform:!0,unit:"px",scale:1}};class Nu{get name(){return this.props.name}get default(){return this.props.default}constructor(t){this.props={name:"invert",default:0,unit:"%",scale:100,transform:!1,...t,value:t.value??t.default??0},this.value=Te(this.props.value,V,this)}isActive(){return this.value()!==this.props.default}serialize(t){let e=this.value();return this.props.transform&&(e=Yr(e,t)),`${this.props.name}(${e*this.props.scale}${this.props.unit})`}}function di(s){return(t,e)=>{const r=ln(t,e);r.compound=!0,r.compoundEntries=Object.entries(s),qe(t,a=>{if(!r.parser){yt().error(`Missing parser decorator for "${e.toString()}"`);return}const o=r.default,h=r.parser.bind(a),c=new lr(r.compoundEntries.map(([m,w])=>{const P=new ue($e(o,O=>h(O)[m]),V,a,void 0,Zr(void 0,a,w)).toSignal();return[m,P]}),h,o,r.interpolationFunction??he,a,Zr(r,a,e));a[e]=c.toSignal()})}}function qt(s){return(t,e)=>{di(typeof s=="object"?s:{x:s?`${s}X`:"x",y:s?`${s}Y`:"y"})(t,e),We(v)(t,e)}}function F(){return(s,t)=>{qe(s,e=>{const r=Object.getPrototypeOf(e)[t];e[t]=mu(r.bind(e),e)})}}var re=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class At{constructor(t){hn(this,t)}canvasGradient(t){let e;switch(this.type()){case"linear":e=t.createLinearGradient(this.from.x(),this.from.y(),this.to.x(),this.to.y());break;case"conic":e=t.createConicGradient(this.angle(),this.from.x(),this.from.y());break;case"radial":e=t.createRadialGradient(this.from.x(),this.from.y(),this.fromRadius(),this.to.x(),this.to.y(),this.toRadius());break}for(const{offset:r,color:a}of this.stops())e.addColorStop(_e(r),new ee(_e(a)).serialize());return e}}re([z("linear"),$()],At.prototype,"type",void 0);re([qt("from")],At.prototype,"from",void 0);re([qt("to")],At.prototype,"to",void 0);re([z(0),$()],At.prototype,"angle",void 0);re([z(0),$()],At.prototype,"fromRadius",void 0);re([z(0),$()],At.prototype,"toRadius",void 0);re([z([]),$()],At.prototype,"stops",void 0);re([F()],At.prototype,"canvasGradient",null);var un=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Ge{constructor(t){hn(this,t)}canvasPattern(t){return t.createPattern(this.image(),this.repetition())}}un([$()],Ge.prototype,"image",void 0);un([z(null),$()],Ge.prototype,"repetition",void 0);un([F()],Ge.prototype,"canvasPattern",null);function ju(s){return s===null?null:s instanceof At||s instanceof Ge?s:new ee(s)}function Jr(s,t){return s===null?"":s instanceof ee?s.serialize():s instanceof At?s.canvasGradient(t):s instanceof Ge?s.canvasPattern(t)??"":""}function ei(s,t,e,r,a){if(e.top===0&&e.right===0&&e.bottom===0&&e.left===0){_u(s,t);return}const o=Jt(e.top,e.right,e.left,t),h=Jt(e.right,e.top,e.bottom,t),c=Jt(e.bottom,e.left,e.right,t),m=Jt(e.left,e.bottom,e.top,t);if(r){const w=P=>{const O=P*a;return P-O};s.moveTo(t.left+o,t.top),s.lineTo(t.right-h,t.top),s.bezierCurveTo(t.right-w(h),t.top,t.right,t.top+w(h),t.right,t.top+h),s.lineTo(t.right,t.bottom-c),s.bezierCurveTo(t.right,t.bottom-w(c),t.right-w(c),t.bottom,t.right-c,t.bottom),s.lineTo(t.left+m,t.bottom),s.bezierCurveTo(t.left+w(m),t.bottom,t.left,t.bottom-w(m),t.left,t.bottom-m),s.lineTo(t.left,t.top+o),s.bezierCurveTo(t.left,t.top+w(o),t.left+w(o),t.top,t.left+o,t.top);return}s.moveTo(t.left+o,t.top),s.arcTo(t.right,t.top,t.right,t.bottom,h),s.arcTo(t.right,t.bottom,t.left,t.bottom,c),s.arcTo(t.left,t.bottom,t.left,t.top,m),s.arcTo(t.left,t.top,t.right,t.top,o)}function Jt(s,t,e,r){const a=s+t>r.width?r.width*(s/(s+t)):s,o=s+e>r.height?r.height*(s/(s+e)):s;return Math.min(a,o)}function _u(s,t){s.rect(t.x,t.y,t.width,t.height)}function ur(s,t){s.moveTo(t.x,t.y)}function jt(s,t){s.lineTo(t.x,t.y)}function oe(s,t){if(!(t.length<2)){ur(s,t[0]);for(const e of t.slice(1))jt(s,e)}}function qu(s,t,e=8){jt(s,t.addY(-e)),jt(s,t.addY(e)),jt(s,t),jt(s,t.addX(-e)),Wu(s,t,e)}function Wu(s,t,e,r=0,a=Math.PI*2,o=!1){s.arc(t.x,t.y,e,r,a,o)}function Gu(s,t,e,r){s.bezierCurveTo(t.x,t.y,e.x,e.y,r.x,r.y)}function gi(){return(s,t)=>{$()(s,t),Bu(ju)(s,t),Du(ee.lerp)(s,t),z(null)(s,t)}}function ne(s,t=e=>e){return(e,r)=>{e[`getDefault${Fe(r)}`]=function(){this.requestLayoutUpdate();const a=this.element.style[s];this.element.style[s]="";const o=t.call(this,this.styles.getPropertyValue(s));return this.element.style[s]=a,o}}}function Hu(){return(s,t)=>{$()(s,t),We(ee)(s,t)}}class Xu extends ue{constructor(t,e){super(t,he,e);for(const r in ti){const a=ti[r];Object.defineProperty(this.invokable,r,{value:(o,h,c=nn)=>{var w,P,O;if(o===void 0)return((P=(w=this.get())==null?void 0:w.find(K=>K.name===a.name))==null?void 0:P.value())??a.default??0;let m=(O=this.get())==null?void 0:O.find(K=>K.name===a.name);return m||(m=new Nu(a),this.set([...this.get(),m])),h===void 0?(m.value(o),this.owner):m.value(o,h,c)}})}}*tweener(t,e,r){const a=this.get(),o=_e(t);if(Uu(a,o)){yield*Ee(...a.map((m,w)=>m.value(o[w].value(),e,r))),this.set(o);return}for(const m of o)m.value(m.default);const h=o.map(m=>m.value.context.raw()),c=a.length>0&&o.length>0?e/2:e;a.length>0&&(yield*Ee(...a.map(m=>m.value(m.default,c,r)))),this.set(o),o.length>0&&(yield*Ee(...o.map((m,w)=>m.value(h[w],c,r))))}}function Yu(){return(s,t)=>{const e=ln(s,t);qe(s,r=>{r[t]=new Xu(e.default??[],r).toSignal()})}}function Uu(s,t){if(s.length!==t.length)return!1;for(let e=0;e=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class E{get x(){return this.position.x}get y(){return this.position.y}getAbsolutePosition(){const t=this.localToWorld();return new v(t.m41,t.m42)}setAbsolutePosition(t){this.position($e(t,e=>new v(e).transformAsPoint(this.worldToParent())))}getAbsoluteRotation(){const t=this.localToWorld();return v.degrees(t.m11,t.m12)}setAbsoluteRotation(t){this.rotation($e(t,e=>wu(e,this.worldToParent())))}getAbsoluteScale(){const t=this.localToWorld();return new v(v.magnitude(t.m11,t.m12),v.magnitude(t.m21,t.m22))}setAbsoluteScale(t){this.scale($e(t,e=>this.getRelativeScale(new v(e))))}getRelativeScale(t){var r;const e=((r=this.parent())==null?void 0:r.absoluteScale())??v.one;return t.div(e)}*tweenCompositeOperation(t,e,r){const a=_e(t);a==="source-over"?(yield*this.compositeOverride(1,e,r),this.compositeOverride(0),this.compositeOperation(a)):(this.compositeOperation(a),this.compositeOverride(1),yield*this.compositeOverride(0,e,r))}absoluteOpacity(){var t;return(((t=this.parent())==null?void 0:t.absoluteOpacity())??1)*this.opacity()}hasFilters(){return!!this.filters().find(t=>t.isActive())}hasShadow(){return!!this.shadowColor()&&(this.shadowBlur()>0||this.shadowOffset.x()!==0||this.shadowOffset.y()!==0)}filterString(){let t="";const e=this.compositeToWorld();for(const r of this.filters())r.isActive()&&(t+=" "+r.serialize(e));return t}setChildren(t){this.spawner(t)}getChildren(){return this.spawnChildren(),this.realChildren}spawnChildren(){const t=this.spawner();if(Qt(this.spawner.context.raw())){const e=new Set;for(const r of t){const a=r.parent.context.raw();if(a&&a!==this)throw new Kr("The spawner returned a node that already has a parent","A spawner should either create entirely new nodes or reuse nodes from a pool.");r.parent(this),e.add(r.key)}for(const r of this.realChildren)e.has(r.key)||r.parent(null);this.realChildren=t}else this.realChildren=t}sortedChildren(){return[...this.children()].sort((t,e)=>Math.sign(t.zIndex()-e.zIndex()))}constructor({children:t,spawner:e,key:r,...a}){this.compositeOverride=Te(0),this.stateStack=[],this.realChildren=[],this.parent=Te(null),this.properties=fi(this);const o=Zu();this.key=o.registerNode(this,r),this.view2D=o.getView(),this.creationStack=new Error().stack,hn(this,a),this.add(t),e&&this.children(e)}localToWorld(){const t=this.parent();return t?t.localToWorld().multiply(this.localToParent()):this.localToParent()}worldToLocal(){return this.localToWorld().inverse()}worldToParent(){var t;return((t=this.parent())==null?void 0:t.worldToLocal())??new DOMMatrix}localToParent(){const t=new DOMMatrix;return t.translateSelf(this.x(),this.y()),t.rotateSelf(0,0,this.rotation()),t.scaleSelf(this.scale.x(),this.scale.y()),t.skewXSelf(this.skew.x()),t.skewYSelf(this.skew.y()),t}compositeToWorld(){var t;return((t=this.compositeRoot())==null?void 0:t.localToWorld())??new DOMMatrix}compositeRoot(){var t;return this.composite()?this:((t=this.parent())==null?void 0:t.compositeRoot())??null}compositeToLocal(){const t=this.compositeRoot();if(t){const e=this.worldToLocal();return e.m44=1,t.localToWorld().multiply(e)}return new DOMMatrix}view(){return this.view2D}add(t){return this.insert(t,1/0)}insert(t,e=0){const r=Array.isArray(t)?t:[t];if(r.length===0)return this;const a=this.children(),o=a.slice(0,e);for(const h of r)h instanceof E&&(o.push(h),h.remove(),h.parent(this));return o.push(...a.slice(e)),this.children(o),this}remove(){const t=this.parent();return t===null?this:(t.children(t.children().filter(e=>e!==this)),this.parent(null),this)}move(t=1){const e=this.parent();if(t===0||!e)return this;const r=e.children(),a=[];if(t>0)for(let o=0;o=0;o--){const h=r[o];if(h===this){const c=o+t;for(;o>c&&o>0;o--)a[o]=r[o-1]}a[o]=h}return e.children(a),this}moveUp(){return this.move(1)}moveDown(){return this.move(-1)}moveToTop(){return this.move(1/0)}moveToBottom(){return this.move(-1/0)}moveTo(t){const e=this.parent();if(!e)return this;const r=e.children().indexOf(this),a=t-r;return this.move(a)}moveBelow(t,e=!1){const r=this.parent();if(!r)return this;if(t.parent()!==r)return yt().error("Cannot position nodes relative to each other if they don't belong to the same parent."),this;const a=r.children(),o=a.indexOf(this),h=a.indexOf(t);if(!e&&oh)return this;const c=h-o+1;return this.move(c)}reparent(t){const e=this.absolutePosition(),r=this.absoluteRotation(),a=this.absoluteScale();t.add(this),this.absolutePosition(e),this.absoluteRotation(r),this.absoluteScale(a)}removeChildren(){for(const t of this.children())t.remove()}dispose(){this.stateStack=[];for(const{signal:t}of this)t==null||t.context.dispose()}clone(t={}){const e={...t};Qt(this.spawner.context.raw())?e.spawner=this.spawner.context.raw():this.children().length>0&&(e.children??(e.children=this.children().map(r=>r.clone())));for(const{key:r,meta:a,signal:o}of this)if(!(!a.cloneable||r in e))if(a.compound)for(const[h,c]of a.compoundEntries)c in e||(e[c]=o[h].context.raw());else e[r]=o.context.raw();return this.instantiate(e)}snapshotClone(t={}){const e={...this.getState(),...t};return this.children().length>0&&(e.children??(e.children=this.children().map(r=>r.snapshotClone()))),this.instantiate(e)}reactiveClone(t={}){const e={...t};this.children().length>0&&(e.children??(e.children=this.children().map(r=>r.reactiveClone())));for(const{key:r,meta:a,signal:o}of this)!a.cloneable||r in e||(e[r]=()=>o());return this.instantiate(e)}instantiate(t={}){return new this.constructor(t)}requiresCache(){return this.cache()||this.opacity()<1||this.compositeOperation()!=="source-over"||this.hasFilters()||this.hasShadow()}cacheCanvas(){const t=document.createElement("canvas").getContext("2d");if(!t)throw new Error("Could not create a cache canvas");return t}cachedCanvas(){const t=this.cacheCanvas(),e=this.worldSpaceCacheBBox(),r=this.localToWorld();return t.canvas.width=e.width,t.canvas.height=e.height,t.setTransform(r.a,r.b,r.c,r.d,r.e-e.x,r.f-e.y),this.draw(t),t}getCacheBBox(){return new Y}cacheBBox(){const t=this.getCacheBBox(),e=this.children();if(e.length===0)return t;const r=t.corners;for(const a of e){const o=a.fullCacheBBox(),h=a.localToParent();r.push(...o.corners.map(c=>c.transformAsPoint(h)))}return Y.fromPoints(...r)}fullCacheBBox(){const t=this.compositeToLocal(),e=this.shadowOffset().transform(t),r=Yr(this.shadowBlur(),t),a=this.cacheBBox().expand(this.filters.blur()*2+r);return e.x<0?(a.x+=e.x,a.width-=e.x):a.width+=e.x,e.y<0?(a.y+=e.y,a.height-=e.y):a.height+=e.y,a}worldSpaceCacheBBox(){const t=Y.fromSizeCentered(this.view().size()),e=Y.fromPoints(...t.transformCorners(this.view().localToWorld())),r=Y.fromPoints(...this.cacheBBox().transformCorners(this.localToWorld()));return e.intersection(r).pixelPerfect}setupDrawFromCache(t){if(t.globalCompositeOperation=this.compositeOperation(),t.globalAlpha*=this.opacity(),this.hasFilters()&&(t.filter=this.filterString()),this.hasShadow()){const e=this.compositeToWorld(),r=this.shadowOffset().transform(e),a=Yr(this.shadowBlur(),e);t.shadowColor=this.shadowColor().serialize(),t.shadowBlur=a,t.shadowOffsetX=r.x,t.shadowOffsetY=r.y}}render(t){if(!(this.absoluteOpacity()<=0)){if(t.save(),this.transformContext(t),this.requiresCache()){const e=this.worldSpaceCacheBBox();if(e.width!==0&&e.height!==0){this.setupDrawFromCache(t);const r=this.cachedCanvas(),a=this.compositeOverride(),o=this.worldToLocal();t.transform(o.a,o.b,o.c,o.d,o.e,o.f),t.drawImage(r.canvas,e.position.x,e.position.y),a>0&&(t.save(),t.globalAlpha*=a,t.globalCompositeOperation="source-over",t.drawImage(r.canvas,e.position.x,e.position.y),t.restore())}}else this.draw(t);t.restore()}}draw(t){this.drawChildren(t)}drawChildren(t){for(const e of this.sortedChildren())e.render(t)}drawOverlay(t,e){const r=this.cacheBBox().transformCorners(e),a=this.getCacheBBox().transformCorners(e);t.strokeStyle="white",t.lineWidth=1,t.beginPath(),oe(t,r),t.closePath(),t.stroke(),t.strokeStyle="blue",t.beginPath(),oe(t,a),t.closePath(),t.stroke()}transformContext(t){const e=this.localToParent();t.transform(e.a,e.b,e.c,e.d,e.e,e.f)}hit(t){let e=null;const r=t.transformAsPoint(this.localToParent().inverse());for(const a of this.children().reverse())if(e=a.hit(r),e)break;return e}collectAsyncResources(){for(const t of this.children())t.collectAsyncResources()}async toPromise(){do await it.consumePromises(),this.collectAsyncResources();while(it.hasPromises());return this}getState(){const t={};for(const{key:e,meta:r,signal:a}of this)!r.cloneable||e in t||(t[e]=a());return t}applyState(t){for(const e in t){const r=this.signalByKey(e);r&&r(t[e])}}save(){this.stateStack.push(this.getState())}restore(t,e=nn){const r=this.stateStack.pop();if(r===void 0)return;if(t===void 0){this.applyState(r);return}const a=this.getState();for(const o in r)a[o]===r[o]&&delete r[o];return Re(t,o=>{const h=e(o),c=Object.keys(r).reduce((m,w)=>(m[w]=he(a[w],r[w],h),m),{});this.applyState(c)})}*[Symbol.iterator](){for(const t in this.properties){const e=this.properties[t],r=this.signalByKey(t);yield{meta:e,signal:r,key:t}}}signalByKey(t){return this[t]}}q([qt()],E.prototype,"position",void 0);q([We(v),Le(!1),$()],E.prototype,"absolutePosition",void 0);q([z(0),$()],E.prototype,"rotation",void 0);q([Le(!1),$()],E.prototype,"absoluteRotation",void 0);q([z(v.one),qt("scale")],E.prototype,"scale",void 0);q([z(v.zero),qt("skew")],E.prototype,"skew",void 0);q([We(v),Le(!1),$()],E.prototype,"absoluteScale",void 0);q([z(0),$()],E.prototype,"zIndex",void 0);q([z(!1),$()],E.prototype,"cache",void 0);q([z(!1),$()],E.prototype,"composite",void 0);q([z("source-over"),$()],E.prototype,"compositeOperation",void 0);q([wt()],E.prototype,"tweenCompositeOperation",null);q([z(1),$()],E.prototype,"opacity",void 0);q([F()],E.prototype,"absoluteOpacity",null);q([Yu()],E.prototype,"filters",void 0);q([z("#0000"),Hu()],E.prototype,"shadowColor",void 0);q([z(0),$()],E.prototype,"shadowBlur",void 0);q([qt("shadowOffset")],E.prototype,"shadowOffset",void 0);q([F()],E.prototype,"hasFilters",null);q([F()],E.prototype,"hasShadow",null);q([F()],E.prototype,"filterString",null);q([pi(!1),Le(!1),z([]),$()],E.prototype,"spawner",void 0);q([pi(!1),Le(!1),$()],E.prototype,"children",void 0);q([F()],E.prototype,"spawnChildren",null);q([F()],E.prototype,"sortedChildren",null);q([F()],E.prototype,"localToWorld",null);q([F()],E.prototype,"worldToLocal",null);q([F()],E.prototype,"worldToParent",null);q([F()],E.prototype,"localToParent",null);q([F()],E.prototype,"compositeToWorld",null);q([F()],E.prototype,"compositeRoot",null);q([F()],E.prototype,"compositeToLocal",null);q([F()],E.prototype,"cacheCanvas",null);q([F()],E.prototype,"cachedCanvas",null);q([F()],E.prototype,"cacheBBox",null);q([F()],E.prototype,"fullCacheBBox",null);q([F()],E.prototype,"worldSpaceCacheBBox",null);E.prototype.isClass=!0;function cn(s){return(t,e)=>{di({top:s?`${s}Top`:"top",right:s?`${s}Right`:"right",bottom:s?`${s}Bottom`:"bottom",left:s?`${s}Left`:"left"})(t,e),We(Tt)(t,e)}}var I=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class L extends E{get columnGap(){return this.gap.x}get rowGap(){return this.gap.y}getX(){return this.isLayoutRoot()?this.x.context.getter():this.computedPosition().x}setX(t){this.x.context.setter(t)}getY(){return this.isLayoutRoot()?this.y.context.getter():this.computedPosition().y}setY(t){this.y.context.setter(t)}get width(){return this.size.x}get height(){return this.size.y}getWidth(){return this.computedSize().width}setWidth(t){this.width.context.setter(t)}*tweenWidth(t,e,r,a){const o=this.desiredSize().x,h=typeof o!="number"||typeof t!="number";let c;h?c=this.size.x():c=o;let m;h?(this.size.x(t),m=this.size.x()):m=t,this.size.x(c),h&&this.lockSize(),yield*Re(e,w=>this.size.x(a(c,m,r(w)))),this.size.x(t),h&&this.releaseSize()}getHeight(){return this.computedSize().height}setHeight(t){this.height.context.setter(t)}*tweenHeight(t,e,r,a){const o=this.desiredSize().y,h=typeof o!="number"||typeof t!="number";let c;h?c=this.size.y():c=o;let m;h?(this.size.y(t),m=this.size.y()):m=t,this.size.y(c),h&&this.lockSize(),yield*Re(e,w=>this.size.y(a(c,m,r(w)))),this.size.y(t),h&&this.releaseSize()}desiredSize(){return{x:this.width.context.getter(),y:this.height.context.getter()}}*tweenSize(t,e,r,a){const o=this.desiredSize();let h;typeof o.x!="number"||typeof o.y!="number"?h=this.size():h=new v(o);let c;typeof t=="object"&&typeof t.x=="number"&&typeof t.y=="number"?c=new v(t):(this.size(t),c=this.size()),this.size(h),this.lockSize(),yield*Re(e,m=>this.size(a(h,c,r(m)))),this.releaseSize(),this.size(t)}constructor(t){super(t)}lockSize(){this.sizeLockCounter(this.sizeLockCounter()+1)}releaseSize(){this.sizeLockCounter(this.sizeLockCounter()-1)}parentTransform(){let t=this.parent();for(;t;){if(t instanceof L)return t;t=t.parent()}return null}anchorPosition(){const t=this.computedSize(),e=this.offset();return t.scale(.5).mul(e)}layoutEnabled(){var t;return this.layout()??((t=this.parentTransform())==null?void 0:t.layoutEnabled())??!1}isLayoutRoot(){var t;return!this.layoutEnabled()||!((t=this.parentTransform())!=null&&t.layoutEnabled())}localToParent(){const t=super.localToParent(),e=this.offset();if(!e.exactlyEquals(v.zero)){const r=this.size().mul(e).scale(-.5);t.translateSelf(r.x,r.y)}return t}scalingRotationMatrix(){const t=new DOMMatrix;t.rotateSelf(0,0,this.rotation()),t.scaleSelf(this.scale.x(),this.scale.y());const e=this.offset();if(!e.exactlyEquals(v.zero)){const r=this.size().mul(e).scale(-.5);t.translateSelf(r.x,r.y)}return t}getComputedLayout(){return new Y(this.element.getBoundingClientRect())}computedPosition(){this.requestLayoutUpdate();const t=this.getComputedLayout(),e=new v(t.x+t.width/2*this.offset.x(),t.y+t.height/2*this.offset.y()),r=this.parentTransform();if(r){const a=r.getComputedLayout();e.x-=a.x+(a.width-t.width)/2,e.y-=a.y+(a.height-t.height)/2}return e}computedSize(){return this.requestLayoutUpdate(),this.getComputedLayout().size}requestLayoutUpdate(){const t=this.parentTransform();this.appendedToView()?(t==null||t.requestFontUpdate(),this.updateLayout()):t.requestLayoutUpdate()}appendedToView(){const t=this.isLayoutRoot();return t&&this.view().element.append(this.element),t}updateLayout(){if(this.applyFont(),this.applyFlex(),this.layoutEnabled()){const t=this.layoutChildren();for(const e of t)e.updateLayout()}}layoutChildren(){const t=[...this.children()],e=[],r=[];for(;t.length;){const a=t.shift();a instanceof L?a.layoutEnabled()&&(e.push(a),r.push(a.element)):a&&t.unshift(...a.children())}return this.element.replaceChildren(...r),e}requestFontUpdate(){var t;this.appendedToView(),(t=this.parentTransform())==null||t.requestFontUpdate(),this.applyFont()}getCacheBBox(){return Y.fromSizeCentered(this.computedSize())}draw(t){if(this.clip()){const e=this.computedSize();if(e.width===0||e.height===0)return;t.beginPath(),t.rect(e.width/-2,e.height/-2,e.width,e.height),t.closePath(),t.clip()}this.drawChildren(t)}drawOverlay(t,e){const r=this.computedSize(),a=r.mul(this.offset()).scale(.5).transformAsPoint(e),o=Y.fromSizeCentered(r),h=o.transformCorners(e),c=o.addSpacing(this.padding().scale(-1)).transformCorners(e),m=o.addSpacing(this.margin()).transformCorners(e);t.beginPath(),oe(t,m),oe(t,h),t.closePath(),t.fillStyle="rgba(255,193,125,0.6)",t.fill("evenodd"),t.beginPath(),oe(t,h),oe(t,c),t.closePath(),t.fillStyle="rgba(180,255,147,0.6)",t.fill("evenodd"),t.beginPath(),oe(t,h),t.closePath(),t.lineWidth=1,t.strokeStyle="white",t.stroke(),t.beginPath(),qu(t,a),t.stroke()}getOriginDelta(t){const e=this.computedSize().scale(.5),r=this.offset().mul(e);return t===gt.Middle?r.flipped:yu(t).mul(e).sub(r)}moveOffset(t){const e=this.computedSize().scale(.5),r=this.offset().mul(e),a=t.mul(e);this.offset(t),this.position(this.position().add(a).sub(r))}parsePixels(t){return t===null?"":`${t}px`}parseLength(t){return t===null?"":typeof t=="string"?t:`${t}px`}applyFlex(){this.element.style.position=this.isLayoutRoot()?"absolute":"relative";const t=this.desiredSize();this.element.style.width=this.parseLength(t.x),this.element.style.height=this.parseLength(t.y),this.element.style.maxWidth=this.parseLength(this.maxWidth()),this.element.style.minWidth=this.parseLength(this.minWidth()),this.element.style.maxHeight=this.parseLength(this.maxHeight()),this.element.style.minHeight=this.parseLength(this.minHeight()),this.element.style.aspectRatio=this.ratio()===null?"":this.ratio().toString(),this.element.style.marginTop=this.parsePixels(this.margin.top()),this.element.style.marginBottom=this.parsePixels(this.margin.bottom()),this.element.style.marginLeft=this.parsePixels(this.margin.left()),this.element.style.marginRight=this.parsePixels(this.margin.right()),this.element.style.paddingTop=this.parsePixels(this.padding.top()),this.element.style.paddingBottom=this.parsePixels(this.padding.bottom()),this.element.style.paddingLeft=this.parsePixels(this.padding.left()),this.element.style.paddingRight=this.parsePixels(this.padding.right()),this.element.style.flexDirection=this.direction(),this.element.style.flexBasis=this.parseLength(this.basis()),this.element.style.flexWrap=this.wrap(),this.element.style.justifyContent=this.justifyContent(),this.element.style.alignContent=this.alignContent(),this.element.style.alignItems=this.alignItems(),this.element.style.alignSelf=this.alignSelf(),this.element.style.columnGap=this.parseLength(this.gap.x()),this.element.style.rowGap=this.parseLength(this.gap.y()),this.sizeLockCounter()>0?(this.element.style.flexGrow="0",this.element.style.flexShrink="0"):(this.element.style.flexGrow=this.grow().toString(),this.element.style.flexShrink=this.shrink().toString())}applyFont(){if(this.element.style.fontFamily=this.fontFamily.isInitial()?"":this.fontFamily(),this.element.style.fontSize=this.fontSize.isInitial()?"":`${this.fontSize()}px`,this.element.style.fontStyle=this.fontStyle.isInitial()?"":this.fontStyle(),this.lineHeight.isInitial())this.element.style.lineHeight="";else{const t=this.lineHeight();this.element.style.lineHeight=typeof t=="string"?(parseFloat(t)/100).toString():`${t}px`}if(this.element.style.fontWeight=this.fontWeight.isInitial()?"":this.fontWeight().toString(),this.element.style.letterSpacing=this.letterSpacing.isInitial()?"":`${this.letterSpacing()}px`,this.element.style.textAlign=this.textAlign.isInitial()?"":this.textAlign(),this.textWrap.isInitial())this.element.style.whiteSpace="";else{const t=this.textWrap();typeof t=="boolean"?this.element.style.whiteSpace=t?"normal":"nowrap":this.element.style.whiteSpace=t}}dispose(){var t;super.dispose(),(t=this.sizeLockCounter)==null||t.context.dispose(),this.element&&(this.element.remove(),this.element.innerHTML=""),this.element=null,this.styles=null}hit(t){const e=t.transformAsPoint(this.localToParent().inverse());return this.cacheBBox().includes(e)?super.hit(t)??this:null}}I([z(null),$()],L.prototype,"layout",void 0);I([z(null),$()],L.prototype,"maxWidth",void 0);I([z(null),$()],L.prototype,"maxHeight",void 0);I([z(null),$()],L.prototype,"minWidth",void 0);I([z(null),$()],L.prototype,"minHeight",void 0);I([z(null),$()],L.prototype,"ratio",void 0);I([cn("margin")],L.prototype,"margin",void 0);I([cn("padding")],L.prototype,"padding",void 0);I([z("row"),$()],L.prototype,"direction",void 0);I([z(null),$()],L.prototype,"basis",void 0);I([z(0),$()],L.prototype,"grow",void 0);I([z(1),$()],L.prototype,"shrink",void 0);I([z("nowrap"),$()],L.prototype,"wrap",void 0);I([z("start"),$()],L.prototype,"justifyContent",void 0);I([z("normal"),$()],L.prototype,"alignContent",void 0);I([z("stretch"),$()],L.prototype,"alignItems",void 0);I([z("auto"),$()],L.prototype,"alignSelf",void 0);I([z(0),qt({x:"columnGap",y:"rowGap"})],L.prototype,"gap",void 0);I([ne("font-family"),$()],L.prototype,"fontFamily",void 0);I([ne("font-size",parseFloat),$()],L.prototype,"fontSize",void 0);I([ne("font-style"),$()],L.prototype,"fontStyle",void 0);I([ne("font-weight",parseInt),$()],L.prototype,"fontWeight",void 0);I([ne("line-height",parseFloat),$()],L.prototype,"lineHeight",void 0);I([ne("letter-spacing",s=>s==="normal"?0:parseFloat(s)),$()],L.prototype,"letterSpacing",void 0);I([ne("white-space",s=>s==="pre"?"pre":s==="normal"),$()],L.prototype,"textWrap",void 0);I([z("inherit"),$()],L.prototype,"textDirection",void 0);I([ne("text-align"),$()],L.prototype,"textAlign",void 0);I([z({x:null,y:null}),qt({x:"width",y:"height"})],L.prototype,"size",void 0);I([wt()],L.prototype,"tweenWidth",null);I([wt()],L.prototype,"tweenHeight",null);I([F()],L.prototype,"desiredSize",null);I([wt()],L.prototype,"tweenSize",null);I([qt("offset")],L.prototype,"offset",void 0);I([Wt(gt.Middle)],L.prototype,"middle",void 0);I([Wt(gt.Top)],L.prototype,"top",void 0);I([Wt(gt.Bottom)],L.prototype,"bottom",void 0);I([Wt(gt.Left)],L.prototype,"left",void 0);I([Wt(gt.Right)],L.prototype,"right",void 0);I([Wt(gt.TopLeft)],L.prototype,"topLeft",void 0);I([Wt(gt.TopRight)],L.prototype,"topRight",void 0);I([Wt(gt.BottomLeft)],L.prototype,"bottomLeft",void 0);I([Wt(gt.BottomRight)],L.prototype,"bottomRight",void 0);I([z(!1),$()],L.prototype,"clip",void 0);I([z(0),$()],L.prototype,"sizeLockCounter",void 0);I([F()],L.prototype,"parentTransform",null);I([F()],L.prototype,"anchorPosition",null);I([F()],L.prototype,"layoutEnabled",null);I([F()],L.prototype,"isLayoutRoot",null);I([F()],L.prototype,"scalingRotationMatrix",null);I([F()],L.prototype,"computedPosition",null);I([F()],L.prototype,"computedSize",null);I([F()],L.prototype,"requestLayoutUpdate",null);I([F()],L.prototype,"appendedToView",null);I([F()],L.prototype,"updateLayout",null);I([F()],L.prototype,"layoutChildren",null);I([F()],L.prototype,"requestFontUpdate",null);I([F()],L.prototype,"applyFlex",null);I([F()],L.prototype,"applyFont",null);function Wt(s){return(t,e)=>{$()(t,e),Le(!1)(t,e);const r=fe(t,e);r.getter=function(){return this.getOriginDelta(s).transformAsPoint(this.localToParent())},r.setter=function(a){return this.position($e(a,o=>this.getOriginDelta(s).transform(this.scalingRotationMatrix()).flipped.add(o))),this}}}qe(L.prototype,s=>{s.element=document.createElement("div"),s.element.style.display="flex",s.element.style.boxSizing="border-box",s.styles=getComputedStyle(s.element)});var xt=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class mt extends L{rippleSize(){return du(this.rippleStrength(),0,50)}constructor(t){super(t),this.rippleStrength=Te(0)}applyText(t){t.direction=this.textDirection(),this.element.dir=this.textDirection()}applyStyle(t){t.fillStyle=Jr(this.fill(),t),t.strokeStyle=Jr(this.stroke(),t),t.lineWidth=this.lineWidth(),t.lineJoin=this.lineJoin(),t.lineCap=this.lineCap(),t.setLineDash(this.lineDash()),t.lineDashOffset=this.lineDashOffset(),this.antialiased()||(t.filter="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxmaWx0ZXIgaWQ9ImZpbHRlciIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVDb21wb25lbnRUcmFuc2Zlcj48ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPjxmZUZ1bmNHIHR5cGU9ImlkZW50aXR5Ii8+PGZlRnVuY0IgdHlwZT0iaWRlbnRpdHkiLz48ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAgMSIvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48L3N2Zz4=#filter)")}draw(t){this.drawShape(t),this.clip()&&t.clip(this.getPath()),this.drawChildren(t)}drawShape(t){const e=this.getPath(),r=this.lineWidth()>0&&this.stroke()!==null,a=this.fill()!==null;t.save(),this.applyStyle(t),this.drawRipple(t),this.strokeFirst()?(r&&t.stroke(e),a&&t.fill(e)):(a&&t.fill(e),r&&t.stroke(e)),t.restore()}getCacheBBox(){return super.getCacheBBox().expand(this.lineWidth()/2)}getPath(){return new Path2D}getRipplePath(){return new Path2D}drawRipple(t){const e=this.rippleStrength();if(e>0){const r=this.getRipplePath();t.save(),t.globalAlpha*=V(.54,0,e),t.fill(r),t.restore()}}*ripple(t=1){this.rippleStrength(0),yield*this.rippleStrength(1,t,gu),this.rippleStrength(0)}}xt([gi()],mt.prototype,"fill",void 0);xt([gi()],mt.prototype,"stroke",void 0);xt([z(!1),$()],mt.prototype,"strokeFirst",void 0);xt([z(0),$()],mt.prototype,"lineWidth",void 0);xt([z("miter"),$()],mt.prototype,"lineJoin",void 0);xt([z("butt"),$()],mt.prototype,"lineCap",void 0);xt([z([]),$()],mt.prototype,"lineDash",void 0);xt([z(0),$()],mt.prototype,"lineDashOffset",void 0);xt([z(!0),$()],mt.prototype,"antialiased",void 0);xt([F()],mt.prototype,"rippleSize",null);xt([F()],mt.prototype,"getPath",null);xt([wt()],mt.prototype,"ripple",null);var Ot=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class St extends mt{desiredSize(){return this.childrenBBox().size}constructor(t){super(t),this.canHaveSubpath=!1}percentageToDistance(t){return dt(0,this.baseArcLength(),this.startOffset()+this.offsetArcLength()*t)}distanceToPercentage(t){return(t-this.startOffset())/this.offsetArcLength()}baseArcLength(){return this.profile().arcLength}offsetArcLength(){const t=this.startOffset(),e=this.endOffset(),r=this.baseArcLength();return dt(0,r,r-t-e)}arcLength(){return this.offsetArcLength()*Math.abs(this.start()-this.end())}completion(){return Math.abs(this.start()-this.end())}processSubpath(t,e,r){}curveDrawingInfo(){const t=new Path2D;let e=new Path2D;const r=this.profile();let a=this.percentageToDistance(this.start()),o=this.percentageToDistance(this.end());a>o&&([a,o]=[o,a]);const h=o-a,c=Math.min(h/2,this.arrowSize());this.startArrow()&&(a+=c/2),this.endArrow()&&(o-=c/2);let m=0,w=null,P=null,O=null,K=null;for(const ct of r.segments){const Rt=m;if(m+=ct.arcLength,mo)break}return this.closed()&&this.start.isInitial()&&this.end.isInitial()&&this.startOffset.isInitial()&&this.endOffset.isInitial()&&e.closePath(),this.processSubpath(e,w,O),t.addPath(e),{startPoint:w??v.zero,startTangent:P??v.right,endPoint:O??v.zero,endTangent:K??v.right,arrowSize:c,path:t,startOffset:a}}getPointAtDistance(t){return Ks(this.profile(),t+this.startOffset())}getPointAtPercentage(t){return Ks(this.profile(),this.percentageToDistance(t))}getComputedLayout(){return this.offsetComputedLayout(super.getComputedLayout())}offsetComputedLayout(t){return t.position=t.position.sub(this.childrenBBox().center),t}getPath(){return this.curveDrawingInfo().path}getCacheBBox(){const t=this.childrenBBox(),e=this.startArrow()||this.endArrow()?this.arrowSize():0,r=this.lineWidth(),a=this.lineWidthCoefficient();return t.expand(Math.max(0,e,r*a))}lineWidthCoefficient(){return this.lineCap()==="square"?.5*1.4143:.5}requiresProfile(){return!this.start.isInitial()||!this.startOffset.isInitial()||!this.startArrow.isInitial()||!this.end.isInitial()||!this.endOffset.isInitial()||!this.endArrow.isInitial()}drawShape(t){super.drawShape(t),(this.startArrow()||this.endArrow())&&this.drawArrows(t)}drawArrows(t){const{startPoint:e,startTangent:r,endPoint:a,endTangent:o,arrowSize:h}=this.curveDrawingInfo();h<.001||(t.save(),t.beginPath(),this.endArrow()&&this.drawArrow(t,a,o.flipped,h),this.startArrow()&&this.drawArrow(t,e,r,h),t.fillStyle=Jr(this.stroke(),t),t.closePath(),t.fill(),t.restore())}drawArrow(t,e,r,a){const o=r.perpendicular,h=e.add(r.scale(-a/2));ur(t,h),jt(t,h.add(r.add(o).scale(a))),jt(t,h.add(r.sub(o).scale(a))),jt(t,h),t.closePath()}}Ot([z(!1),$()],St.prototype,"closed",void 0);Ot([z(0),$()],St.prototype,"start",void 0);Ot([z(0),$()],St.prototype,"startOffset",void 0);Ot([z(!1),$()],St.prototype,"startArrow",void 0);Ot([z(1),$()],St.prototype,"end",void 0);Ot([z(0),$()],St.prototype,"endOffset",void 0);Ot([z(!1),$()],St.prototype,"endArrow",void 0);Ot([z(24),$()],St.prototype,"arrowSize",void 0);Ot([F()],St.prototype,"arcLength",null);Ot([F()],St.prototype,"curveDrawingInfo",null);class cr{}class Ju extends cr{constructor(t,e,r,a,o){super(),this.center=t,this.radius=e,this.from=r,this.to=a,this.counter=o,this.angle=Math.acos(dt(-1,1,r.dot(a))),this.length=Math.abs(this.angle*e);const h=new v(1,1).scale(e);this.points=[t.sub(h),t.add(h)]}get arcLength(){return this.length}draw(t,e,r){const a=this.counter?-1:1,o=this.from.radians+e*this.angle*a,h=this.to.radians-(1-r)*this.angle*a;Math.abs(this.angle)>1e-4&&t.arc(this.center.x,this.center.y,this.radius,o,h,this.counter);const c=v.fromRadians(o),m=v.fromRadians(h);return[{position:this.center.add(c.scale(this.radius)),tangent:this.counter?c:c.flipped,normal:this.counter?c.flipped:c},{position:this.center.add(m.scale(this.radius)),tangent:this.counter?m.flipped:m,normal:this.counter?m.flipped:m}]}getPoint(t){const e=this.counter?-1:1,r=this.from.radians+t*this.angle*e,a=v.fromRadians(r);return{position:this.center.add(a.scale(this.radius)),tangent:this.counter?a:a.flipped,normal:this.counter?a:a.flipped}}}class Qu{constructor(t,e=20){this.curve=t,this.sampledDistances=[],this.resample(e)}resample(t){this.sampledDistances=[0];let e=0,r=this.curve.eval(0).position;for(let a=1;a=a&&t<=o)return pu(a,o,r/(e-1),(r+1)/(e-1),t)}return 1}}class Vu extends cr{get arcLength(){return this.length}constructor(t,e){super(),this.curve=t,this.length=e,this.pointSampler=new Qu(this)}getBBox(){return this.curve.getBounds()}eval(t){const e=this.tangent(t);return{position:this.curve.eval(t),tangent:e,normal:e.perpendicular}}getPoint(t){const e=this.pointSampler.pointAtDistance(this.arcLength*t);return{position:e.position,tangent:e.tangent,normal:e.tangent.perpendicular}}transformPoints(t){return this.points.map(e=>e.transformAsPoint(t))}tangent(t){return this.curve.evalDerivative(t).normalized}draw(t,e=0,r=1,a=!0){let o=null,h=e,c=r,m=this.points;if(e!==0||r!==1){const O=this.length*e,K=this.length*r;h=this.pointSampler.distanceToT(O),c=this.pointSampler.distanceToT(K);const ct=(c-h)/(1-h),[,Rt]=this.split(h);[o]=Rt.split(ct),m=o.points}a&&ur(t,m[0]),(o??this).doDraw(t);const w=this.tangent(h),P=this.tangent(c);return[{position:m[0],tangent:w,normal:w.perpendicular},{position:m.at(-1),tangent:P,normal:P.perpendicular}]}}class ft{static constant(t){return new ft(t)}static linear(t,e){return new ft(t,e)}static quadratic(t,e,r){return new ft(t,e,r)}static cubic(t,e,r,a){return new ft(t,e,r,a)}get degree(){return this.c3!==0?3:this.c2!==0?2:this.c1!==0?1:0}constructor(t,e,r,a){this.c0=t,this.c1=e??0,this.c2=r??0,this.c3=a??0}differentiate(t=1){switch(t){case 0:return this;case 1:return new ft(this.c1,2*this.c2,3*this.c3,0);case 2:return new ft(2*this.c2,6*this.c3,0,0);case 3:return new ft(6*this.c3,0,0,0);default:throw new Error("Unsupported derivative")}}eval(t,e=0){return e!==0?this.differentiate(e).eval(t):this.c3*(t*t*t)+this.c2*(t*t)+this.c1*t+this.c0}split(t){const e=1-t,r=new ft(this.c0,this.c1*t,this.c2*t*t,this.c3*t*t*t),a=new ft(this.eval(0),e*this.differentiate(1).eval(t),e*e/2*this.differentiate(2).eval(t),e*e*e/6*this.differentiate(3).eval(t));return[r,a]}roots(){switch(this.degree){case 3:return this.solveCubicRoots();case 2:return this.solveQuadraticRoots();case 1:return this.solveLinearRoot();case 0:return[];default:throw new Error(`Unsupported polynomial degree: ${this.degree}`)}}localExtrema(){return this.differentiate().roots()}localExtrema01(){const t=this.localExtrema(),e=[];for(let r=0;r=0&&a<=1&&e.push(t[r])}return e}outputRange01(){let t=[this.eval(0),this.eval(1)];const e=r=>{t[1]>t[0]?t=[Math.min(t[0],r),Math.max(t[1],r)]:t=[Math.min(t[1],r),Math.max(t[0],r)]};return this.localExtrema01().forEach(r=>e(this.eval(r))),t}solveCubicRoots(){const t=this.c0,e=this.c1,r=this.c2,a=this.c3,o=t*t,h=t*r,c=e*e,m=(3*h-c)/(3*o),w=(2*c*e-9*h*e+27*o*a)/(27*o*t),P=this.solveDepressedCubicRoots(m,w),O=K=>K-e/(3*t);switch(P.length){case 1:return[O(P[0])];case 2:return[O(P[0]),O(P[1])];case 3:return[O(P[0]),O(P[1]),O(P[2])];default:return[]}}solveDepressedCubicRoots(t,e){if(this.almostZero(t))return[Math.cbrt(-e)];const r=Math.PI*2,a=4*t*t*t+27*e*e;if(a<1e-5){const o=2*Math.sqrt(-t/3),h=3*e/(2*t)*Math.sqrt(-3/t),c=m=>o*Math.cos(1/3*Math.acos(dt(-1,1,h))-r/3*m);return h>=.9999?[c(0),c(2)]:h<=-.9999?[c(1),c(2)]:[c(0),c(1),c(2)]}if(a>0&&t<0){const o=.3333333333333333*Math.acosh(-3*Math.abs(e)/(2*t)*Math.sqrt(-3/t));return[-2*Math.sign(e)*Math.sqrt(-t/3)*Math.cosh(o)]}if(t>0){const o=.3333333333333333*Math.asinh(3*e/(2*t)*Math.sqrt(3/t));return[-2*Math.sqrt(t/3)*Math.sinh(o)]}return[]}solveQuadraticRoots(){const t=this.c2,e=this.c1,r=this.c0,a=e*e-4*t*r;if(this.almostZero(a))return[-e/(2*t)];if(a>=0){const o=Math.sqrt(a),h=(-e-o)/(2*t),c=(-e+o)/(2*t);return[Math.min(h,c),Math.max(h,c)]}return[]}solveLinearRoot(){return[-this.c0/this.c1]}almostZero(t){return Math.abs(0-t)<=Number.EPSILON}}class Be{constructor(t,e,r,a){this.c0=t,this.c1=e,this.c2=r,this.c3=a,t instanceof ft?(this.x=t,this.y=e):a!==void 0?(this.x=new ft(t.x,e.x,r.x,a.x),this.y=new ft(t.y,e.y,r.y,a.y)):(this.x=new ft(t.x,e.x,r.x),this.y=new ft(t.y,e.y,r.y))}eval(t,e=0){return new v(this.x.differentiate(e).eval(t),this.y.differentiate(e).eval(t))}split(t){const[e,r]=this.x.split(t),[a,o]=this.y.split(t);return[new Be(e,a),new Be(r,o)]}differentiate(t=1){return new Be(this.x.differentiate(t),this.y.differentiate(t))}evalDerivative(t){return this.differentiate().eval(t)}getBounds(){const t=this.x.outputRange01(),e=this.y.outputRange01();return Y.fromPoints(new v(Math.min(...t),Math.max(...e)),new v(Math.max(...t),Math.min(...e)))}}var Ku=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Ut extends Vu{get points(){return[this.p0,this.p1,this.p2,this.p3]}constructor(t,e,r,a){super(new Be(t,t.flipped.add(e).scale(3),t.scale(3).sub(e.scale(6)).add(r.scale(3)),t.flipped.add(e.scale(3)).sub(r.scale(3)).add(a)),Ut.getLength(t,e,r,a)),this.p0=t,this.p1=e,this.p2=r,this.p3=a}split(t){const e=new v(this.p0.x+(this.p1.x-this.p0.x)*t,this.p0.y+(this.p1.y-this.p0.y)*t),r=new v(this.p1.x+(this.p2.x-this.p1.x)*t,this.p1.y+(this.p2.y-this.p1.y)*t),a=new v(this.p2.x+(this.p3.x-this.p2.x)*t,this.p2.y+(this.p3.y-this.p2.y)*t),o=new v(e.x+(r.x-e.x)*t,e.y+(r.y-e.y)*t),h=new v(r.x+(a.x-r.x)*t,r.y+(a.y-r.y)*t),c=new v(o.x+(h.x-o.x)*t,o.y+(h.y-o.y)*t),m=new Ut(this.p0,e,o,c),w=new Ut(c,h,a,this.p3);return[m,w]}doDraw(t){Gu(t,this.p1,this.p2,this.p3)}static getLength(t,e,r,a){return Ut.el.setAttribute("d",`M ${t.x} ${t.y} C ${e.x} ${e.y} ${r.x} ${r.y} ${a.x} ${a.y}`),Ut.el.getTotalLength()}}Ku([rn(()=>document.createElementNS("http://www.w3.org/2000/svg","path"))],Ut,"el",void 0);class Ce extends cr{constructor(t,e){super(),this.from=t,this.to=e,this.vector=e.sub(t),this.length=this.vector.magnitude,this.normal=this.vector.perpendicular.normalized.safe,this.points=[t,e]}get arcLength(){return this.length}draw(t,e=0,r=1,a=!1){const o=this.from.add(this.vector.scale(e)),h=this.from.add(this.vector.scale(r));return a&&ur(t,o),jt(t,h),[{position:o,tangent:this.normal.flipped,normal:this.normal},{position:h,tangent:this.normal,normal:this.normal}]}getPoint(t){return{position:this.from.add(this.vector.scale(t)),tangent:this.normal.flipped,normal:this.normal}}}function tc(s,t,e,r){const a={arcLength:0,segments:[],minSin:1},o=Jt(t.top,t.right,t.left,s),h=Jt(t.right,t.top,t.bottom,s),c=Jt(t.bottom,t.left,t.right,s),m=Jt(t.left,t.bottom,t.top,s);let w=new v(s.left+o,s.top),P=new v(s.right-h,s.top);return Pe(a,new Ce(w,P)),w=new v(s.right,s.top+h),P=new v(s.right,s.bottom-c),h>0&&nr(a,w.addX(-h),h,v.down,v.right,e,r),Pe(a,new Ce(w,P)),w=new v(s.right-c,s.bottom),P=new v(s.left+m,s.bottom),c>0&&nr(a,w.addY(-c),c,v.right,v.up,e,r),Pe(a,new Ce(w,P)),w=new v(s.left,s.bottom-m),P=new v(s.left,s.top+o),m>0&&nr(a,w.addX(m),m,v.up,v.left,e,r),Pe(a,new Ce(w,P)),w=new v(s.left+o,s.top),o>0&&nr(a,w.addY(o),o,v.left,v.down,e,r),a}function Pe(s,t){s.segments.push(t),s.arcLength+=t.arcLength}function nr(s,t,e,r,a,o,h){const c=t.add(r.scale(e)),m=t.add(a.scale(e));o?Pe(s,new Ut(c,c.add(a.scale(h*e)),m.add(r.scale(h*e)),m)):Pe(s,new Ju(t,e,r,a,!1))}var fr=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class He extends St{constructor(t){super(t)}profile(){return tc(this.childrenBBox(),this.radius(),this.smoothCorners(),this.cornerSharpness())}desiredSize(){return{x:this.width.context.getter(),y:this.height.context.getter()}}offsetComputedLayout(t){return t}childrenBBox(){return Y.fromSizeCentered(this.computedSize())}getPath(){if(this.requiresProfile())return this.curveDrawingInfo().path;const t=new Path2D,e=this.radius(),r=this.smoothCorners(),a=this.cornerSharpness(),o=Y.fromSizeCentered(this.size());return ei(t,o,e,r,a),t}getCacheBBox(){return super.getCacheBBox().expand(this.rippleSize())}getRipplePath(){const t=new Path2D,e=this.rippleSize(),r=this.radius().addScalar(e),a=this.smoothCorners(),o=this.cornerSharpness(),h=Y.fromSizeCentered(this.size()).expand(e);return ei(t,h,r,a,o),t}}fr([cn("radius")],He.prototype,"radius",void 0);fr([z(!1),$()],He.prototype,"smoothCorners",void 0);fr([z(.6),$()],He.prototype,"cornerSharpness",void 0);fr([F()],He.prototype,"profile",null);var fn=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class pe extends He{constructor(t){super({composite:!0,fontFamily:"Roboto",fontSize:48,lineHeight:"120%",textWrap:!1,fontStyle:"normal",...t}),this.view2D=this,pe.shadowRoot.append(this.element),this.applyFlex()}transformContext(){}dispose(){this.removeChildren(),super.dispose()}render(t){this.computedSize(),this.computedPosition(),super.render(t)}requestLayoutUpdate(){this.updateLayout()}requestFontUpdate(){this.applyFont()}view(){return this}}fn([z(je.Paused),$()],pe.prototype,"playbackState",void 0);fn([$()],pe.prototype,"assetHash",void 0);fn([rn(()=>{const s="motion-canvas-2d-frame";let t=document.querySelector(`#${s}`);return t||(t=document.createElement("div"),t.id=s,t.style.position="absolute",t.style.pointerEvents="none",t.style.top="0",t.style.left="0",t.style.opacity="0",t.style.overflow="hidden",document.body.prepend(t)),t.shadowRoot??t.attachShadow({mode:"open"})})],pe,"shadowRoot",void 0);var ec=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Me extends cr{constructor(t,e,r,a,o,h){super(),this.startPoint=t,this.radius=e,this.xAxisRotationDegree=r,this.largeArcFlag=a,this.sweepFlag=o,this.endPoint=h,this.xAxisRotation=this.xAxisRotationDegree*Zt,this.radius=new v(Math.abs(e.x),Math.abs(e.y));const c=t.sub(h).div(2).transform(tt.fromRotation(-r).domMatrix),m=c.x*c.x/(e.x*e.x)+c.y*c.y/(e.y*e.y);if(m>1){const ct=Math.sqrt(m);e.x=ct*e.x,e.y=ct*e.y}const w=new v(e.ctg*c.y,e.perpendicular.ctg*c.x).scale(Math.sqrt(1/(c.x*c.x/(e.x*e.x)+c.y*c.y/(e.y*e.y))-1)*(a===o?-1:1));this.xAxisRotationMatrix=tt.fromRotation(r).domMatrix,this.center=w.transform(this.xAxisRotationMatrix).add(t.add(h).div(2));const P=c.sub(w).div(e),O=c.scale(-1).sub(w).div(e);this.startAngle=P.radians,this.deltaAngle=v.angleBetween(P,O)%(Math.PI*2),this.sweepFlag===0&&this.deltaAngle>0&&(this.deltaAngle-=Math.PI*2),this.sweepFlag===1&&this.deltaAngle<0&&(this.deltaAngle+=Math.PI*2),Me.el.setAttribute("d",`M ${this.startPoint.x} ${this.startPoint.y} A ${this.radius.x} ${this.radius.y} ${this.xAxisRotationDegree} ${this.largeArcFlag} ${this.sweepFlag} ${this.endPoint.x} ${this.endPoint.y}`),this.length=Me.el.getTotalLength();const K=new Y(Me.el.getBBox());this.points=[K.topLeft,K.bottomRight]}getAnglePosition(t){return this.radius.mul(v.fromRadians(t)).transform(this.xAxisRotationMatrix).add(this.center)}getAngleDerivative(t){return new v(-this.radius.x*Math.sin(t),this.radius.y*Math.cos(t)).transform(this.xAxisRotationMatrix)}draw(t,e,r,a){const o=this.startAngle+this.deltaAngle*e,h=this.startAngle+this.deltaAngle*r,c=this.getPoint(e),m=this.getPoint(r);return a&&t.moveTo(c.position.x,c.position.y),t.ellipse(this.center.x,this.center.y,this.radius.x,this.radius.y,this.xAxisRotation,o,h,this.sweepFlag===0),[c,m]}getPoint(t){const e=this.startAngle+t*this.deltaAngle,r=this.getAngleDerivative(e).normalized;return{position:t===0?this.startPoint:t===1?this.endPoint:this.getAnglePosition(e),tangent:r,normal:r.perpendicular}}get arcLength(){return this.length}}ec([rn(()=>{const s=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");return s.appendChild(t),pe.shadowRoot.appendChild(s),t})],Me,"el",void 0);function rc(s,t,e,r,a=!1){const o={arcLength:0,minSin:1,segments:[]};if(et+Math.PI*2){const P=Math.floor((e-t)/(Math.PI*2));e-=Math.PI*2*P}const h=(t+e)/2,c=s.mul(v.fromRadians(t)),m=s.mul(v.fromRadians(e)),w=s.mul(v.fromRadians(h)).scale(a?-1:1);return r&&Qr(o,new Ce(v.zero,c)),ri(o,s,c,w,t,h,a),ri(o,s,w,m,h,e,a),r&&Qr(o,new Ce(m,v.zero)),o}function Qr(s,t){s.segments.push(t),s.arcLength+=t.arcLength}function ri(s,t,e,r,a,o,h){const c=Math.abs(a-o)<=180?1:0,m=a>o?0:1,w=h?0:1;Qr(s,new Me(e,t,0,0,c^w^m,r))}var pr=globalThis&&globalThis.__decorate||function(s,t,e,r){var a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,t,e,r);else for(var c=s.length-1;c>=0;c--)(h=s[c])&&(o=(a<3?h(o):a>3?h(t,e,o):h(t,e))||o);return a>3&&o&&Object.defineProperty(t,e,o),o};class Xe extends St{constructor(t){super(t)}profile(){return rc(this.size().scale(.5),this.startAngle()*Zt,this.endAngle()*Zt,this.closed(),this.counterclockwise())}desiredSize(){return{x:this.width.context.getter(),y:this.height.context.getter()}}offsetComputedLayout(t){return t}childrenBBox(){return Y.fromSizeCentered(this.computedSize())}getPath(){return this.requiresProfile()?this.curveDrawingInfo().path:this.createPath()}getRipplePath(){return this.createPath(this.rippleSize())}getCacheBBox(){return super.getCacheBBox().expand(this.rippleSize())}createPath(t=0){const e=new Path2D,r=this.startAngle()*Zt;let a=this.endAngle()*Zt;const o=this.size().scale(.5).add(t),h=this.closed();if(a>r+Math.PI*2){const c=Math.floor((a-r)/(Math.PI*2));a-=Math.PI*2*c}return h&&e.moveTo(0,0),e.ellipse(0,0,o.x,o.y,0,r,a,this.counterclockwise()),h&&e.closePath(),e}}pr([z(0),$()],Xe.prototype,"startAngle",void 0);pr([z(360),$()],Xe.prototype,"endAngle",void 0);pr([z(!1),$()],Xe.prototype,"counterclockwise",void 0);pr([F()],Xe.prototype,"profile",null);class nc extends lu{constructor(t){super(t),this.view=null,this.registeredNodes={},this.nodeCounters={},this.assetHash=Date.now().toString(),this.recreateView()}getView(){return this.view}next(){var t;return(t=this.getView())==null||t.playbackState(this.playback.state),super.next()}draw(t){t.save(),this.renderLifecycle.dispatch([zt.BeforeRender,t]),t.save(),this.renderLifecycle.dispatch([zt.BeginRender,t]),this.getView().playbackState(this.playback.state),this.getView().render(t),this.renderLifecycle.dispatch([zt.FinishRender,t]),t.restore(),this.renderLifecycle.dispatch([zt.AfterRender,t]),t.restore()}reset(t){for(const e in this.registeredNodes)try{this.registeredNodes[e].dispose()}catch(r){this.logger.error(r)}return this.registeredNodes={},this.nodeCounters={},this.recreateView(),super.reset(t)}inspectPosition(t,e){return this.execute(()=>{var r;return((r=this.getView().hit(new v(t,e).scale(this.resolutionScale)))==null?void 0:r.key)??null})}validateInspection(t){var e;return((e=this.getNode(t))==null?void 0:e.key)??null}inspectAttributes(t){const e=this.getNode(t);if(!e)return null;const r={stack:e.creationStack,key:e.key};for(const{key:a,meta:o,signal:h}of e)o.inspectable&&(r[a]=h());return r}drawOverlay(t,e,r){const a=this.getNode(t);a&&this.execute(()=>{a.drawOverlay(r,e.scale(1/this.resolutionScale,1/this.resolutionScale).multiplySelf(a.localToWorld()))})}transformMousePosition(t,e){return new v(t,e).scale(this.resolutionScale).transformAsPoint(this.getView().localToParent().inverse())}registerNode(t,e){var h;var r;const a=((h=t.constructor)==null?void 0:h.name)??"unknown";(r=this.nodeCounters)[a]??(r[a]=0);const o=this.nodeCounters[a]++;return e??(e=`${this.name}/${a}[${o}]`),this.registeredNodes[e]=t,e}getNode(t){return typeof t!="string"?null:this.registeredNodes[t]??null}recreateView(){this.execute(()=>{const t=this.getSize();this.view=new pe({position:t.scale(this.resolutionScale/2),scale:this.resolutionScale,assetHash:this.assetHash,size:t})})}}function sc(s){return{klass:nc,config:s,stack:new Error().stack,meta:hu()}}const le=sc(function*(s){const t=uu();s.add(Fu(Xe,{ref:t,x:-300,width:140,height:140,fill:"#e13238"})),yield*Ee(t().position.x(300,1).to(-300,1),t().fill("#e6a700",1).to("#e13238",1))});le.name="example";Iu.attach(le.meta);le.onReplaced??(le.onReplaced=new te(le.config));const ic={scenes:[le]},vi=new Nt("settings","\0settings");vi.loadData({version:1,appearance:{color:"rgb(51,166,255)",font:!1,coordinates:!0},defaults:{background:null,size:{x:1920,y:1080}}});const ac=Tu("project",{core:"3.11.0",two:"3.11.0",ui:"3.11.0",vitePlugin:"3.11.0"},[],ic,zu,vi);export{ac as default}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..1a876a1 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ + + + + + + Document + + + + + + + \ No newline at end of file diff --git a/node_modules/.bin/esbuild b/node_modules/.bin/esbuild new file mode 100644 index 0000000..26bef54 --- /dev/null +++ b/node_modules/.bin/esbuild @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@" +else + exec node "$basedir/../esbuild/bin/esbuild" "$@" +fi diff --git a/node_modules/.bin/esbuild.cmd b/node_modules/.bin/esbuild.cmd new file mode 100644 index 0000000..cc920c5 --- /dev/null +++ b/node_modules/.bin/esbuild.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %* diff --git a/node_modules/.bin/esbuild.ps1 b/node_modules/.bin/esbuild.ps1 new file mode 100644 index 0000000..81ffbf9 --- /dev/null +++ b/node_modules/.bin/esbuild.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args + } else { + & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args + } else { + & "node$exe" "$basedir/../esbuild/bin/esbuild" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 100644 index 0000000..23254eb --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@" +else + exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@" +fi diff --git a/node_modules/.bin/nanoid.cmd b/node_modules/.bin/nanoid.cmd new file mode 100644 index 0000000..9c40107 --- /dev/null +++ b/node_modules/.bin/nanoid.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/node_modules/.bin/nanoid.ps1 b/node_modules/.bin/nanoid.ps1 new file mode 100644 index 0000000..d8a4d7a --- /dev/null +++ b/node_modules/.bin/nanoid.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/rollup b/node_modules/.bin/rollup new file mode 100644 index 0000000..11bd86d --- /dev/null +++ b/node_modules/.bin/rollup @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@" +else + exec node "$basedir/../rollup/dist/bin/rollup" "$@" +fi diff --git a/node_modules/.bin/rollup.cmd b/node_modules/.bin/rollup.cmd new file mode 100644 index 0000000..b3f110b --- /dev/null +++ b/node_modules/.bin/rollup.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %* diff --git a/node_modules/.bin/rollup.ps1 b/node_modules/.bin/rollup.ps1 new file mode 100644 index 0000000..10f657d --- /dev/null +++ b/node_modules/.bin/rollup.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } else { + & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } else { + & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/vite b/node_modules/.bin/vite new file mode 100644 index 0000000..a85d325 --- /dev/null +++ b/node_modules/.bin/vite @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@" +else + exec node "$basedir/../vite/bin/vite.js" "$@" +fi diff --git a/node_modules/.bin/vite.cmd b/node_modules/.bin/vite.cmd new file mode 100644 index 0000000..f62e966 --- /dev/null +++ b/node_modules/.bin/vite.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* diff --git a/node_modules/.bin/vite.ps1 b/node_modules/.bin/vite.ps1 new file mode 100644 index 0000000..a7759bc --- /dev/null +++ b/node_modules/.bin/vite.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..7e50def --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,549 @@ +{ + "name": "motion-canvas-github-actions", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@motion-canvas/core": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@motion-canvas/core/-/core-3.11.0.tgz", + "integrity": "sha512-/WjdoSTqTPwCgrB2pP8YXq2T3KviYHrywVxXJ5fEjQ1gajkPKYD7aVlRcY1+kaTbwqXhCARMCh+pSjT2nfhTsw==", + "dependencies": { + "@types/chroma-js": "^2.1.4", + "chroma-js": "^2.4.2" + }, + "peerDependencies": { + "vite": "^4.1.4" + } + }, + "node_modules/@motion-canvas/player": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@motion-canvas/player/-/player-3.11.0.tgz", + "integrity": "sha512-dmZJnZ3cLdP2DAbQicq/uyVO/z047NGOFBukS2T6SjdSvl1jVasZ9d1CLoIvyW4qW26DMHfxHuKO/vIBtxr1RA==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-gbiHvCuBS9aXkE3OEDfS69bscNLTYtbbx2TQf6WyOu+4eCH1AH1gPSiDGF2UzwkRFAbqKNsC5F0mY0xcaEHCbg==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/vite": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-static-copy": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.0.tgz", + "integrity": "sha512-2HpNbHfDt8SDy393AGXh9llHkc8FJMQkI8s3T5WsH3SWLMO+f5cFIyPErl4yGKU9Uh3Vaqsd4lHZYTf042fQ2A==", + "dependencies": { + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "fs-extra": "^11.1.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + } + } +} diff --git a/node_modules/@esbuild/win32-x64/README.md b/node_modules/@esbuild/win32-x64/README.md new file mode 100644 index 0000000..a99ee7c --- /dev/null +++ b/node_modules/@esbuild/win32-x64/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is the Windows 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details. diff --git a/node_modules/@esbuild/win32-x64/esbuild.exe b/node_modules/@esbuild/win32-x64/esbuild.exe new file mode 100644 index 0000000000000000000000000000000000000000..6cb3f04d6f34a7b403cd7455fce781d28b41aed0 GIT binary patch literal 9550848 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±r(JW)x!5?j(24|*K<%Z>6y|u zVE~i6ErK=pBV>^01cqF%NnXRN=$VPFRFk_kLM4k$9+@EywCih4MSGz6V#rsiO{8Lv z-Z&Vc4%{P7MB?@JGQVC*N~*D^FoH*)cwIey&Q245!XipoAbtXgm5ZM$(P@#08%ALL zyH1QpIta2T19F%eULkr%axsi*ci+5F)tTL(HKkV6r-f@cRgo*K$4osvx5&{}3(t}G zgc*_e)YyB(rj*Wdbo-+Dr^oStq~}g!)%2kAfXM)25taJBvc~b~6tAt9 z8;ONi^I>9q03#sWG*ds2`1mK-G~%aK*PP9uH_gT^K>5vq{KROGJ;#2dW|2p zw(zQI_(r1e@oQonFZEk3o4}euJ8&<13SVmC-+eA$hU`uxF}lWNnYR{NXX~F-7_-f8 zO)<3fLU?nkrg&QzS9tK7dW13jM;r|q`XpHk(HR|(u!dA>&d-rio

v3S?j@p&(A(OR7c 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%0A;#W%ipm|Et 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

*hGqN8`bO@XLRkZe~iU?bv<*WT9td*QLSYR@y8 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 z�O;KSfaI5>j3zbgpjBgj4gg2`RVQT|&8bfb=49H%1Bt7&jMXkypsDAj>fN$>hh> zaf0OVAnVRX_g#~ak}zbr0eK!Ylu#R2%lBkqK#<1OGk(W;YQpHD)_wI*EvOHEa!I&U`XoH8R*>Jpzhxy(h$<33)3lnbS!I?_eTd_hByvLZR` z*vr2JwhQDr5|&|0!=*~_6C32h|Hj=daeNMt^%Y(0!De^JHU#v`XPZSm-5W0*WL zW_f5I2V+r3t=<%gAe6W%n0oI+kn$wK+_#qnv$Pi$lD#k)?Zx#74vz`ya%&7*�}K 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

$4k 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 z zLYVq^4hg6)wLeL@=RNA?f;@(=^Idp5NH1A*Y{#n zyO-kuTqYyvK&#~XoOi}*>pEh;!PHCfyIZmi%;tk;^9zy1->nk;>6;E~7y4?Ze1-d3 z@s@fK`7E0QJO!4T?mjT3|Ejr={YLgIyoUz))`Q7Z2J8mR9xoZ@c{iPn{YSlh4YlUk zI9?OQHSZhfFLDgEbKq<&H>4NrPL(wAk+R`$M=A-{82pB|vX8cMWE%xg!(r)RXVt?t zs)s!hAu%OC(mSm(PZ+ZMmP16uz_on9!hMnIU7Fpy>klx3DkgZYMcfbLjlcW&dpZ6%efy}|Jt(gh2Ta6=QuF?VHzD+7PViVeH*v#o#?ZM2 z%Qtr)Q*@t9!3?%zK1@uRVx*woD{_H2t-&orfts2>fPfW!6xeMQc zgw;|T7E6?5=J8Ib8dJ0MsB9xUxWRnk=$A5nr!amkX3a=~k`L{n5o7+;qvJccBi8nh zPNgE2FKb*{?Ta{Ag;k?duYj0U^J*0ZJI}T5>#E&{d9|KO4*1&~)QecN!Z8YA1HuK^ zuuLi40;0YYv3yAe17tG};HV`%EP}Jl|r~|!EoiUwMQQTyGGUrIM3Ee7Lc`-`n z)|JMfKQcr(yZ}%1gTfpaqx}LwSjV#^fiP=V?3pGA-G>|G5Z`we^A4PNoLd*A8?rZc zEv1gw8q6obDVEOgn+w_-rKW@nA~ngP7E0$eU$X`tFAl||uPkJ3``#H;PTc-R`$k8} zYwMfNrurr>00X?1vU!C$K;)nFfLqPMGULfcMdohk2@y<7A?cW)mlU@Y zN=TiX;IckROlWgCO_FKBmST}6PZn}TG9GZo@mf@zgQd;ClG*$P2=zFX3d~)qP=t()~K5IO5RQyB1kw$7Cx33Tt{E{(wDbAa8 z)qb17AK`rI1LsSF+gAWH-H3KzVkd^K>;x4sZQeH=bGUxQf9^K^#`p)u?z>YyN6>Hv z?DvOhzaN_c`~8Wd$UF<4@oj239%0;AYJgeH^3Hh@3P?OPv zWpy(ohJ;Hf{=?U54w3l)-ju5HHRQ-DG6==>9(*VPo{tOxu{VOX6UpPsW~v-@HyyUr z5Atv#=_g4Rq2%VY;BqW}BT^;ursPXD+iL2+!TkgU6rKXbZgb(46rN7hX*iY+!jSalR{a zd0J1|iQciAcM%2`uYs5;9gW*E*2Uv9bQKa}VyARAo+Mh^$I1+2H$PTx}>`Te;V5IF99JV!UwF zYmT;}5z&K#+t+>_-{F+)A16%Y9~bIZrywOm;_*Q4`qli!ytXq&#r*J_FB^mZY$?m# z#*)LN==*Mznb}&G|dk)^+ zMyH+Qa_eG2T1GeA!+KL(T^qnR$GEXE>*G0Xcr5PB)Ewf6GsaQf;Qb1hgM8He3U8&B zvQNT)k>5LW_QL$R4!^~O+BI%s`K<4?>N)s!anpaL0rBmh(Fq^ebTS1W?lIe({+qky z`cAc-5$E!rNYuO|kqjZ=8(~abl9Q)(o)yDCaYKB?OLDLcV~KO9Z`2Zfh;QZ+x7)WJ zCgFA?jOtDVD7P+dHRL}~5L;3>07kd8Aw?AAYMA&_b`UkP`9+s+<(9^O-FlhfJ@Kiz60jT&ogf0#+rrsx!mtNTFN=I zwijQN+gOXjL)!v3s{E(uAj{)GEMRVZ@Bs=>P-*QU+%UWRDt5=;?QzUM6*Li+gZ78T zy2hxpghPX!zAa7!24F83qBRnyoP)7@1Y4{Y=41YcTYSzJ!4%ZT7>-1gHeW`-nQv4T zRz9`k0u_z3d+TEmK7xW-XrpnvdraMs%iwav#u41F9O{8f*fLgQ

;EoCpKX|7Y$^ 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�?NYNA?AFIa0a=pB_e>{w8LN9Tc*fMZg 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%0DaGJ3a~ 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

MG&%5BMkULy+oe6wvARDs0swR}x>c_!4q|%jw?! zV5Kp%MGT48y@xoFiQX2%JqId!=gmP#Q-7d9RGom!AE-Lo&`7s~1u;5es>r

7LFdjcH}!Dh4*vQ8&Aay zNk@mhGmEUp68l>36LrQ29uDlDoA<$JSZq?zB{SlM?af%}b*50eu`!=R(lL9KfU-gf zZr-p_UKv?`O0lx8Qp{S~*cFEvS%bh7gs!>@P9*;o+Xaz>(J#^zp?#o?jLJqE7cPP_ zr$^VRq+m1oHjpRw|8ig>8{fbsv!c~Mh)BHR9S0F-_ar>!0I;?bJBY}%X?Xm-W)MOZ z3gFBy-YVpchZ3hd#aVD2uwE_6e%D~mt@QL}!InlzXduCjXV zwzf&j7rXJxZKD&2Kkf4mZtPrLP`UhPoM1?{X5WM2u#NphBEjv-M-m8SDabR`jQ9ts z*9X*ZX|ZvL$@o7PMsI#(Z_0Z6t0Hu#F`au-12@2Q8`%!3s#=ZBH1STs93le_sk12g zalIsUa}C&Ehon{gdlZT~rO^ButlS5u6xzfP+E&jQbY`Mr8qOJ1a|=K2j6tbDuL3`U zbfR`wYoWLP(ftc%YO#Oujd%dx1Qx!@R8Li_EYTNl0w;@zx5|<^Fzu@}I)!{~!E+A* zQkc(|cT{PZkHV1UV3mFHqii%AceWq_ug{$&+rVTL-yY$qlP#9OE6apeAGsf!>q}o( zUQNK#>$7{mSLmZ+r}$GLF|tH(A9lDNwZs%YZ9R%bPk;0orSJbxvJ9X`{IG|0qw%*- z37>r)*a1wHg)&tNYZeAT!61hpJ8+}*-;IYkn|Z@G;@jYSR}jW+4^q5VS0t6rXKXH` zXD=fUd5owIFr}uWzceMId>s8uhuGr!Sr^^dav$4F090zCTH!y-6mx@#g0GJGP~qZX#Hw12&%XD`V)VF$5kIb5KhF2NmHNf7EM$Xk zEV7$NJ|=-f~0)$~5{E0!LG zN|MSigoEB9yuk*e5mN2ytz~CKNp%3$ezk%eaqJDBivw7|>*FXI!|Npj`&&!D>N4KB zq(^^@HN|7py_x(24UXG02-M@LNVstwS>7<#!>m2dxvH=9CEat*Caxkd%Ymv$ zV1hq0Hq8exFs(J!?L)!QR5S1yOb9>3YxI#{}43I z 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%0AjZB80k{J-?^6oj#Q=uwX@Q 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≶ivfIEBsodk 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

6r;@x%C&C;Evnz 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[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

@@a3!($>CKOpd#%1Af6>jcdJA+nVrXR0&dy* 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%0Au!@+dimjQ}i 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Ð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
Ys*#lj7AK;(T0qiNEW;4HVH`;N(Po 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%0Df9yk&3w`B9DT{5PjsUF;YYwm1L)S*2W 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�g1OFbIeZx`dlft+ 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

?zc^D!kAP zi62M8j6+A~o@bpgR_GiPx=yl(D54;BjK@sY$wydud$Mes8)8swt0I8k_?rm_9okO7 z>tgsw7Cd0#?J_6PP?VZn4-Tjq{In^wRDUJn6$M5`#`|kpU6097NX;hZ%LIPDSegWVql6IdCg_xIRj|V?v?@{+mNz{k?5bjac zqT*&?rU`y>*zu@`jT8YatBcS8{xeTP@#Ls&aZZ}g@E2`H8O!xM5Fk+h!0cks*q6`T z#0uDfui3zWtF3w+|3w5Ee5Ur*V1mW7g){%W&r4JtO&2rl_y2s~7vUGg< z3A}s(JWvYtkQI|WLaJ+FU{A%$99Z-l>wJZnX0fNNhT%2ltRk0XBHfKA2Y|L6OgxaF z0u=H{iA8QUqP=Rl6r8j%kTF2u2}_(Z{zISAqkI{cvEm0yUEOnWA)=m*%fv*{6srXh zq)xEt@z{X=LZ#i3=G+6%s4tl5{Ldm9WvO0^#E7jwf9mx2T&Y`XK6l$<$5#V_v_HKV ztymOqt~nr?p-QwR#q%ASfl@u~R|9x0)YN*%O@7Z<#82P(n0cDiULbKDwWwu8s#KC> zrVj3)HL{YN=;o?Rp_4gl4!t|4G0;6}>|kxs9EetN8@b8@OINcUFNPJ?8V0*$g#lYg z1|Aroh)F{ySI5A?)Ed?-N)1T!9Nyvs8qbQn$L-kgoLVVp12aDIeW^ypXkXp>v8?!( zt(R4a;@TT$)k)pG^h4btDAoKH8Wb635>%w6poR?t(==SjUg`7@?3yYwUj7=$ zL81P-nVO&xKo-;)OF`g&(FwNmDhF%U(o|KvG~V|oMSD@auPJ5LpN-KHAvNTS*Y6EZ z;gTVg9sz#;Q{vB9G1RDTlx7?xi1EnhaM-S`eo0x2zp zN{k{|!Qxyw)Bai^=tQ5k<5+aEnE1gKyd^*L;D-+vn7}#1XSUoVu098=qyiVeMEi^* zoROxjbz|<`5rqI#tzg@@h5C})4k00=W}~)Hk5xBJ>-c-zekD&X2%&rAe4S`D-{KC> z(4ZSKj>C_Oi(YgOOvZ4OFQQ-8^@lj8zVD~PoA`mHipk{erVCnwaT+P3>4V{hI|Ss3 zu!mIp(wlh+@15jLzF_CGz;LLYITh}S(;ZG;+XYvV`bjt&fex%*l;P!kTt5x4pmG;{ zp|t>Pb|!gLTH;{CzqaX&cp6#za0ItD+4|8TaoBxBG&sEyGkaVw4z8ad9PwG?7A6- zU$ChnGcrZo1(5RI&r7T?dc+9AtW`a%{-al52NEohU2-EA><{ZRC&n?HyJI}N+sqS5 zI9M*FXgWs2(d@H`BEAb1(8) zJ?p#K#7;s~9Fnrv1TtBMe1gI*4V~#XEeeCVE&$9NkFeo+y zD!OY44a>g>1V8MbWaRyd7fwSQPcA_FCd1B(oovLmz_@HFJy`Xu2yzF{#>!G9);*vN zgYRKdv_=43Fz%=Jg+2<)mRyD;iF)6QM3Gr>gCpel+gu$Y3EW3D^r{_|)U2-53)OHcVWXx$V3OnC zNwW#wlaN$%_Yy{!0y~9gf#U6a19#CWw3~o^@WfUp`)dnDfGhBmy7`~QVU?{QS5#>} z$Ko+FzVLhu14x|8n|yLYUfSF#MgtUl7xp2#Ijigd!SA~8ma!|fbR4X6-UHQEES;QF z56&$Jhm}0~iVAo4eSTb7dRmE=NBjD2(rMc%DRf@$^69w*0|M!YI34nl6{g>Md5%BN zH|OhN91{77y#u-i25DJ`xBhsSa(coV7+`WVJaQP|ev@$ghR;HL1&c z6I8$v`3U-~1oNUwvu}&q8cku=3#|oPcRO>EX5AGq@zsvcG71&g81Jnc?fF0ZnwwcJ zTv7HHtKh;YNu*6j{p7wJQbaaSq}5?_>!dE-g?J71#&5P>N*<1OdFFl=c9>UyOdU+E-q0Qw)lG&^GU;9KL5uEx}+{6 zT@(@Z7M)L=!+EnaqY3fMsU+)waE0Pv{S1ysP5bS8xXoF@*Sj8asgPs5Rj3UMa7;1Y z+XPK3M(8qZydS^Kp8R65t3HD>w>sUhi?lhJx!=Q=v5G6iRDl-Hut}v=k_NTG=SXL* z%ge=Y4|sJa$k)l?xPYrpR?XW#;o518&gyBI`?TgqTFV8eg%B?Qxegm~A1sNMRJjUx z$npib+mZ*O31i}{CgFqzv&o9=MUr^!5Z&-^AVHl}9I&q!Va`8fI5tci=H+EhU(H{m zjZkGk>&je7jNfI6VyWR0P^c{r#2nATlp9Cxb^8bk$eZ!bku~0d^;k)8h)?f2viN5x zUz(rlgp+iQi%<#N<1pyARdz9S&(ik#RRd|?>ug|h*51R=vy!_=lK6aFgjBa>AMn-H z$$HK9X&pe8Sqj6#co>rHP=+Rv)o3P-`Cp6UWf|Cd8YmS95zfW~eEi58HUwph;^w}~ z2$aXL2=nsSgcbUc>)!LD>CTD*zxj!VX3>M1hd&r8&^i|_b?aXvhX7!{~eM$M$ z5NNfRWJYs|A*PfBblTzgXdD5JlWJ6gV!;~58Ou5!J`Js_ocj1uL+ZD*BV{!eC4peB zVXYQgj#q*I_-7z>eMCi&P$6P?Z>j|a&o9EjcO30&rtmNjIoAsx6`%4kg}&bA$BB6@ zn0{xDat;Sv)gR~v(|dsmnIhnSa%zDO88c5Q!pt>ezQsjHpBErFZU!%sg11NJiu=j} z-bpUP%qy(>!R)foQvwA)~ERN^|T{kLQb_(uH;f)+;G2y;8nUDjid%Yx_SvBslN;9KVuVB zh?7&{g5bviYn+;OFmEXR`>bmhK@eD!Q{KZneDHwfFLzCdb#L3;Po29!xI0|e5ikhb zPA+WRjVYYXqKSv$g3h4-91!xQKr}Q<Tl=#&`mOnEN!_XyfEw4kfgqM-%>)gsbLWJWwQWIcyKBYu$!K`#*kw_5K2Y zbZiUonJI>+run}}CZ5>7Y@p?Z>luVSuMyLR7C&<|c&+m!s-kaNUhb@%Bj(g~gV%-z zT^J|}3XO6RLJ1T;3frtGW+s*0KkdnZ2(Et`S+hL=A!w z6ICEyI!DBY%o}A4?+)0TD-0tY@RaIyk_#Z~|g7yPSd&&}qGCM(%v ze1=5bx`NIBxPid&@zdg76vT7@;M2$Nr+?7j)joAENL_RjsT`F zkqSyHKslqA$B+TQ5Iil`{S^O-!HF4H2~EbBy8h(=DC#7F!NsZh47og!pB&1bOB(un zHRa`u+`$W$3d8Of^Vw(OIDI8-?}_^cZK7n;nwcmgSgYzL%apfimZe*`AFC*>l&a8H z^S|5$0;Zv(fS%VBuhzpNUKmgO$Y=JqYo#wE`0757k-X4JNaAo#QV=HC~Y@WdfVy-rx%EDX|6TR1rGIZ-haGwb^Enr#0dW9 zQ|ZZZ7|Mh7)W6uYTpZ{{f_RPII6+6?Jn8kNG8u#LOJCR2$&CJY#0qy_qH->VNawXu z{xuy?f>fmGhq0PULg$l;7od#jZBTMr?=9;AvfO~?ogiqs=A>HOF`qms4;E}fr`KfY zGh?-mFuJ=w0%Q@s0;AP0wp$p+~@!WJm8g1`wxI-uR zW*FP+a28wASZ@pkj2=nE_1F7{tFq!N?D!GUom>t+VCTfQjX%S@Q7SpTk(w`XE$K4B zm8YbA8x^q&;|dEJQ6l34$h!Vic%Dvaf>1i@xIq5o!Tyis3lhXBoiw=n71_|hA32nt zQMwRRr%wmO5m^cq_SRi5!yncw^!LnXmTrO z-P5ENYpDW-d}Dq+J4Ow2D+9+TZ$d^`eQP#V9YlR3iJs8sNWX7$O+X7#eZ7R|&;y`< zmX-Y%Phs~Z+nCEWq2S<2YNvxPdzED@_~6^kjoLt6os*TNw2SsP7XoxBd1O@s5_YYG zd=7MuUui^;L&%%hO&F<#UE1^abg;mmyJIC*j);o*s^-!Le7+wRLxwG3vI|pGqr0=8 z>S+keckko9V-Z6OMv%OTHJX9s($@n`f~U4ao=>hbhNg&|2eWM<+3o)T;E3IkKuEn3 zpW1-3*Njs>k%o^&Q>_S&Y##up{}o-o=Ek^E-4zl6q%?w5ML=6UEuC8bkU@}2w(kG1 zi+^B9q^zS=DrcZDTxPwDH(7u4b2WdXrTpa4eQXcw{IH6wRHbDptae5xZ1wvWAlLV- z*=sK@W=A3rh>!e1?>p6nvlMz!(WiEOr6=Rs+=5>piCkS#o(ExL*Jpp4FjJ!up4f)3}tAnXrPsgZ`}+n(#1avDw#@!5YLv7k@6u zg59rM$`9IK!4wAHtv9Zyr$exGOmlIbp|7SpE)PYVenZt2u|nc!{)1Rb!c!S6!o5RL z`Snw4e9oz&nQa#vm1QJk8wgyvHjOE<=AN1zxLZ(DuyDHaVV-Y4Q`Gv3$rgUlYD(+p zyOb86j=Zou+0N_V3pw+#^4E68auT+sj2n8NsVCvW$-ll%zn9rv3{V0_4rS?)-}aDMf>$7{ddKu3>z4LUuXD1hMS1j5@CHk4I>f18$C{vh4+ znxmQMR_R%tzyLKs%D+}`(2r=!_g%`7=6eOf_;p)h!F>Da-9!D0ME zUWB%Zu~)0p;B_M?^Qavdv1d!8PqKLqn`J=NR(s|h)d9jdb;Ktu zDqIhwILK~=GsA^`FFP=)hMSL=aUn*|U$v|_!S-8|TM`mxC1-u=Frv8{<@B{4?|6I$ zu8PTr1*V+JcRU-;vsdu7R82iqDm|+q&9Z3ZiIUTk!y@nm<@q`RrPSdetILYQ!gxO@ z4F z$N*g;?eYh?gCd-NBf#QtL@)EA4wX*6Si$!tw_{YUvHHp#4+Q+88;4QtSy$HG2I9Wk zHEpT$FA?3#=UC@!2WS~Mh+QAa2y%XNEp|8ThGMIOU!kX8l$~U%m@^6QayRUE^syI= z2_7r;W)TNc$==Mc(Z7U?JniJERTT67p*g)Klq)~EZjNJLPa8D(E7Kk-x~bJdO(7FJ z*2TwdF^Ni+(oq;u$_AEo(Y<@+&kn&Zv9-dWHCDFAg1u)P7R}Yi-OMsNu7!y%<0(}d z(L|KGdK&sCBm(VZ=?ZtDBrQ2870oZl5-iSAp@$L0`0Ahb?Wav1bnIul1w}&<2r>`f zN3oKZy9dkqR^%ySkLd^C^AEajQuG7SVtJi2u=l<*Pr?41wR<%|n7Z|j;%5sUu4&;I z%b7-+EFisW9y1Qj4$^^MuMRdFS4ABh5LoJ;%~Ax27>;;RW=7PFA2lYIsnCIP<08<$ zL?5i%VCrrTgZH8a+JwZ|BU@9-P_PtdiJN-a>qIt<+_ZNgvHJOL5S(32Q)Kj;_X{?w zrb(kWB~Nq=pi@G{$JA-h`sFS7@JuvyM|OTYHUw?svJ&%@Xr;-~5&pDnJo4cPKsm$N zg={jPBSuBMxV}yppsuiu9UAf=4-#I(R$mEi*xK@XJTe z-lc-9q80b!_=@oZB0;8m$zTw{2?SNI!!1#-Mg=VDRz`vH^RJD<`jqsZl{&QghhGrI z)Ik=B31z*1ZH^D<8nC_QzF#6|onY9+e_1<2J2+P8leTT-;o z+fXkyuGjA`aKo_g4_!x8H(kTmMr*Z?)TEdJvqYMdzTQEXIHgZ&REU#~W88ZLpqxSGKgw6?sz~-n za2KolL6C~%RHEB!S11dP+T8sr$Gq+b=)ZR*^ldZK2PFyOzeK{QVrS^wkHeb5kz;T; z-PNU*TJ|Khyfi8D@ z1a_%3zkz-7BkxFGk>Ut;!o$@erTRk)JA`t|V4#M}ahr_twY-&}!-diw9f*m+r5})2^aBPO0(D zM$)0vg8}72di38xwP;dH)x7B=PB70TKO{D85*GM}Lt$+TI|FK@CVY1-i$%yAubk(7 zQn~@eCAPa^LexeR4#!J-C`-haOD|SbQpb~oWgtqTxc*7`BR{1q_0j(87gI?4yuKT0 zn_ZxIVr%~wR=u9dW1T+e{!pwm+qztiOlenH^a~r4R;U6=) zPZ{}gfRk(eZ!(Z)WgI6{Zq9N-@kC@GXEazdvZFNjz+hYvxU){`?Z#^=zIW`7 zNHa0HL*WK-v1auj^fLNRWpa_8Mx#H%K?Dy-v@V*M!LTlIw5Ob+lMlMfJd8pa))ZVI zZiW_QvsZcBkWP!NMIC7}1W*G`_N-Z_2NxxmoSfJc1;c;lsDBgz7ruoctBVURo>xvN ztRxs^)nqn_bR|O#iKA#<#cp1Fidx7yLksB=zg4y(`GsqQF#y-}3r)^cnw3JK@jB@A z*ZI_ivRsvKk-FOdnc%Q{NGHXu-6ocnh? z`}?&$g&L(~=&4IbA&VP|Zkcu_Y$ys6lqNQUeA}gigGibl=4~N_p94_WeTB_Ktp^PP zt69bp+DNW9l&w-!=Ig>qWWm?@EF4UH%&X;!sPM>xI9};P%eJGeyg#D$*Is)CyJCxem6w$Euej&qziy}Xhe0oQzQi2Oa{fct- zUS7TAY+2YlTs|!<^7Vj=k;QDgw?I&hHXNaqCZR%Mws7hh>pEDhU^gVI4w$=qG00RV zUR8|1jDIlL<{)J){*#G9SMx{l>G5p+(iDB1U$DzhEo9K_qxV5`j`042ty~dfI-nyz zWJ9-F=Bs#$)11idHL-Pkzi9OhQ!aJbJ%Yvv<9141_&3jr=CW0pOogv9t3BUDrIYkr zqV>a$OY1LU8e}JrO-a1m@T&K;dt0=-aQRW?edVGopXBq<&+m3z9|?!$?5=rz7Tpe# zGQoa*`l9%q1Cg&VyTArw^jT|XBK6|+A7&k;ZaJXz5hi+lfJGE+P$ZjLbp==2V4g7= zA2Q6ykA2oNlua#UgO<{LYLCmMe+S-so7<6PSNj&1K_xvG6aPT7)ty-|>cw{cu$NM6 z{M=fPtH@|+9F3A3koCtS_X5;&mm$LgLPy4D`-#p?gReIw|J%?^u3+TT7S2^d{ zd*r_C#dW`9u9QjCc_WGYI1kW^7BDeW(BzKPbu-^w+p2d@RcU8wJeKH|Gfrpy)AHNh zFXiLVneO(uyKpbA%TWfoQR}FxlLfrQ@0s)+-HC?Hj-_YwBB+_}8pU*iuDONOm7KFM zeMQt1Y=Q5=ybG!Ry6vJ_q zzz(k!#66^1ny}qI!S=YG)K4G;dT;j${u;A9nUGJ~m^}Hk%8RQ=6B>kF0ZWG?!J) zUJed8ggHF^#A__F+=7CAYRZ@)0YN6mU1ZQ`=ztTC2!KMx*k%AXOs* zst3gn&P<=NSKG=TCG_S@RprbO(z}|I00{v+4Rqp$*t2Jj6e2&AuU6mDPR8!H4I4pR;Q7@I? z#yZ8Mo2cI*8!C9_CuM(K>`}sreTP6fkQP>t46_<(@cbN}U?B^#>AwI2D)jmkv8^vt zztQy@Qn|p7GTt`)J3RSOyPCbw>XoD>~e8^e44mFd0oK47`j@Kr# z4zMAcU#@#5uawg}Vr9kq!q9V#?C6aQ!jJ7fB1tI`8eGWRkkZ5V zNvy&29+$h{sNpUiz@vO6Tw!U$ClorgA0+c~G|Q)y)eyc4W+cE~!R<_8Yf030v4yzX zVoh@d3x~DcHpWx8EDSWw6y|^&nybRcWlT-8uY~Hw;^z=X9koh4mm6(AiNvK_l6vHO>TtUOKBT6;aGBuWhI?d;Az?N3_=@mNtnpZFeQSD$; z7^bYvJuf|l!98$6C!p~&8cNuTy?n4-!;EQcU%BRCWf{>cA=giPVSdd?@fa)_s~?b0 zDNhzKaQ@3*?51lZ;s_)$&=m3a#{NZ5snnXK@<=6p!L*!R51^h zW3p14?f5I`FvZE^94dFa4MHVmO%!s$*e@rvPicBWDkb6B&buKY}PJ*p2EdcvD;##?a%Dh%4uunE#%wQ^0MV+ zhV$)eLL*mydlQ9uFgaw#2VWEKh~U_5wdvLP$H99o5ci0acfjnb=md{@0tM(Sa-~ zjOj{~<_|PPkJ&2y6eg)r4__ESbC7AQ&Sqcfec(Kv0*R*|)${2$!0!hk5$~lbo>5^gpOFENB5QP$W=jv2iCg9vLfnX7ct8 zm;Hy0oV(Bm_0Az@K3tIe0!(MK(Asb<)uau97|P|sU76i!TywI7sia)qgeN7rW5nK4 z$a0t*FA3h`!jmK014Lw1TPhAWXuuxG5dnrY&oLLPX(l_z3_5({_^d zsx!0xp-aFE$DTV_wIE+v2+g4T zWK{dhq77N<$#V^D6Bc)GW(}kAI7pVDEU64m44LDeLr@WI={j7SRW?!fy{CC>hFX8yaqK0eQr~TF$=}bl+8ZfBta|-K@3s_ z0?e7qS8YTFUudH9BNt1cNke|JvJzT&f%9gvt3qIDeDOE0rQSFtN-Uzw)Bq-=o|U;A zA&Hm1Epy~EU7^-{+-O#Nx4HQ!Y`RzToND+MF zB2#d_qPqf1DAuOAddBy=+%Tp0Ae>btM961{82T+Amc)SEa5a?u;vhkI@MCLD5F&9_ zQ^6})e|N2j_C^xC_6D#Dw`)WG{T&*a7#Y#$SFpg;G$=w;Is}BZGSnRjCYksuC;V*@ zi+6_+G>6>yQM~Y{-$0}Az}=UvR`#XEBI(@~4+Tsi1%fMI4XAc{q+%=RVlYi5yY5xV zKHy)V5jLAroo@86e)c_{j{y^_RhV`$nQ`M|#H~l#%s3P!{Z5Jd+w&qZ;TTIN&h~km zzTc`?%H^G;g;8@z5mqE{T)@zVmB2Cx6=++0TT(??!Cdj{6~LS~4`$yLpkdK2AfxL{vhY1i zAcyu?MFdPHzU__W{%J4vLOI+B3ek-A`e&WKYcV0Mw zqdd_4c&&x26}wbBtJI1d&#G0vNP)bHQdkV8SF@97O8&L4_{+>@n$LOBy|D>wWp{l~ z@c`ecDV3~1OEWkS6oN?H>BmJELNhXBOlbqcb;Zmt(l!h?iKRmFN6+lqPOcV=9>jRh zPq3?wtW?U~R#iq@avbHZ*gEXH5xplwkY$3Z`3Gfo&AlmR_&>PIIpydfE z@H!mASKOS=NY9?t$M`nmibS|FC-j9+KO;A81yZPZ?;%~c@&KtZ-89WOx{BfdScayv zaz$6!zYG~4ivE!zK)P8LiL+1B?-YO!LoM^_Etw5OiaxIdjkYB3iGQEZvH$)9ye`im<@x>XV z`*yO91xlrVe-e>8)2l5ileEEL@W0u|c}^la&Lb$P3ye6hZ-IDtX^L|(jkf^J0|M)Y zEgO+(D^WylPV-g`Pda5H!Ueb}%11yRmP_O|D?&htOsQIx?Cp{-@|qViod{(p`tT0|UfLX+BRYmj zMvq1D5t18mrEN8v-t3dqeUyQ%fPx139x1+h7`44GLEp5 zp<#4%g+VpkTB;3%_1d2{+e8cz{%_dcNj6UV2t+e62 z!R^1_pib3yB!O!~$LK{e=Rwx&Cy>mS;PH2lwq{&nD;{E_8V}{_sjgkzNLZm#eZs5; zS6rfzsiIL83hT5Dmudu5MoWJGHBC*vE4eSG80Tt**^bkv5Cj&Wtclxpdh5HOYxOEM z6TQR58wkBb-5CBpxJe|~jiOzFkbrF-kXc@PPzFm1 zp3>{rQH~cf8EwTsQpoYonh4#-pAEJpn=h>BAWU4@)T=NlB70D>6;7~s9_!kiEg6Vw zdOCTRF&Ir<@sdmJ9C9jfI5d;$H?We8lpUS(7Nei|+EH&PV598cPtrOCdFjPB9YFe6 z888l~-hAdCCGVCB&~(0(>nj?-*mX<&3^+t84lMG$g|f#Rhx8(bJSdd^pFo60jE^#I zw{Q=xF_+=RV7#1i?03;^_@bBe^Ds4mA?N-eS;3Mqf8`#<;V}#k4iMe+B6H0)^MvM) zxeNy#P*@a75}Ljb)<0{!lE`6Kq{}C7{#Zyj^*eT+wfAuXOJ0szTd4*{J(7Z?1)E*k z9!A9e=Fl;B+93ZJ>vvImCt_{zD3~q)NR4e!4#U>y>|^<#%~%TFTn?%`PPfgMJNY;g zV+#ycP(68h&ovvv;dmilH54z=l{bh&FT=SZJ--4p4<2jDbDr~0Ldn1PY?jv0_F1GY z%1#xyJDt|?JhbgFR2G{;!gbTo6^cj3(`z^6eSZcsUSe4w%Uv*xH=0=lJ)NIG;j+P3 zfG4`_gt36VqUWrV%wWgFOxqDt%l?jSMq|$K816}O2pj954fEdnR{P^eeQ{XSkdrp! zqm6AA20%b|=>r6*iGnu6wKvxBa)Wu%OFG5U)t+Y-riVMv{n)(3UQTIhwi9-3uH`5E z<97UDbYe+7#^E1RfF;`>n28=#P-`np{h^T(+{#birWZPCzytCZ0Zw4Vve3Ah3S${x zBt$GB#;PFPuBcKEQdUmwvCSF^aJCOtwSktI{d4^z=(^#wY#&{b+M@uzZWsXr4b7RX%{Ze?7tp8C;bQZJUG?CiX{x;694x# zfCZ3jDG$ulx7+Iqd-{}+OVr2?!0`~j;Q_&C*2J*~*n=~1zTYfCsi7+rfj$OaL)>c$ zuj~~}n7P`cl3*k(St`PlAX+U%%I!LE)iJ%$>$Zn7W&J9TFuKSa4Xlf}o3i7TH2+CCGpq>jCLB68z(armaM@nMURl$;AW(#GUE<-P=YdM#9VZ>*!ILGC4B=-ZydxRmK6)BLVZv zGTgAL=pwoe$GKY-Jw0MlN<@zVur`PAboJ0iv==m>^s=T5q%W$ZX6<0xy6|~cA@5E; zGFlmNI2J3FAj3cjk9}XAhhnUa{&nc4!6UYuWJ7L^GePyQ?9A0cMRVQvR?3LHmfj}R zwZo#*o@-CpNSr75F1w>tWAbMh3tL8Y)lpF*mH)7r@7MrE`G}q2^9aE{6Niv$qQJcp zC!cA>U8y8O(M>;)mVkTYDI}StJzBck`7d!7x5<%XbxQzJo}3|_%pIX==6%4{(S&Pm zJ6F$L$gDN=+Z9xg$XHf%VFy^n7n*)HCU3=%%B6SEB6d#TqF5sL`vv3%Za!U>x>Wh* z<8RO;S9BUBfpyeJKHKVVXKKLiUn28qoyD6({FR8>d|rEv9j6pC8o^D~UciayZLZQ0 z8rduDOmcatvi4qTFo|i;Zb_oZjC<7)7Wabt;86j(xWbBN)g}iP4X_c{6j-7wV)EiY ze^>S0YBiLcYaAYfE4?N-w+aS2&WR5s9KjL#lR7YNmDtFfPlvyJ0J=h%Ehfo7-{!nx zPX7v4A<=r=%;?5XRsslMDM@LH7T-a3rVy4PaFg+eiY^Qehe#wF# zWcD$WOIFAJ-&A~j*{fKQ8Xs-$^?%yKg`<;11>cr^>-7bCr8zoBqAhAm@78z9y#<7hIdlA=j?VxP%Ak%EXfEc*S}?f#5!?mqLD zucfFz+~qfCz#TfUural3Bd|B{i7B7uGgB&|*{8Mn6W}D^YCCx)&#=U`gtP}{8^|OU zKal!)mFQQ!Xuf6pHv_^s{9dJ#*6C7m$i#XkP7{=gpRkM9xCn(i3kMXy{F z&aSBtcTPPzCQqkp@*(&04{7?&@JCOIN@i$Oq`FLw+`$9(Bb%n1HN|>+7y;I_+S$nK z!8b$7rb`F3QdC%`pEI{FkbzH28mitUrFvbv(t203=E8a?%sT)Q_NR&@_|=jw>u`i= zP3o1)RO^9E;3&%~Uu5jg_{6^+93yn#2CScXkA)2SH<@1|azxwoG!}-hZA{PK z&qDFAtL>n%`WXZb%a?zH^wlzBVmeY!nMAu`RWpdgd!k;1J+RbX0E+OT z!r?xh(+z89=hOXRWfx#@`~Ni#VyO9K@=rp}Hur%h+Mhwg#7Gvnn|3ky0MH;YWreh! z)?&QMO!Req(XsqVw}OA5G*nglyNCBWEck=sV$jrXu%Hu?p`VB%SG33T++GMP7J3gb z>)H+3HUa3h?fiYuolGRvbZD|%WTHBbG7YPuQo&#RarxBscm5v2?b2qAi>r@dz1ffR9LC1=M`@C}up(!huosqsd zWUc$6L$I{-OF-zgg5TQaIZVBmV+dq%Ps{8ce`w`>55vQL^K&XQ+o0=N-Mv{-##b^; z+njKbB9N0fy(K$&n($UPQA3Siibp} z&H zuDdcjteM40bX7(i3vt64rhcfM_i9WoX=>Rx-iBR2|LnjB96}E=#q3?|kG%4xl5BX^ zg#UvRr-Y#Y+XjqShZW~nXv+144b*hUwzCm)=%^tzOvqOwXAk}-`u%-$N0^24yl|08}27rDO1zq_J zX2b$x#)|UJvJp-InKm_-PbgbYg6afY)1E0lw23gFP4|c_$1LQcMS9g~f{wEXX8dCw zd<+XYDX%J?=xHeK8`?m}$8@-4t{E`Z*T(CjOIL=vp(wN(D*x1BEUUgnmn(o8cn5IKay>|gjgyp+)sp_*T22CfM zDX-dUg?tXWCb+U(c9fBu6Nl5Ey_@GDdvOdLB${@Qw3AwLi#BNEgW;B2A5~AC@1PKw zDx^7a#&%u_PNK-+aq_qsCpLdCAr}(*06*(>pSEp2G;WR&PCuEpC0SLyn1%W-vlP`0 zw4vi9dVp0he#2K-cTkngeXzlsED{l81?k+S0@a1CZgN5EG^)uz<@Y#A4xfx+N1kzm z+-ZH(Sj=P^^dlNf*JhuBwP@fdUG`=KAt`m!*!WJS#xE7|Dtc+4C9;`GZLG z_SC=E71IH&gB_< z;>w5EpkKUcqYyVn2X0`(Sx)E1^C}U+6`&J(egH7KO7*I{iATGG^gk#4pY~7)Qv=2B8 zO0I4TxdoU{g_H&DOEMJ;{i9rq*+>}oiSM&H@ciW;&@S40VlFd*L_t0WrPu6y=FRM! zibfV`E}?BY16pEf{R50R&qKJadyLOD5v^MPUOVAB{Skc03^uM0Wo zxf8%;{-iWb?6Z8idOd|tiwJr`av!b!E@=FNIB1Pc{GlXr-QBMppG<^KTz#7n6^_wB zf9q(%w@lH-dEtq!!d1w$Wun=ze3`olHCsx?E?Z+PyeufOd>Y*-xH^|cz9x2!pt9Bo z=Rl3GYxA?NO`#uGa+v)s@-K6-g^du00H*<~hk780S*ZT1s#OQ@Y4|e8%o?4I%7qb+ zNYdVi*?q_Itt4T@VDLFGU-XsWadivVNvYL(vxHP~f-Red?y~$1QrEh9XiddcbqHLrcFICg4-OJx)D zgqmc!V6H>eV9v|^)h#EGn3d^0&k#CsJ}N`=b+{*j;-5zoUdYY*{;3{Txc#a!gP@n9 zred3bbG3^Nn{NYS4E-GX(x|;;y;bWLdM7@?DvFNe_w}ig070d`Q0|l*-w=Jqx-q;bx1n=AB`9uaF!CJGvpZU9Fgd^rq#HVTmi<8r zPSnj)0-Dq4p*V&($0ojjWPihtxCTnr@)NiWp4g)q)<bAS6np9RIbq--!Kclc3ZQhBqWk5nXzZX?)ED~3Bl~}+Qv{QRY)MoTUE~MNe2^wRHkdT-H3vaO>H% z)hM#N*XP|@H!=$x42Fy7F{;}>7sP1w(E{IDRD=AI6@Hq{5BtFCD+)VD8@T=%+)J)+E!fIil`mg=@cR^6?8nZd~yz3m)~X#sc?2( z{Zss3BCWW!wXV|M`g8wntItU_Z4c!$)Lv%I`fq77Z?yao&aC}gX<(RquTtU;fh@aO zap4a|WqUP?b-upe_j2l=)^vUaD@7M`l6rB4)bH1JvxIhSje*+LNUQ?CJ)9GX8(KJ} z`p%~yXobs7P$r!k=0zcxz^^4;tTJp|^TM+yPG_P!s>OP2pP-{@F3*Mw^Br7jkcaOF zP5fqWv0)+s)Y`&zsU9}G59Uah=Ene;EjBfvq7SO}eBnGQABQ;Op*lp>fZw!7TZ<&x zY8rAp-3Ys%ADkkxMt=FBlly+UF-EQBPNNX6^QBy>YXkypbUyrneG3MfEAWuao~Mjx zdoLDP+uy-d^_ePn^z=*IXM9ew?R$bsszb-*%PaWL`t@>@BAZGq&w{(}Eb)IfS-1vn zICZbhqj*^)GMKRkm~GR&E$I=3x962~Lno)*cV%uCG|#H4KEb1;wm@Pmox(}YoMWLY zq&Bk>2a+s|N^ zZ0j!h)IT7<$eT{5e&i|(DLs8U7B`co9~7kThv;4@&_5^m`8Pm>R9LG)<6@{rFbn*~ zI8*7L`^b5ftmxvDac&#OznNPZd%QV@TiPLMssy@V^97VhG8t@6NDe5p1!G zeTirkx8p}q->r4Oq6LdLTaq5yC1y)E{t{<){{VqZ`(Q@M%Yb8GyyUGAY{_mWC#UST zdbPr8v;gQRyVrBZ{r=;?BOqU7wJ0lAFkcQsb_Uq$HW11|XOj|tlQB?kzwnwVB5n!8 zG9ukYAz`tj)-#4)*H@59Y`wzqIZ<|*rS+>HYi$gWJ7au9=N4!w=n+g7cGAG7I1Yp< zocWayA3q7XSF^bi85hVo_ypAn{@qL6y*vA4A2dY-+gt5I@5mwOw3Xdp6;4vQa8R!~ z-e}0tt?89%dC5$gGAOu^mt?MDTeqU?9xuV;*Y?wUVIgEQ-yCs%+s_Ay*Eb3LebtK^ zgqeDih`K=vT}{HJxgLgWwgQAHSp3a#O!#iwnb}M>=BldVY1zk%WEhn2OK&`J>*>O? zTEbFp3|Q55Y7zio#yq;FXLBG60QA zl=&r4d`K#kntkJ#kLN{PQ&Dp@Q-B|dL>%!!{*c3>U7X?hAc}3h+Arp5A7#6$CoZ<0 z8@0Q;JvW01yV^1~g2{+GectC;r}K1)Y;1>8JqUPZN!ZOr;JkBWwMXYu01kfTT~mr2 zR+44Y1g$QA%6QWTYTH@(6d+b%v-tQK6c>@PPBNK0U?oMr(3n`Eoy|o){1lBcd2yfU zUJQmd?&v~ni7mntLH$ke+7m($M7Ouw8tRnOAE96UO~DUuHu+>YK=n{{&5!Hdm06j})HrC*M=Zzy_{ldd|h^ScB1QC8d(k z-h$4YoyWJ6Zh2X5%qO0^F_LiP;h-s=s)H~Kw?yWJH+32qzaBpdT*&Cwj(@|4e3B%s zyp6Zxp1WfE{YJXZ%Xj3c>r39Q?y!v0H@4n(dFYtL3;Rc5YXnS`vI&+S_ccEfi_p0O z6hEP}(__ecEW<%GS8hIxSHvDLOMdm*3dG58!lTZUbp0FWmR1z_8b3>2(2rn@YKkh# z+IF%f2lfZ=Q+QcJ$M7TIx)~1RAc)9Pv9E9X<3$!EoM1kJgu#_va~D&U19Np51C>cT z@Tmez3jjtZa9Q8&YGg$YG!EZkX9syCPzSHP5?iRX#VN#Hj1C$$WT%sGXS7@;aW z*sBSNFw;A?8Y>jj?1ZcJvsu4|YR06#@@NV&JRek~Z8*h^t%ecAx3Et0>e5N9M%Kx- zrm1=pgA07eLO5C?X#4=sBnRo?FUZeh50xK8#v8EFB9BCl>>2kseY&xKcwhQ6o8MRg z8KM2$l*$?kNhXuWV*+bZL7d%W%UF_^qLC$cyGD4~NN_1wKc_n(e9>@g*3{0R=(X#Q z!ofHL!7&(-Yx5=nzlq~i4V!3#wEiw6Kw`o=QTEeyC34%Q49GVC^WsZ}n1asy$t^ZX z0sj)AgmLLg9D;S_m2CK2l&Gd<%2%#42axyI>6G1k@LZ#1e^`7*O>7G`^+?f)k35qd^ci1JcvIf$$fs$9~ z`WU22_V>EitdAv7K4{pVq0{Sfz&qWI+Z;$PVN%#+8dTTew5!C%#H^L?07h&Is_oJ? z6_7`FLxw;pVG!CsH0UL-RPxp({f*iApQOHdRo|A(AEZwTYm1S3iF8=%{)2@U{cXrfh10pxc*zY!MDG=TqA$Quuf^wGV ze%dy8rEt<0whLCboH3lu@R0sh~-lNYdnzoU2A4$7>Vwe4%uVQA~Y@`3kj8|GUZ=sgR9V6t=Qnti<>j zg5(w;R7b_kqlJ6w9&D#R<6ijGl3}z`BfAyhuQbyE@uPK-h?Ek%`X%`@Qozk?e^u;% z=i36P;90h5fOUJcy>z{g`Q8#<9J}4viC9K#W$2FcaBi|Nh_Dh8-dz14L$d9nWDbte=mBEt+eXP`mY(3wiZ^07n= zhOAXszoe`HJH9us`k<=zs|f5J=E^?yy(0|2cs2;LRk-x#at!Mq0@> z3vAm)UZk$7AOET-8N+qu%51sIa4MEOCaEORyec*{;Em-fJSf{B@dwrR{z;9ax&1)# zAA&0VvEb*fATTc$y-67*%haV8PCXocPlL8;+i2z<`8t67>+0zT|2w7d}a#2F{Tz{=CV*d7(i z$>a$F#+;_1*|kb^dXImT6pIAqZ3L_p;n+AC7t$7M96$;8edm;pe`B_;rj+n3DvmfX z!F)4sc%5;!&3!op=h7U&+3zo0RUkh~4JlW& zr2iMW9zi^2P@XB?>d$mKJpz(?N)MT{DLq`Vr&-UusR)warQFP;W-0mdLlk@hNVKnv z3A>|2;IE9-U=SniCr!99I(1enRM)=U{7~KV%P`onK^7kaB_|#X%N>R6r`vU|wcw8& ztRNx92v>DXvYrD6)^QHIA4Www%@yKsE0I7lQyuWqGMljq7zqECx2nWfJcfGMGAEkE zx38S-DwqvpF|1y*pQ9i?T;Gh2Ge8O0PK!1aFx}2?dREZpXP;M>%1MkMeD;?$qJern z{^Dv0egZNeUS^ZCBz?)d4aRDo%<|0CQAz6)b1@hoFC={ zedz{`awU^QLcHG^iyJxxemU8}ZU^_;X2<0#?yJWNffOFPfOPRN^?2th-HV-DAbQy~ z1k_e%1!VBJZVn;%wu_4B)#}-w>@D#Q2Wp4RI|Y@5P2)^Jr#Mrm5?^6^rwt4Hit)5%G0ayZhoeWEa9t|F#?aAMMh;>n7OCh#tmffEa6qtMX_EyTG zh`ja<7l^km{`qsH|MUjx3^P6G#I=F#LyJiLUU^va*$++YoeyG47L;>ptlN8%#sd$Y zpZATzMXBM}{2pd#DDg<6|Iq04eBd~RIfTO0YZ-=`D3PETCUdcIW?*i4?=r@akmW{B zX8ZVN9@JuhqfRGt1t3avY?KoxspMyS&>#-nYqBE}Ij02*>+zEr32t^`Pf0-vfyP zOsuatoQPuMuB!xO6ft~++!%Q2q}ad&W07YcsiNFbuKb>=n~*`iD#3c3RrKQ0**bTh z{839U=p5*CKqoM9r~H<+`>by#zzp|JHA?NQ!m)<<(_}NDAWikZe=jO-I-H%L=i zo5e5DPYVia%gim%C&M;q`@+0vdV&eiS}l=Y08F$b8~)rMfe+Gy%nZ73X2E_^HZ?|d z6qkXNX~L;(Rj9Gt{IW8qfoDRKr5zX)r|lFH>_M|`Zu8@6{2nx@PV2`L9rRu5UG z@0DcdC#yOQ2Q!PT{oc7dUK zpB7H{HXQ8<_0K*!7LlYtJRjBoT0o`0>T0U|=->R6j1_OB%@b}LnWNCIFEkY-NO^Es zYi8bCy7S$(YO=iMQXM_r2!`jOi*|-(2kI)@FiH9v+~*WmSJ@Yc#rJ)`#~*Cz?%B<( zM{76ijOF`xq6{j;0_PLtKM_&Be8lc#7u`A6K6~DL9t6PQ>0DWK%TN-sB`FhyRy7<5 z8vw+W|9n)mh=9FJ?qiA!o|^YEf7{DPBx@Mdce9%zaMP-S>En~7qQd0C%mz>La|dN; z!*U~(g_WmGJE4yZ1a&hVzl)K{P}*||Z*t;pErMIkuSjus{UD2R{NpHM=(#;` zr`cTv{*Nu$=x?T^=dS^^XP{W_0wVxDKBh^^3v!2?CMakq+x7F?@EK*w+VeX#Ay0C>M(V=SX`$+@*#DI~gWntYD<=EkFApqK<6DU zDH%;(zEY_eKK{Re1}+_U>F8syO~sh(TZ|uFrF1H0`6}3EZv>C>`{R^H+|;xxr=!>{ zd|XAJcL|N1(ZjF3li1&;)>o8Jr`1(rE|vNI_>BLGn%et(rajFK7Az|EBTVn=kdNcV z<}_Merl}cKhBZBk(~qu-#0MvZ22k3r=eKH;kQ^iL2`o%9dFZzO>@hgW4*P2#hoD`9 zP1tDr@UiB>9fmot49VB{lyye1742xn?=MRV5=xXU_0=_E*yp!>g;UZYXH?lOfh45%WEQ7t0(V!hC_Pyij zc6zlDiMaZLs8Y2K+qC3GQ^^0rr-7ydzN2Xb?C^}7h*9M!=%r~B1D!#t2NwLsw9CPS z9VDh%taa|-DTu%FL%@aMrH*xvqk^BkeAu}_+KU0kk1by3WuCK;R-<%ZQ9Z2XdD>6U zN>g7UForrixM*&5h0rdGbX>B0)8$xlF|fqK%*7gnHD_s1ojq&GeSN)D7yS_AN1@f- znbVYRDP=nQ471I|;Md5soovCl32oom$Ol3ixSRh(Xhh9spbG~%S#AkkR}{KS3Ce@RTEVQ!q21I zlu}R}i=ZCUeT#;o3!`+(9+?iQ3)i{AV&^OrP6_W5f2^BB>WCD5nvFjcs%084%OEY! z;Q!HT960fNdxT93$chxW^;Yt)&NUcB8wBtCrOm*IklxO?gW#J{Xyzq3pO-#(9k{27 zOs@(P{T}-F8~sEfTvDD|CL084DND9x+qpEBj_rz_SpzaI$Tjn0H9$|Lr`oGHECQ{F z@SW~pVnxAPX&jR_cun8VI!=#DXAxOa{o45=du%{$gdtTQi5L7FJ$Q8lP1iI$7b+n7 znYMqu{W@Zwf~>ZWBzX$cKf7kI&*e@v@bB7bkwR?aBsEg_oPZs^RROb4Zxa%yyB`6s zCP<;7Yf!ZC@NPb*u6HqulG#oqs$TMHzv8kT$Qn8}C>Ul2f=II>Ds^hBGCczTz|XNf zYT4m;)+!M&Bgk^*CXphHCx?CZ!kJ&y41lpWGuDkYCF_Vwp5|P!1>TpRPDMAW{?k4P$-o?KSF^`Cr1XN zG8A+LuzmRR>&zQCt`g3a?lq9w%!X_ie>%$Q21b5mI>z4w%|n2r<(fttCG8cB?3-j> z%E~ZpT^|Pz@}D(3do+f!WxK zh*%Z+b;k=^x~1+7JerwO&_d1@q2@v@u<8DFm#(&4RG|P;uyX3OqcMGNP`ommy^DA- ziRG6nvE(;jyvT93b4msb0Bee0-WObw#`D#YN%NIU%cf=p)qU`nzo?#|kqhNjjVvJN z*E;RO+-h3vlK@B~N^`F^%R|189s1;_sH7aYhuqMoUv?tDwG(htY8~)ffLWN^fI^+( zrDx+DYji zSQ_`HCeZC9xYjl&R71FAlS*}`K?vy`>(4>Umvv7HSigEJB_JS<#20~*ayN0H^~NY1 z+uEC+$K+99ie>7bYQ}TRloKO+zQ)xa^C$lJrdl?S$n>5`s!AVnun%i0`{UK8vuGWK zk~)0}h^G@tZ|RDE4hF&f+lb-}`tb2K1SVg2yzz<*V zTy}LmZPw;2pK@mKGqhbNHEn)bPBtf8*)hD6IvR7n?t&WJ8lq+NyF&dA1Mj473&FdW zu!qN_dL-I+4E8d{jf*}~Bf@IJ`)|*AMKlrr_N4Yu0+>8yC0L6&AIzHX>WGzoA@n7h z7=`crXu0+EB$Oy32hjP7UBD``p-GJTHVe*Q5%E_x9OgemVnV?1%?8{c$eu05ik-Ql z8oYi9-Lg6}pf{6~hzB^^pf_<|^&ArxEO~!ONG4(O&ObI2(Ap{Ss}3E=Ibz~#C!OA5 z=Z@2A+8#7|YCs2S0@bV#a{(MEljl^)CN)v40CvTDYeA<(E7VenX9=;N1h%(7+N*o- zt>0OuusjV6iyLw=c~~1^olb5?bN(?qNlLnB^Ghc1_nT4*@>ENam6u}RmbR=m@{4V` z+RYQ{CG85w@=xcx%Yo|&9s0#Yg+_;r{D>DbYiSK>W@fvSM2PM9C?bMLs}~wp%p=Yl8d6yYgPA6_yks6i zGx4?H-X_R6rmk!>5VH$t=hoBC)YX?jZ{Q1~5_M7(mI<1riRJxg*z?gGWU-OADnAba zYp*xUQhT~*x0pd?`22wL4ZTVMp=4C^lu;%2HB2t@!9pALyZ7SraGFf+AqZqaH6M~0 z#tXFSgB72Lavk={kaV)=YWMTmikbIU5u{KV7#@B)+UVxt*QsB*CWPyRHv#q z0?Q&WHCm~L#{Oj}1x17MxQIN>)Z7Ep(=!SF+0YQj?vNJ%R z?V9aiR=t^wDpS#F%5ds&!^v=SF| zdhPm#a_Og*0*+rq8yAC<2LVj2F@fVD&ztCnImrd$-;9rpF3D0sKjuButuU!#lyX|| zfXPF#>tbl>20P_cIZv_nEF`UU9sXW@0UvHbSBsnJbas|AQ#YW9^yt8pZEjxq7TkJx zI=Rf8$=sq*tiv6Aq?!}7G{M!_->k1x*1!PF{gbR{yrOT=iPq||sc0Jz&c$}Z)`k9?Wa1ng_E z9qP};D~~S7Td>lTNA!PDJ$5@bRm0tm&K7PBg7^>j@=6G$VRq8ge#>%H8Qo4q(?Lm= z+BmeL{ucnEw60c@_M1JNv1*ZDJE5jvliU=XQNVHGLN4hVSHk(sLG5F!G0RVd$hCIG z^EaWABgPvUABKp0)$W}%xW5le|6URaV)~|X(+80K3 zT*Z3MGW6%wl^>C=SHN5M*7 zm*gsP|6cjvi+Z5))Nd?s-}(xf63OCn#-kh{as~soL{YW!p~1T+bEI5&S;DqrYJceo@!B9!R#zC`tBCO{U-ELiG`~RVgJL3TAq?agE(b;+ zJy$k?z7c8<5fK}P#m)D$eA4o7OM=Mf{Z~mAnV-AGE@WmF<%!y)rm@Th}5cSXIElk?XD=PW$ zdG`LE4}m$Q9;QR|bU5Gs2Eq}eqmYG%y$@S^Dwc~J!&q?XH~dHt8ece7>&;bS&5R;Z zAXK<< z_*`QxUufm_F7d(XQI3LbG|MdnucmK-a{zfzl{fVF#S^E~oXG7iHLOmxoDGOavor2` zE=HP-nS4X>8iR*V;1S6Ji0x_FI2j9|p&SsCyL+@-fKm`-!7=2`qsl%@{(rfY^ROXZ z`sE=VX$y6{`<+L3y|4g__xjoogVI+|LsFb1jQ6W;37AE7A4{{q_>YutzjI6zPDMTN zt~6P|3pv$RxGvuk69iwq>cD%}Hiq9t?|!v^>faye328TX+A&j%j$*u3TXo}$FB{iE zcoPx@x;1^}d@)%ARawbx(e($^QL-G&a!jwPA5_e9f#s}lfznzV412{_z#McV1|jBj zvIKdI%i^cXtnZbS>Ll#LX2cbI?`QLFQNtWuS4BGj?=%el!bza#v)*Hz6!#s#js$F& zn#Z|mI3VwU9&Cd^e9uQjDUQ__4j~+15)v+bP%C-j7h3w$?U==Wthe-0(fHM;4dq(7 z&epgNI^3|5w4q}t-Lq+X6?I}gLB&qT#Nx-qU%dC9GQQfK`e5oRT7!qnMRcw87x5iw z9qBeE^qb^+z>h*Q%nOjJ>1nQ9AX{GdoH;9UX>T<`LV5OCusvf`Afg1cm}^n=U~lC0 z%4nXG2(4!P@#r72Mq|_)W;XDhwmcoMZ{7;Dgs9}81%1CtJ@3?MCE564vgYB}D;)3J zO~>W10|hrsn&3GaHfnQ(|K|vG)qnWycE@M^IT?zCT+48LgwW9g-dd4U^-n&6sn3H= zwT}c&4e@Ri2(vaS%eJ$TrWAi=AjXrMK`(#W;nSk3w@rF)7O?aegRbUu?9TV&)BF8P zhv2Lhwf&>>fyNnNggvkz7JOXp5(@#vV=LXXXu2N7Xl63a1FT!i3r_cWVk)T3Uyq*? zj{W^x?!ClV<@0x+KjZYeY}aWScX6bbOgg9L-1bZ8C)&}%<`b4ZH~;CTS=T%n74a-4 z(qkoXn?J~0Ga8YEF^uFBS!%jjG*%fYv&Uf#k{hihB%rpqT7ZUN0FBxb#VY;4^}K3? zq-@tXA*|R@>aRo8Of*GxWXpxh?agK+8=s6*2^tW$3lv=u5nfT~imaaX18-;lV-5RC zBYja-UUk8bAbw8U!eL!Yit^4`n5qv0uQdGB*1dE`R8!;ShckKNjqX+Vh4?&MEzp7>785FcIA7y!}d!Fwu8Kfee2EF{E>qB1{9^qcz8V-0;1u93Bm{7P+9NbNJZ;UT6RAI@UoC+@i{XP1GBTp zqhTF*lBN!AhcZ++ya)q(0x0_h&%Q6=v7~)yY-3n_AqPDG;{cl zjHQe8_!Kb2Q^xtwpw^dY9K2P34Lc6%;MlEtTey;{TeI{?PG`5#>?^{WdTovO*W%EX zocUrx2leR@_K6BdQb_EbhLRbPs`uimZBBPCf9<>(3ZCQOI(vR+u91pADbpWe$VJPr zW79k7nlR5C9lqhpAUWp?_@e>ej!AU7tg4W#^|DGTZ65JZH6uUp#b7S|T9Ofz(A1{o zSkl8~Td8U+ke{{B85(F@t@SzqhP3lImX~&CP@*Ucj-$}DG7?XFYSXxcN2ZphW&)m} z&woq%!;<}EA70-XZBP+Om2IIsdTHUGn4f*9CnJoFNPZWieFG@YL!}s1Jo$DV2kJX* z3L;4TUswYU*XNxVRaS6CsB&Bkcs`s0P#w#(0>L@xb@0`_aXuorn6&WpU}U9@OKoi6 zf+o~JrjK+|Mec<2oU z3T7^4f|f_t^AG~Qyiea=vUpuF`Lx~-amo2L0v?(Gh!3H-AV?=b?JqzP2!^b;a=znZ z5nysA7S!r-40Wxe9{1ym+^;}!Gy-d;TE;1F=B3DwIR|9y$Md2%nHOVc2^4p@92{{D zx=+u1&wMW`Z`x(v8wpMtB$3$saUR1~D9pngL=t>{xWK9;^5q_A(LL%2bFKE)t}r4# zwI~;`xYTicdk;w2l;hv89I|L5AL283%!ao55y{ug(K-G0VGpU0jU?Kq3K@5HDB>w!``GLc*x*}pFTzP2+f zi0z@*B4<%W`_QZCpOhO!k#DAf!8(~rq+@hz3zc6hru5IE0q90VVItp*M=mEII{LFv z#+aH6DiCo0b4Zwz0L1}qq51}f?1zg@-JX;u!4F{6Yi|I0spnb$zFsiVoc1W9wPJ?R z31TLTK-8*zUAO?Vv5pTBNPerTWCYSYcxGXsiw`A>_ATp*pt51a;FmZJWW5e=k8h@3 zM?v8tGno#UMKb5DRn`D<27y3N~?SdX~(LGOV-u!Q5q{;wJfFC4DlyHdLLx$;X_;aEhf1{X~h$xbu8Kd7y z9t>EzbHea~yk)OA4G%lbruemrve=GIiFJkGrtTFo$qtygLPno7ohb?z8MnH%HoPkq zEVH6K(o2PNH3k)d_TQ3XLI0WCwM*krp|@2%!J{Z3dbtKgLgm2*^oGxs&AGY3u=;bZ zsS&fQg*Kz9mZ`5kmjWGEG%2r}Z~y2(d?g`)tK_jTE!pHKtqFp))Tf_JP zyI>(2!`}IWEU}=~GUFZ)8n#Xz80Urd^NfH<1?3@xdgf^AI5k zM9QL`DtNW=Mq8e9l;3Kx`1B4z_*QBrd&K@4B$vU5oNbP4KnfeHLd^m`KY(fM+XScy z1Akx8x;yuUJE(sdj;(WY3C6*#XHX7Am%xmP5woCwbU$UR4$b6pqT;;J6!}qDx=Z6e zq{LvB8hYu?$f3?>qvhkPadN4Pm7UEM7Cp9p|MRdQuJz6hD5Bi>lsBYAV8Yc2D=*@4Q%AhVSUwMYLb4q|aL@Xi4{K9f@c5SfL)f$-MIsKcP?I~ZoA z+(E;I!M39+V%XaL=Y9Ka8<3Js=$VMpN_-A0pfEPi(=VzW$j6`MiQh++G0`(;NzH_T zzOpMp)068-^wnz-h2X0XM9FFv4JycZf;qbROd!?53hcwm;?0 z9at1UNRN>t@47qDH_`mvEp0+NbkYvx%~WT8+2qAfqlswY-bv}w&vH5PDn27p;2LTM zlpVfxo&Xc{t2oCo%4`Uk#G4(~3$-4+;`NM5n@X&MZWj^a!+669@VGANR+zq2(J-UZ~E_BfxF??9VzksEb}UKaFsWL=vkjE<2TLPXwL zjncYg^m)Qw8|@}8*GDYmWi2N8XP$KBn1MuobTl|;20=$ue&fNcH%1~@;q&at%K|*8 zT7Zt}s8|5#l~r!d`g0f~sWP+ud>OWftR+FHzMgsvQKR<-*i4Q>Zs3}k-z1zxaZTLS zP1QW0xFAn5gcK*abTQfTBzaKYI{Ck>xIza7GdKhIk48SFH$dM_^9H1oX^lV{&2S>X zQf;bUcp{We^*SuMh5tIB~Wc z;tls;d$h_n*xXO9tYl-(M8|FFbu(L)N3dTeWVge@L6}TkipF41MbFod>0k`%YIWlK z0mpe9vZ`K)$O+HA(UI?26Uv4qS@TyR2x=UaQ8|>QuGt3Xx1uEPt5>42E-oH&r9YU? zYEi82XguG7hr&mlr~i9b7EWWI*1c@h(rE~RyG2?y$Y?o>eB`}RbtYqWxbu2cXIqbU zkQM*aF8i__95+Cer571#7UL8wB;R<^zyrZ5hV9Nj$w04!yTxF6D?mA>$h_RgDbH!7t7} zC~j8VARLSD!g$=$E=68b=27i`geg>3vkuTbX9|Ww!Tk%}Vv8p>8**`18gV`;S`a50 zc7M(s0N;H~&=IhKw)d79tfP|m-xe^g#19J+3|Pmw4wjepHNevZ-r_8uS@9^6tsbeR)MJIc0`#S+NWtBoIts7?oVpF`(=zdQ<>M`8I zLJunPGC1_2hZ-6NVa97$MN9U{cnQ*9`)xd|tGAFF;I{y3^Cvc*Lg~#j_h`%LzubXF zI+f$X13@JJmgDEG1{)k!GeI<`&}FQ-AmP~=d6EZjZ&zBCA8AI&&!Af6UYGq;qO`0E&$LA|xIJrZV!oH+)01y0^1JGY*jc=rnW?PI9A{EI>Hxw@9 zg96c~?~+OaZ43ErK4&H$SXa~(`2`Y;-)CY`$n|0*Y~ZxSuDZO`bk-!Cou^7bJ7cmV-)$X7?iEQhV?>Rsjq(p-6Gewnk zEiF8StYTEHk6E|cgGi*;GHucI_q&1E9sMm&`;~yjT~zX}IpVoF9!(0T2}ZKJjx#>9 z(_vv$y%oY81qRwZlr-#}?#hB^ON)-_P>vru>XD_6H6)b5;i)Ic#Br2*y9r&Yi=&*6 zwO7EjO8Xh^;3QrK0ZPAjxCc>y&$+&{p@EM-E0>^TC(cFTJWu!a#3;=1(BfN|^T!Pg z?%u;Cp3}gs^nHM!XT%_wVL(_~&ta3i4nzRfDnh0ycT!38b3b)zvhR8PM2+~A934&E zz&pkJ@JZ01m^KUQN4Fj+jUxWT7*f_L!9%qKxHT5VtkJkx$ogpJ)|Gu}5Nz8oMavo` zFm6x=^H61J?lIX&HIoSCv#?w5u=G!wl(@a~h&(2Piy(=a9osN`6srT@)I|LiW$neV zF6VVGp%;n%<0#;}YS5~;pae6ercucM}HrZRJ1n%MNfr+&6R{-V%vk|vdy6j zzI5bmUfq2Cq*dkMj+byyHUdp%F{=*jmGtc$`oPqkrn$%Ri4?Ml5+HKFGNq}fD zbdg$ia&|lhY6`!(M+Icgqc=0Av6#r2z(QeZ?gb5itF_jwr4d;_mhoc{AVybV?z##g zmZeFi**1(5ryFBK(5^w+&#uU;tW{$Npwwx%#8~8_1Fu~<_p(f(s?GjIKS_Wdu zEHisZzGuyTq{AHTM-PXw9&{9oS?5@8=9zBiAN6)9f;NdI))CARXo?tDB1UC?{KL)L zFUX%P-?v*Jd)-n_9Xk}{qDOd?m9|I`sqd55F8xN-ezY$m^XuZ!4v*a~D#e}; z`2X8qwRJPJnynEGF61D1%5z2=CFY>utZglm4NP2Xyos8jT?u#1I5hjcNR2tEBrlS< zK~+)2T^&@Oo%})WhOrG{ztvtepPiq|toB`|dp?GgHmG`d+MQFnwT`#i`3b`tNY*nT z`&tAcrmry0^maYT3VU~^*6Y{c^>__?&uP79~1gz?z8oOCBq_@J-+>w9Okd zVo?2DU6UZJtb#K$Fp3Vam{G(yltLtqA6h&ZnLqGV(w+JkvHhlEf5MQ9vAL1KZaMcd z_vovJ=L?Z7N>cTp#R~7OGF_DRC70IJQ=5sp5Cz6|Dgzv`SXWtHo1{QbWyq5#g$qZN zH&XQWKDG>LUJxmLmDI3VWn^PRNPUiqcu71bsPw5+&NR4eK<=B`Z}<-;93D_dl@4@y zy`9F=`DBRRAptHUh1o)TSuS@MMN`GYwpIJNoKZ*RQ@agdD1@H@H1QgFf#7yAM_LFB z`!!=CJ}=;NN!IpCqF_B9|SlK`N>uSMOZsqCRoUG7Bsw~sa zNO9}vAGYtu5H3y6m;c%|*q_~*9Yc+w?VI7u)$=_IY4^!)GPiAI`}51pH8+uR<&}aRJX5vdV{x-brcL@L3qec`Wg7ea=-p&Gr44fo*ofbT=M2gUk0U3N&l&wp ztgFxVaD;JFC0bj*sq7NQT65RX!vLE;(@|!%3BhPEQlmm?{ zTs#&AcfnR~Vr(s%+6kVJQBy?@bE73_j^%j@?*qV#jGg`LYX!D=KU8hAkf2jC@iX}{ zM0uAi>?eG$J$;u53k_83P{D$T zS=rE&!ci=zq#}wLJY@D)Z1@mYIUul+tCzsra2afI;hOk8<;8#*GH{9w;}j@o8zEgE`1X^=c#Rcge?iRbqApT)j*w-l)K&(R>fD z-Qv{rl}~W|LxK_*=TO?K#gu$%y8|_JlmZmLk9n(8p#n}QFM7x(@A%xF`2}5)Jcivh zn?UA)ZI^J7>D-xGI`8Hk6I1Mfys9;`K*?l$K^f_nZm;!DMNynE7VWH?Jaz;~MuANi zZQ_@788wDNTA&HB?X7Y85TtJRmD;z;8FC-dh`#3|!*o0l+p^Y?yW!));*zmFS-!y~ zUbMV4Hpv%ylP(ZT6H2R@9LR_|FS1D~e9SDd^@e|#-UZki z_M&ika_w>+w*cz>FI%CDmA^i+$MUMWY-u?lv_qCO zz5TFozB+<_2S?t2ASx&+hGqP8!#l(T22>pm)HUsINIE*Rq!yv1L+)%z zaFMTyl&#_0N*9^mQB(?}M~b157oO3*%6uyE{Omfl5^>VTwfdE_9#)5w9ta7cZKEhy zlZ@AZm-`j4K;<$6l-2rX^xzw{*U54A+15eLt@;43w;YV!BjWqx9yg@#AIGPv-aoVXfU3&KF3NDA4cUp(h zDJ@Mghsrb8hsHkK4*JK68OupXi5z7{CJ#NSgs6B1Ae--GsV(L-m;i?xH9SkS#Nwat zvabwzCNoED4_Hbj0t+DpNVwvZp+e&Mri%_duwJ%mn@Qe3ymC}|oAJ_sI&Pd>Yp9=r zLTw0jH{_$}KD$shX2D+vGO_#=>vi@t*m?%Z%&7e@>E?7KYU=Toz|*TV**S4-x8%NI zvIK-_KId?0E*%leUtT-1pNEiC*WYq%P!YlLykUjVmpTVJdVFJ0y!BP5g)4yAc01h+Ccmf>VX4tV) zs^zA3Z)VS;6JU9_&*e54QlqUJIvt!}_fY=?Ry-mrb$;{RjvW{gnmpZf@D6)zxXg0F z|IqS~eFNj{(W`8QRbbW!^W(2=OnxYnFG8SsNHb=vDv<1xaaI}=v~~;U_T^eIJg?pB z9s@bOhm|qtyK(s530G;hvJQip1y?C>TZbFYfK3*xWCN&uii4|z9KItRLoXi3K)FnZ zQjR)HU)!lQ86m?R8!(atHIyKRl__mx(lZ1Uk?%{^uom=QJeukyADwtCHA?FM@*pU* z&`T_zl0!~iBRFO!f#;YqZb@goVjRd@7e5SUc!N#duNR5o1Wk+vsD%L*s4|6`vXbHC zSlc^_4abICrsz9BpqNf?4qu+1Ea>JoM$|(PI>UUp9dQNhimGE0LvO02L?;ar|3jO1 zcdjpqz0-o9+>FT#{_wo9#qs8UU&?Ztl0<^0W6a=6i9ffJBrMJtU$^D+o%PVlQ;*U> zw|tZm@WlItwLTa3$1;Wt+80bel&@QPjO)@-eD<|J;!a7Kh-h_n81HZYjk7-5G$`n6 zW9m{Y0lxS*-C>L)Eh*bVfsa2@R1Vk$Y6CX39^?POlOF%g00s(my-1p8pM- z;mFYNBIu+Mpg#Bnhg#8kWV{c8#!xj|F}v(*=eIrVJ%-1>7w|e={{bn2YnM4h1t2>O zy$d(We+CadUVmiXJ@%EToL*9peH7nvAeSD~O)p$^#^#RNZ=qOa8PESFXvUQ|^bDhR z8XtQJ!-L=i)~OB-Ic5oikm3Jc$g@-T3#HG@_pKGY*>$ktq2Jc!qk(?Gn>v^TFMP!6uwB=|;o~Z&cW~g>6@ze8MXhN zqiVIY5Ved=j-R4Ev{|1^OrHHQ&Zq%AFu^9iAP&h#?&yMX7#IP8xqaJwXxa8p;h{|q zQhIXLHi)_im_o+osomwlDrlAbsmgLZ4NgSrD|ggxpH-a58&r!zJx<`cOx0x<-zQ<&(wHH*Aau3=%O%IilKzZp&jrzQZ`s zCUG`>K`hW&ajJ)IC@iNSxS2d;S)mb-^d$dA^I9~?=Z05BOS6XPPUjEeuXI`VuO z`p<{fT_8j{5LlvT?G3}0w^u154n(^nrOX6P?{lJaMlw0<5k55EI9dJ?($^a-I$d?BwfBl4TP2`q zp0ZSD_lkalGqo*X*HH5VRGMUPN?~HnL79Aoawjaw#j2qN@Bsap2RM z_T-t@np6FsKY^4#MW*+{TQ^8Njm4Hu#$By%GP6|UK(eXIuR5vcp{xT58y%py5fW#Y z>r9{!7sz=olwQ=W%qKQVepL)@&r4RkqH+wl*Cs<>?g<$$Db(rPaBCQA@na@T_f{&j z`!)BlJ;Fc$;cE812DVr&1BXW5v>xDjEM9{>PsJne1YPuvfd{lfJ!ig=Wm)Q`@tr9*dyTVVZ>$i>_mj{>JG^EPm`m0~cpOKqIAsVdu zdXv(mW*;1>44yF)>?8BXOc{_Cp^7>bC9MdawF!-_K)wowQ0JQs);CN;zs3l#Q*0N- zJ{{1YVWzGjBT-UDbeNbWsqB%ZObF{g%N@y`yQx6Jw0KoR#T4AH3}HJe)?RCbI2$)F zQ3qjx3)7twF}@p_Cva0vE=G}ld1zV~PHPI{KSBq$ z*+PEC@`4+I_e^LP$R%C5TLfMJQ@#CYj-9?q_T?Z$1RFC258IeC!{D>&{r0ZU$Yz@$ z^pZ=Ra~jOA(dpi}ilSeqt_jfb#_F|SHx#9Mk8ohMAY?(@RAQV-uAY8=gL))6DSoFU z1qqD6u5|KMZ;cs}EBM9E0u(NmJW1y;FZvhC7oW>{xasJF*Sud8Z(0C@n{hhZv$)K>W>n8nW*WVW6b2qb9efp=3L_zb}j?f|Hc*D!V6%w5=9^9(vCCT!Bq%8Np0Q?(t>F5-&@o*I|fJpsiDd5X&s^cM!z9fp{! zS691QlO7Ep-i3POO%=2d{ob|foHml<*|@$W6Ly>L)l?>a@pQUDV@>4U!Fb5ypuqhY z*@uC3*QOIX$^sQ&hi33tX7ijrF~@!d_;DQXGsIehY8yskGKEYzhJ2V)@W`RWgX!Ol zIsY-aw*z8(xJXS5qG?If055;X0RV zr>BvbiAw*wZ$ZzUN)7$}Wu6k>O_WHU!h2?Dg*@4k8oc7)m~I7WJSVuO`pp>R{Ar)Y zVNfI3YhWi{_iCV()IuLRhiwJb(~fFevT8vnRj(sO8Y{>Dz{Uff$sv1!7^@p;G>}M! z4hER>$CD5F2T}{s_=3xpN}uET&^md|aozP)I{eZ#^n`zSGmcxu150y8IHq;^Lhtao zQBd~;bN|AJ9CX~FtQdg)OD(4$@m4HzJ_S8Hg8dfCH+AICyb)`eS{rnnY~T9BPmsql zbM9(maiC~Q&v3S1iz%*)1GKz z)z~^#Y;os!VI8D*x+jkRp=dx1$mBit6AGCS0d@069i|~Q^Lx8xvk;CU{|a^L*AE03 z0)Zu|v!sgsqXp))J)2+WDY*OPQ%$9H+-u_(C)EPnr3At*r0FkEuZDu-FedxxXNa4K z$-Zt}guji+N6Ye&^i&cm40*aA38RZ}55jo;_SY9)-mEaJX{Fb+QfSbY`Os9Z2}ZR` z9pz!rt_>G`qd!6WxHN=@sABPC`<}h5qM7pHNMv3bT(@bUwL%(|nfm7@J1>cDm2F2- zhuUD6aP*_yf+TrS(K_&geF5VTLDu9H)cP!qk`yE>&@NbC6)W)@g3B8e8c5ppflqM9 z;}U^`|DWYuoaB_qzFRUf1rfxEO-0O6(4ZSrjvt)3ZBIlxR?5~t{xrFY+E^7LTz{eP zbd+rYMT829eam4@(-#>)M;s72osRqNEY&F{|H>;YV!<*#&-n!!2kAUsxzvn9locPQ zy!+qYssyIywjMx9;b`now#!1H(--o9hcN0yS>5FIML1#S zjohQxBzAqe>T4eHO)&kMa2{3!7Xo%eHkD*c`N%p;AirqJfL463Q%-bs#^6c^CI$8? z+3fhv*p*sz(QJD9x#r}6#sBS06JPE}j1Kk?1u&2CP2`Fw`fb6IBwM zrR|ULHdXU9A>4)nAzUo}QL2n(s~qmCXg`v2HTesmBUrw=ST`Or zpA@=&8*&u)?6E2_qcNE9ec^%C#MSK9FWa-B&W~@I0{u_%f_OfrpW@ug#s@Xr_Q}w` zg1B!j@7|~mGMHfL1c!%X|)-a$()Bu>8MW*Y}>vqI_ZxWN)$T zkM%|w^*JlKbmBy>h++i%O@HMn!|E#YkqR-os@6*%C!CqOQR6Ca5^f&yG_|6eHX14rkA2ha+r=)w*6a(@GzE|iN}hf z_xTdREr-a8uF_e=!*j|)2Kv^>-{*m8DHTe&wI5JK&1X0L-45{_#}3Ecj+(RX<;N&c z*?~QdtO8x*uyAtmhyddsh~cXr1njDRp4qr@&tk$N^5Cc5Lr_9d=5nk;oiH%X7Lwha z{*>(ghYx+6Q`XnVDnopw#RCx9e=_haX>#6}1}I<1DD1I=!hS~kF(Y@RSLEuB6`%#& zZSLDwn9*?-#26$}CbL)#EIfYv{Xg1#?j}@HIy$Js0^ex}8#KtjJ90w5BcPEcMHDIk z6+JNe?S)J-_g>ob)Q41MmnDV_wcNm4FEwnbGDxr|X^%|#@>ROwj?nr=OEj5pnQC1{ zs;G_2GvW8ajdkoH2VFTeDkkaY%JZJpaAqByqIoyR5ZXBl&rjpq&3B2qcy*{1qP25e)aOWsOxF z&aez4_lyU&zY7ITQ(HSW77i2f9`1sknY4PU;3q*WHhC?q9nP?9yOEF#l4m5}BO+ss zWF9DwF5~Z>eGmQgmICotRd+VDQR<_1${hs=mHS|i>GSdT9E0jI|1nE(ERFGdK4i)& zoh~`UwPYhL+-l66{i&N9a?I?PBm6WtgZi5DLuq1#GNvLIl_C)Qa6#2Q)`4v<%&w26 zU!Oagedi^IY_{O*gk$PlBN0mCMOYZYs0Oi<(Cdb>HvxUcjBfkWBT_~5vt#bObg=~?;74*mCH(vZm$J}Ajl$oqwG+^*;S1TD+H+(%`1eFb0o zcAAm(y^U0$WPBP5_qTaIw4L9;!41}9{!!ve3T?lN41Y4?)!^vPek(QrRsRT31zq>% zpgvE?O7btZ-Y~Zoab5jsX_I*6;SH4r70|{j_vzDJ9Ru*FC?#73e$R$S6~;jQP>r z?XtuWUpK7=&Rl(uYzqJTx8X0(}xy<5=vlhqS#m*>f(C{@!aejJtHBRO}qYd?@T zDY<`6giY;)$!UU$E=m`&RMR#=Ec@L`y(Qr$OBCMpE%*Hz5azI*s?fO6o8+qRMMScb z6*KNm#a#>WO9{E-HTu%lE5vGjR@<(YAG>H|_-&4|Lr5B1{tiI0d1D2;8(NhhG=6usyYHDiCo;Gt6OV zk@;yYrG*oyPuiquR9Wo3cT`kM6EC`lIOHrzU;qh%)vgwvM?%v(w z%pjsKE8*fb#`Zz(sS*Ertt1a?7|Sm6Mw7?bWj*p|%+>yXm>agu1S0tvSCR?7*d~@y zJrKFF{CvXFXiOW`-u&#KpF~-+t@`6`rL7r53D4LHioHp1IEkEtb}=>a{>QH?H4j$q zeR1|F&N0H5e@=WRPQo_op%6(@nlk4R_uVCS9}_B{X-TRx@)3W0*;HED^zGZ)8l?AO;Y zJ|CG8Z&{6Ks~L_ADwD;b2C=j5hui(-fB95;5t^PZiM>hMdp9de!IWObwV*8+02GRsbBQQKy%Ym5$`>wK-A80~Kjfos%{b)SSWbMuCVXc^C*LMfij z_q^D|wA)0}Bi4?7=EGhWklBCSGsxZZK6x_qPtyHK^nsQ(?HKtbUh@Y`9Dyqa3tAG7%Oo2{wBN52defW zlOXncd?hh~@#jefwX;6=#CW&V&6Som{#@yjKm$VYS+53F} zn+uESb+$FXtF&`93u_mrEPoHXw`Y7_{~LMV&v_Z=j68JT`0HxAJQwDx3ZV+n zGB|Gko^bj{v;cG4q(JX2GoxRsb9}xXDF#i0Tj`%8uLLgs<*FCaf0A|Y_t%2=P4_BH ztZUuUZV*pB5j2(Co)O09PLkpi^%OVLZ{vJ5>-PfvbmxhZ%cG39GCz!M+bb=8ACoc! zPO{i^I+^ZKA~&kNZ#vfoIe9R&)Umxz{L+_#=8eqL)sz+k?!r%B6K21?Wc-Z*U1u%$MoN~`=|;4m zv#rLCrr_yK%G<9Znk^so<*)SmGOX)#y8E!382q_&g--ZO$N3PlIdb*Kv=ggyWq43Rw@4%WF8+ucb(r6S=YDp>6elG)fzpXi^%eN?Z=Gv`l{h}B5&TMmA zKU9hN)pM`H*jxH1e*D84^I4gODGBuCR}Mo~zo@9jkW;c- zrQ&C>kk{M%=#6SZ#Or3Wuv2}d1$Sh$qqmGcPQD>6j=lR{PUAS5K3t6CjHV|iA9HuF z<;+Z5Kk!{s0@PD&-`?(I6 z*=1KJu^Xnmda?z2^U_RDlb1OdgPkt%oo{1JNglHfX*c_Fw}13$M)|?f8PaU~qVIXf zLLC!#T-mFn?$Un!S%;=R#a%a1q0*&YEs<~&S(bE_Lx;oolE^1#V zqFyJ$>d*4P-fH=UvL1=+;WOa-a{-lkf@BL>F?_oFs$OC|rz_4NW&2_u4}AONwQK1R ztn<};NiNk?zfeH>;DSkoCoscBz_Qp`<`R-OL2y1&wEZjOQi3e^0>tG(8u7&VpP0!*b#Shw0S-wSg}m$aVb6!{xov-ZyBxDP=*S_#DSTr)n5cgumTIad36 zT?bK^lP0-WWxaO6Ewi9KpuK^CR?XDl%C{Ub6SW_5eu(Jf5vru)kvtZmGiH6D z`uEd!DcaAQ*UDE)iq-F!aQa#oE7^Slw%6?t0>=1n=)C{%xpugQ{Pjx`Io+%t+qM

DN7Z%n_@OOoDeiw6(`g4zx_l>M=E8!O@B|>rx(y=tl^XHs@ z*Aw3;udBuWPs4XKWtCR&5oy`}Mmv?Pyy0s+)N>O}{e{xMjs7sUd3QkX<;X?tqIF;p<134r z?hY`*?EToka$iiu^Tln9tle4iw`Sls9`F6N_INoUZkZ^1iQYUf?unU)Z%W1}vCDz_ zk}ILlh5PI`>2A->ZE@V|r)F$aT%zA)Mqd0e?Cr2h_G*JqTGX-Q<)&v&e%7Kr_!f+3N&{CW#auGgiTe7$Jn37lk; z2MsQ_4~sK?r+K7tjq*U2hyUm3*AHvw<$Fuj%&+xI_jvJb-YMp3BN7TKbxmXCGLID5 zb53`D(x0Ih<>hBymHdWzszOCqdy`{%!-o4Y`uFxws6*67;&?3I{nF2UiEmr+TdY!XKUHXgRu-><-#2>k`SyIO zWV+;wTvs9+D_!-yd{S$kksmbPCn7v+60sBL#v)S2{o?YOw!@6AfS z1HMyRCGyjs2;9Gpn?5a!rsO=^B^hBRB?)QW0!Y6 zLKIY5y5aF(Eu-<*y=GZkSL}_^N z)J4;Ey7MCTmKpYwD5b05KXSSVjG zhoRcIRqJzzNH0|i@=)$roa?Q6c#}O`Jn`)?mqSEkVg%=6ub1k1J)#Bk6yL-|hlx!) zq3u2%1&jx?xy%c$+Ve-06UImXryUClxP|czkLkivH z`Ri{T)E_jYx4DqNLd#|&lW4?dc9=sm@XEtopFT&e^2sIkFSdt=-;|S zcU$^maP)<=*Q6q+UmqDtR-L*!p>8^q_-kq2fkEEjlvvf`yg`G{;m;|t+jxHH10J%W z8{dlL-^lB|BDwAQR=gszTe)tu%xV_B`kp`HYqWIGVM}FfBvID z?L)T0_30KqT z;)hQ!*NvbrR;DKnb7V`oE90MPD)u;R(UI{c#G~yH zvDrX=6TDMs62VKGHK^5-D98N!@#?OmVEV<=zNh-$-k+<#cEzUm%!(CSDF3G0FIJDD zIWrdvDu;_YpSCMV+9kA~l3|M4WC=g0HM3san-2ESIiD2Ikvx=VGML6rp{pQkUgptX0*YA@Jb|0(-0ly+;8_9K~^#C&21&ntiT zgJGlc2oa0KjN|NvASu&_L{=qHet%j^AB^WQ2Mua^>9KO!u)4~+IG-mXblD&-Ij;R1 z7uA{ief8;MWy;f*A`kVEm8ZhDj$bs*Bxc<3jB1d<&+J#q9S$A*tM%T3GZ_`eT~KgW zFk4`C;wA&eZuSaYa?F{poI$29L#0-@eNE1#WRCf7t@aSpKb5^onn1+aaJ}Itg*b_y zf83d>+~ZeP21Fzim7NO(!+(zB&+8R=ravjhDOw`MYkPkcQGS zTCRI+gr6^Fv0kY!EE%u)tthVce9CBUGrqJWdqBG9%fp|q+PLFhXEWT@5mx=EBO951 zEJ4mH6vG&Ns?>(i`MuA0vHg;Lj&6~s82V8IH9L8X4#VY~ArsFXj~j&Nb0w&g%exR| zemTG0-y83nHtq)o^GFK@Y6r_sb*kZq=>CqkQ{VjHMKl!ODnk<m1zHvOjkXQSTia$RBFH1AEfa94tJ*JmioI}X1fUJ_qgOP$oVzpCMM5Y_uV z?o@-ueouhlVJo5bD+v>a(&Z-qQ7VdD<}7yZrD`oY4!~n`=5ocf)4be}38G&h_M@F&!q6Xr6WYqy6R@+ue|Y zY|pB&4)ONRF$#w*&ZYt9H-SIJe_S1~Pa?c0SmSEVzm+>cZJfE!(x@HAFjdhk{Yy`5 zaGx<_x;oDsW}qKa z6F7CyuVbd|lT%JL@hStLtY}Ovy6Qf>cHgvB#~1AKG&##yv{Fw7U zVa`-15VVn*j#!J~d)*bTx++)tCPS3L|0kNK{d>IG^s8wz#XG$lVxu>$rT3A3fA{sM&%ybYI%EPo2vVb^tjr%$N0rB{wn@w5 zW&Gm;A$@yEzg?DnzRv`*t61G;PSDOS{uuZrSNxT`EAzXNy{54NN8_Vm@V6I#ZcE>I zaM2{<_^_9}Jd(Qke!z`t(^IKl-Z1-{=^uH6@o2}QYf1Lm9QhZhItCm-M2 zCBC}Jem{Ig+mTu1^al;5Jl`(0=s{P(@G=JTEQ$nrLTeGP_G*b2#b1g;j(NJSkcLXv zQI`0)QR<}so(hcr9eGzQVZfik@K>{3NdAh_(fXbJz~Zk?rx*=H5|CZ3^P3C z9yVJ_uUD1$juqE(MCyf0vip9uojKC&Q4B1}ETisAZ@yM*M4+S-_j9Og>L=R+n|Gbl zkNjVMho%*%wTZ%#6H>>NV|CC5Ar_op@6UHIF7y^wydu=g;X zwrqXRxg+sjUd`NAt{6KfP2rWy>n23PfJBuBliO=xF#t=?-{6J|Uz z>KOlUqh!&(gZGekLeRv&%8IDdZ=>i!JR&6eX!0$WyZkud^Es7n^|ljFdm9Xe513*tEN?WDGPs2p6Xc07y$^UH;cDGf zDMd&mLsLEx;aYDr7d<&G<)VZXZZPODZ5=9xXR`NF1o|Blda$8&#p zjM*~P%iXmPKX54ei!s_9I4d_?3H|=?D_6ib;fTNGvh?3G`?Q2Kz1$m!nTpW%Nm3u! z$vy|#e{cT8d8T&enQ}!N(4g{&k^BAN?7c_y!j(Bj+SCtrZoK%oOJTJC@uu#A^pqa4 z@vXOcuiPGYv(LxavDSWm^Nrpx5tY)iN26?^>qDR)D6%N?Jiz9R$C^ zFuk~Tf3xSws2;(Bpf96qiRS5^`@iiT_gJUI+ne?;zx_jf;23Zd>4_wDu^w?G_97Fp zZ5tWz3d*#m<-1MTcaF;TfsCjqx^S*V{MBJbd=i!8hq9#Z@vW^vrSh1a7ln80b(dZw z-@i%KS++pFSf7O_Pq_V};bTctioNDKEia48{NA+*uH@^QkNn3~$e0mxT7$-vPiFXo z#5o4%{lgzWX?XC-=abGi>Xk(Yt+mHvlytII+$9@!+L(TGf~_yEmj&>dL-v2aP^jpw zkUm!Q8s=EolF=S@1LCHAX})I}h7dTdW_+krq01C@-BO7!ZGSEwE9Js{{W?c}VVo-4 zs8OElYj=P4Dq+1(n$<%w%5`Q${WW4ozvfcbkXLdEE=+!o_}j)hFP!yRGU*FtI{!{? zwf_a=a7D~>Hg#1$SB0~*;%v%$*-ABzrbHUeZ_*{EOC*uIMrXJDfrH5uE0y^mlGPlJ zxjuaFRv+h=LSF;_Y9fo+kZumFqx`9sS(HEMCkQb4sH;cH{8xtZ)9KP|i-lD6tn;fr zQS?r(^+n$wlRm|EMc6#}(MF+}tk}27*_FMPVZ)iE2p;@X$KJ#e-pbn3fA@G-Q{FZ}l^wY7%TA#E;&1A+v zx#90)NTb~6bK7j-M`buP))X`7%)7#7u8rxKiUl(mlW_c)3!s*WT%dpOhM%;7DOAxA z@4&H7-(*{kCa5Ya{HrM0jRc>f`5LXqnNx3i0FkRHs;%)(UrEkR4=J@O&=4zWQnU#b z+eY}Dx6pDC)V}@ja>0|UPA`RQK1m2BL~XpIF!&?++fc6MW*0FVXWHcTHLCtKN|URI zo!kD5UnxiX0?c9;3j-01Sydud`T{q(OZ$S8Zv*?Yd9j1HNBlTV@jAGeuYXe!YnwP7 zkl?bLL>?m5{grF6R9`zxW) zYK};$C%LK(JJT!c3yuVK7^{Pi1z(m(I_XNfj^pTWY9u?c?}(9qNF2}zr~-{VSMyfsPPk%ec@$=hry2y_<5r~{~i_uhUAGy0>t`coBQKT&W%$FxY&}Ju%qrcnRzU_FZV1S*7 z^mW#+)7+^BP30b={PTtmdPj+k8R1%IU*4*T*!sOqdZZ(05JYjOEG0i8iRqQ5$6Io> zmL!G+$1G}AiVAJ;E5py;{hYrjy-;qcTtzId+8LrcNEf2@K@=a?<9jbib$#^O~f%4GgUij0I^!ejwA!=2?i9%O6^I8_K6P>{n06E<7p^N#m$LJR=*li1BGD5-}jDe`h97 zUvyseJW)!&NQTSJ%jteW7gEW2i9d!3bBeUIb&Mw7^fIB&Oi@ac^X9|^%apUHi* z#>)smB{i4_b>);c!?Ty zOEbC1m)q(P@9v`S=hQci2ECfn9E!K17RfH~?(#MkyO#aVdrebP75coKG67w#d*K?< z*$FLAt*3)Ge0Lk?Ei$zOV}r>$^HgY}52W!wq-dv1+(CcH(^edxMqoirBb-BW$=A*=i)1u6EgRF? zL)m=h0lS-%>mXNMyTZs)pidR4|D)C)uex1dd39OMRsC{%eb##Gi)eJJX7$9{+>wX! zPru<9&BP>zJH)X!e;D>Z<8ahbRqBbfWFp;mE^5?xV1QXMev@z%r#4`ouz_at$EV_T z3~oq$^rB7!^)OKATXZLxRT;Ni_T%`ACQ~EtBak$7%CW+HEidf`rYC3aa*Xo2NM$rp zXkK~#;?0^_gE~Drt2=JUqp2;b*FL?rE2!Qk)zI=r{_O`}DxL|+&V;B+{P7Yj6AZh1 zOQS0oXenr7*(ZxHS3yav{E1h+@;tdqrj9H-BV?rgr^?>>kg_jd5A<_9WAo3Zw_Ih4;V{m8#bdnw~g>9o?S8J*lCYViq4lyS;z^69Y-3b&5_@$wn5ayl8~MZCzT zMM1-XHq{hrYhhMAV#ap^{*0&f7prFm?O#67)~qW}VK}G6zE&bks~9V*;OlhNwPS`n z@%7SQB&+Qxp61(K2R}?ucxf@a3LydMs;j;BrBgAb(^l`E$US{$RcBh4^b7A&(D=)P_lKo)e>YxM zFHZERgpjEjQ*XZCt7Fzl;(kduHmxV{%=}>R{*MP|<3^8qdP;Ildk<-dLavF3zAI$D z_g0jz;;$*t&(EdyJ3n)h_i*67W4R+mfkTAtrLg*s7Ry3+1mibzW<3wjg^ZLb?4a~`GthgNcTW|#82DXOL2Mi zIDU*;|ID|!HldF9@9YVDKFutunL8O9^aQ!6Z#wBM;?IE`?k_XtZ?{@aR4Y1AThqU@HSZ*B3?(j+PAnU?x-SX-Nz~Xf zAC}p~nLqBb>8!1B?}8pxU0c^AD=;I!TPR=RP&PdsBrPN4{)T#iA^I)eS6A6hx1Cp! z)vGf2PWb1lHFk==`RmqIdya5U^mr<)b!HQ7yKo46-k=>W z&-ZR2J@@R$ie`wLZ?gXXG@S|pCqnc~5>}kx`tXMQ{ z-L14^Alai6#mh~AZ?4q6HtBj<;rZq0n;c9G3PSJ9B_&*B#{Kua&u)>Y@$*(wSvH8j z*Y0@kL6^x`Q}1!V?B2M3*MmSc#ZmCrXuR6{T_dlJ(^~;)5svS?@>AY)5y|e;L<1?e zD!MQ9NzpG2d>h`%Xg*S=@%xcE;_LZ`l~mge-*V^p+S)QV_~i|Smn8vISA-mIOubV7 zan-k_r3FbVa7$g)@u#<*ZShWu)X>iBz~rQ)+hKW{6~yytNo66A=@qU~@;u$OCZCeq zr!2MAFn(;6{o=VDOJp_zQ}#Oqih3}iFo8f@bEds!>|%hk~JqGDm$HS zc4D4;RE|kLVJfQOMA+wkJ`D!7QTxE`V(rTgln-?4#FQl|C|b50>6Ts zR=YZ^F2m_PeRU~{<_39bjT2${x1h9hgZstPLSgztQK{SbK@TH1gVk$gSZ;vdhj2bC z9UT^3Q}*ecM#B3TQKRCEKR@4X#S=E`Qx6Krc^j*%c*iQG;kod_)v3i*e}T+9=&V<| ze0%g$R=0!oR4^^2lLLHedtB6HD#uU9bGaSgQm5!jfAf>dnB{oTE|J=r&*n1t;_z&Q zW+g)-7YECgcr}hCTmM4WaMJi_yYIx8%7>KG0#>TiciOfBm9;A8Ek+n)+uIp0Y?l|s za&uGP_D72E$h$jnn=NhN!iq6bci|60lmTJ*96nT0} z%11iccfT>zpJOybCQEeluV(f;cgZo`*jWz_r-O%D@~ZYpObHj(uPAnsZDp;{#9631 z2Mk1|0!*z{-z7(aKEKa(vSu+F7tXe(17qqp+yIqU6}@TkU$CL~o^gn{>s=dxsSn#QOho zEK6)RY~QRX6<^|aKMr4K4I~sIc$3CH$9YHU>->hQug#QJ4;f!J%_7%F6aUmw0+)FE zzG!9fx6Rc4G4lw3*ze8(ZBcy`A997zHKm05it!Z}YoZO%z!!(Jkhqp|}p z&uHR`2MNEPVP26`!;dezhi7R+tItZ`npUTuyT~b|;L84b=UT_@&Sbx|5OZ_#hR zi`gwe9(7UrIg-LMYJNj>g1vXru;d-8v7`UpI`tb{yuyQll<=6L1Lq9paYmxeW#tER zH#Id~k+Vw=0YOO-bDjS5cg5a9Ro=0f#=&}P&c2V^&vfqFkVqo0mw#rHbIOe_`@qQE zMf9^n_vlFL^qbh)kQx@uG-Z5h-{g|-CC_wg^9V{A#*TJUL5tbj1A5iksO0!t^)@su z(_}Q%@_FmM?hYSVre~i0o!^Tfr&LsO*te`a_%yt%c@IBBua&(^2!p{V@|TbjdN96S zNp9pcN~CD;n({;-%xu|mq=Ib!HQLc) zotOPJhC;ezokE~gn3tPs!Lzja)J` zhHAIT@;Z@!Xn-YaFV}b1*8K>w;2|xc>95A+w>EU7-#iPWn-SKhjUkN>crcl%tbZrC zzUd7;u#|V1=;MW&Fy-7YxjlVs2KX<_UL`qy@?qXru~iuL)=lph*48}R?V=j4=Qkbp zjVAurW^{*(UkZKj#cM>=B+~H?rnz5qN5Z>dFCJhr)H#Wyy|8aB;_@m@1 z3jT(`glrS9xw;_C4E(Dw$Jcl97)z+p8L5)ly_* zR!?~9bCn4ou-F=Bi$P=T4&QIwBFGc2Hv5vRWzharMR5+#PFi6mnqWz4H}f+~3{8Zx z8B2fQMfnx}T6Oz#F1_7LRNn@_1P!UtMM}NyzOXy?U4ZFK%C{OemQ;(7bfHh$qn&HQ z1UC#GRW#f<^@!w?j?VTv(cFZv_<`?ijVYeWnh($|{iMl1=c-4Satp0dXyl`_ql82z zZVczAqIaT$y)q3g+wf<^9Fy`S9vzQ(;Atq|@+Fs>9O+Ev5%I0$i&ya|px2hHmWhZA zrHL5zwI7`1QNk!iQd(-g45^zO{4U9jA73nAgnl9SXGSt<+V;vGzpZ0@BY#%S=FQKK z`%Yhynts&Ax3cLg!*?f}>ddwLW>ywL~8CX=jZ_c9;T z!Oss~7<-wj()B?E`6sIoD# zqJNkyZr9~rQy2Mnxzmm4M-vW7q71BNW`};4LtXpm1J>_^#mXi`TIZS@%$f|TPCO7) zvs=i&wNu^b&sjmOVkNhfDC5!lrD^H$&k~Ys_h3^x-Wf6Ai@MLX@5vVY*OQ+|?sFcH zDFv3ELJ)L`T`YCTuP8GT9UlwYxO8f2iSK?7_@_VL1@tR+0W`c11O(!flK&(K}dSIJ}+$Trmsqhb(WSY*YhTc)P&*H~#wovf+rSAy|-`-ahrLE@# zKUEsyA!sMSG$Vm`AR10PJ0CJ2TpL5OpJ2^@+wIlDa!@g+62TA2PW#bI*9${bRWz8C zzR7C{q;i_pQvFi+YSO!GYDZbgU{4->#CGKR{G#z;XCZws{xo6q-V17}_Y0u>hHuEEo7?Y+A$E;_P+86@- z_YHGOb+KJ7R;l~>^fWx@kHmF`>?Jz7>vxKD?;*(I;*ITxG&mul-x%B z1wzh!e)Cg4<;qO*?5OVXQ~cQJi~QZO`>CG~ti89<_apFl zs^W_(SkK;gmbJ6HkMbi4_&OWUn+zZ?Uv-Lc=NA#_f5|B0I+>{Ak5;Iodno;Mi6h}+ zJVBmh=#KJ*BKyw>LJi<6|W{K!V=`2O(?F@5SMnF&Dz;0l z_4}+0VrmA;99|2H!O1rhEP7E3bcMpoUz9OaH|JQ6PczQ;f4Wq&I72cajlRzJB3f2k zCx&favj0HTV9ddMQF*vI6X2z<62_d;pMNC$P{rfA%#-T|pPrdFn(F!R$;Io5 z>lG16QrY>W)lV4IpAR1j`P&{t-D@ryWb#C^{o9il3ajS3H!px6W8RPE>1Ok0l_gpf zR1q*!FdK5Jis@@S%-2ZZ>bv5yF8oDIBw>7)y{x#cgyw?eYV#t^@xQKJ0Pv*-LVcNz zk^xsB6JSyTj?jP!5DRz#ngD<|4wxM69}fchfG7Y^S^)sS50nD80YJ7EKmq^(Kn@V0 z0Dzqd0F;nQ0I&%FvrK>t09@k-@BqM!2{-}(eQID40PX>RBmg`R1@r*m5QRKOBacgw z#{i%#3Q&mxVqO5b7a+?7JiZMe0BSK&!0YG`EF}SeFJQ|6KnMVe0A!f~0B8U}Oa%e9 z&*1^Rg6*;bz-a(@3=kY6eS!V`V?b7E1Hf|y@X-eVaD?DQAejIvC6MzN)>sWw< z2|$DbG)w?tCqTgjFk1l#et;MN>;OtC09e#NLg)jC8Gu+8K)4()5Yz+#=penAWX*Z_c+8Vm|>7dv>o zfCI2PBLM6H0Ez~xD-Qs@0H8p;(XzVI~0ZHb5Y$k;hEPk4k-bL1PJ6Z66CR#5%}Qv1zSdlfj4sj0;~^~JK#|x!|)JD z^iyge^F1|ydI@4S6d?klRM4IkKn)IhQqUuW3IG^@xrcZHwkfdA9(YHAL9}HZLrRBDp2pa0$>H8UAw@( z6o75Ufj%{Z_c9olEbwjy?SU!u0s1ciA3=E)cyoe%9s=c?U<}+qx`~V&K!JZCu?f6U z#N+_liWz9CCk4VFd!SAVc)tg415no)steL!99+R^=L4cBm{D-JF`4vWW5C1?X38g% zmlepu>S=t%FtP%f$KWUgm{`Fj#pNMrV-H(KMA;1DOcx(8;|Jbcd;kUoj&XpQRSfcL zkq5|J2Jdg+?Z^wvEP=Sd0{|^Nz|0{pfPP30gn{+_!MgzL7dVHgeq(*W19Oc82R0cv znhC)9M?hEy>QDpJ%1w-T07e{K0RRM;M;6c@YS3R=aLQswBRCJiKXwd|l36K$ysw7;2J7L2vzi(l=CYt|JPDLC5`=%s7EG z0Wp9E2XH1YDbU1E3ZT!D0#+iVz|2*UrUeIo;box77&HkWK|d*}FoS16nh9D$Bmq2d z_JF29hrrbuKmouy0(|iUI|izQW&ba*395Sx%pyR)L23`Qi6A5f$pHkI*T;z4c;Ipe zvKLrV$@TqdDKM6!8svj z1Xl|n1~N$mMXws7_94m{Tu=cQi24Ba@eu0SZvd2eff_(5sE3K&?ShQ%K}O4PO&%er z0U!f02eBwz+g0uu^ZIYMFq zi6B87CxgQS90IP;IM_fOxgx!=4ILpN08QXw+r#z&9QR;*VAP>9Fg3}DT_{8Khyy6K zoxl<_2#J7p1Pb;AEE~Yi4PXM?Qyl?#Q0q`oQE=`+KS9j{;1G%u0o)@bHMU~}zyF#1_V@FlK7Oh_S-SZD6#r#+47^%G+>QhbzAVBWf0h?B-azn3!u=w2Flh9Svg> z4l$81kBNeDCLC8D0VC@5Rc!sHHx^ig(g|G{Y7;D?X>iDU1#Er4-G>O58!tqu(zA4!T zTaI~W3H$jL#+iB;GfQE_l;O&8JgOBZ$017d2DZLcIV_*Sp_K(}e?|jF0H@!S0LLve z5k{*d7*S7Q#E`)V`~r7%-~~Peu^0G2!d~DZ0DIBnkN}6!asXYlFhKii>~$4KKno0X zF~R_CB(WEE9S13BnS?Izk$}BU^2&|lp~(wfoG?J!Y3%hBhxjj57=RSUt=UobM)cI8GP~ z7*RO1!pUc})!}w7YhZB(hp6q#Sib21M)dY2EN`_5V^b%bx6FhntQ_MTiN(xkFyEwz z^G66qAon_4KL^Gc95yMM!S!lkc@qu+9HMZD#-SAsF*uy5!PPs#moN`p!P&(jIvbW- zg_&a8YpRCJ(KR@|5*Sf9Jq#DDk1D{)@8S3`7%{0ZqSIh(O2Hx9ZLEEO14eY=Ei8{Z z4f8WNv>LR7<@EMg#NZIM5A#j3a6KzoSg#3(sPiz7!Ql)JQDr!LZ*ltXVVq&d`B4S) zfFEoh9S-woOPt<47_A=T&=rS4Fg8WQhzWrau!Ax40S>)jL?L0nF+_0QGZ8RaCBoyc zsRl-%5FSUsD;P7&ahQq2EEv(bIIM!P=_QP)e4IQ3#+f1*GmBxwl;Y&Lb~4}K$}4d4 zY@A*Jj8-pTY^sLwWPYQR;rW5a;fxf_TS?>OGB9Frh!(`j&*AhgT)^hnY7<6a8kV2f zx4H<+GZoRW9u5Iqd#H=B9Ca5)w22y453K~-X;Of3<}qBJDFE9;;SenX^B4)79A_VW z(w-PxKQmATwo47$wkci;1Def^Qe<@9A=*2 ziMQ~p1pD7ag6sE5d~p3lnZflC0DLt$!1)2fVL1vH$4p$Dt!8045Cq$u z5rX{(UcvS;;y7LchbR5RAqFQuY3~GQL~;5fu>F~n@rH{R1~-42CSbiLYg|9qV0}y@ zobSvQ+_=NdpA-9NTz#~wCbpwi)>>FZ--WU19E_;5I26Q{d*gT$9P-0B^8tRo&G_Na z0Y(5P$K1xrF>rgB5Eua*&g|dBwvX9`5uJd;OdOKKXhjVph8M^4;gBDPmM}Ky!7-_v!!V%pTac7G3@7f?ukq$sqxM0mnt%~ZITkTNz;@VLXn^&O5I| zdG4ex21mo=??3Xyf5|y;G}b1LhJ1$ptqGDrK0+@LLj8v>NRHLP(U1>N`H38g8$_SX z4T%2t4f(_HFWE_5NDjRt4e3Jj=R^+CP#Y&UQ*bmC!!tM^ui6Lp0RRUGRoz=!V)pL8t+UhHSFq$h@&Ap!Z;d=S^K}}LL3d{2f9xD0o}pUP=BG$L2^jvB#%&A;M<8< zIpi-inIIjgEhu4-9u)hN3o3)!#=fr#;{S}t*2PtT%Axz@`k(RGc5w<&`TvgpZ~G9B zkL@7rFO)wh-p~d4|Nry<-;KwAkB9%x7gYY=`G#aC7o^Vw-Uvbf1Stf6G4~oPWFL#&?W-6fBZLz-3&q78Uo0D+-?fH z^T6#ipncDOHXYzUAmEM+xXsjmwmry0$SxF&LuzQdgd?##9PC<%3*SHMA~b6u88jCu zz#v03RtJv|i`cc1jv7ltYZL&!4S1qYh0}-XLTmns98x=>Nx?PzgocQJXz;Tf5PiZ! zh|M?nPxvQt=mP;Ko)!!G#r~vGU8{$3t-PQ{cn(#3q1G zilyN)xWCXCJj)5|V83;Q00NF1Sd3jHPi&HdizY;4+XV@TK3RKDbV$IJ z6{4~I#fR-c_EEUDpmjF^=RYLp<$~>C{Q(1gVv`Q1kF^6zAvtstgAHO4q@ic%KQvAs z@)-gCccKpv!*#K_MlfLIP);E~ARTO+LFylUoE?ZK1V;{xAcK>`xp4cZE*@wA(!t6# zFaIM4@L(Sx`DGPY2WpoT7awdLP;gRL1r5{KIN5a7dQ~8?wB7g=z4!@OA3Wxvx`_a+`tXswA7qUo5K9U9r68dF7Sv zhlcTFq_uv%`;kZDSh(>?>3SaA4oSB^r3HOnzJ0k23uhP~=%*(>_-71Mj>Nj8su7I*5nv&98IR$h7s&)J%U;OFU6B;KameLCiczs|JP z;f;gL4;_;8CNKT^hu`VFE|6An-?og#`B=Cnz|fmN%Ojml@GJ(rzGDySrfPZ-R5a=& z!aqH=EzmR1itxdtAD7L;@zcQs&5V>s%Zr2}96n?Yzv*O2rwX5waV2PsXV!Nx zzOLd5U-?(M-|F46+P@~zTe@oKp~pX4o`}05$>uiT;YL4emeC*&M?|3KDRh3RiktWY z6Uy7<&;3J#7VdGq-dWydtb~yk>k{Fgo5{R~6hOGeRinw<__tjK(@)Zs@f1POw?v5F z!uJ`g{9{vOuIURktP!_px!-h^(zkTg;6j6cda^6{ugvv7({0u1ecVF1tSQE;xKRh; z74|@0cnCB7Xa3nbXB)DSUPY7I8ROII`p4fVM!cP8R(Ia`#wr{SG?qsZYRIVduW7yl zR>qLghJ-pg!g^bKM_RPvAP`;_1m$Htk>xFM&|;W|lJ4E1(9Fw7Q_(n%vSa6l_T*V@ z))HB7o8;6DOL|+{lh?Gjwr?V|w6qwJOUATR7?4iP*l2kN{5jy_0!;c^BL`iO#R5%k zygM{Po=i*Ss~K3wU>C7GU!EKHlie!RmBBn9B4rDGood|Nn1wi1!pJx|tc6L$F=@(q ziI&lJ6>5imf^j7;c};<7p^?Sewo(%__oDJNN2#Li7)jFurBDy<)2gnmP}-zH;)rYI zos+L+q9_;G^o#mw8<;<>$DnYvdUeDLM$4_Buz9olVn&0v*_Osz__5mq4miO4W}_N( zR5Zox+4wD7#*3e%nkg=A`cvCiSvWWiQ!5%#mBEJ&2S4;Qa`1o_7d(r^)7nZksDxV^ zF)(C)WKclGbFSLuivOa86(99s70v9~v+KB;hd>V>-aIBxvD)Y@Elmi5C*yMb7Jlq8 z=0|Ug&j@#wH!LoGjgKv^$*Dm~#2rg{aUE*MNVM>opX4VT7#^&rvA_cjPcgk!@hKY1 z&2Q#hp$?&-lBdX*B6(+-}wP<3}g!H3*GxG0w`X*XY4bQ>PmA*_of{X;W?CxdZSKrrliBKTqP6l$ezUzb znf#5S4?f7ugWqJUop!{J9Zew{=*Tzx0AkB=mY}_`eN4Xs-5iBxSVkGnaAx*eKEM{ zn!NIcmpT;F8}u)qn6NPF;2shj8sy)9zvUG@1Qq|@tiGgv9Gp(9*Yrvz($ZOV3pbkS zLsi``n%?h_))Gks-e~%BK5jGE11@-~D5`d8`gGSPI##h%Wu#;)dNfH~D@PGk`b=$z zrK?{!@kXAav0^!XZ0{xwx*~4T=rR82ZJm%+c-d49bN#Q$%4k-mw-bbihKDuBDsIxJ zm9=t3xXIA;cEjvyq3ay~>|`@WpVG2?rT)vpTeTiEBdK)4KqAtm!NhNR(<{O?@2%P^ z(1fEe_~JJiW_q}lU8iH=hLdiChFFz~^9i!)9?-TYp5EdfrMqa4 zI&RC;LMM#Pp|QM3iIu-m>z@P(H=So?M`j7Pw2sNf=V@#Sj##{T`jg-2JB8V;*-0ip zKd^w-!e3Q_=v&pc};to8azd#RuOIM91 ze%EKSDqjpN!oh`KYO{90;?A98;a)~9mTQgwdQ~v|*v5ObIe_12q~^-6LmBv8&ozC~ zm{G-zIf&=Q(}m{^vue94u6%>hBhOwlJT81yrEFYb>9)LlO;-(XyDVKP6k5~I(tSGk zT@Nk~aeGqVWZ|h?lE2dbD~eaVg1DBhI#1q-zxgeEV94@rdC`7MMc?SRzQg*~j>iSp zuQe3j{xxo0i3|=2CFR3pkzMA=p59cQc<5727h0Dw*Uu2=4_O6`@=7roZ@5@#sQ z9|`YCG8iBIHZ{^>zYxEbY0|&(Ol_B?)#Gz^PuFEO|E!tTE|GtY#;P&EkbboXPwYI( z5tzA0=;~AQM7n$K;pJ|8)Zs;VF}k3VlW`~EmX}mFEx)P0cphte)^xc_>$74EZ^lUH zE4<>POyD;;r|{I0n8Hn-H2yKa=JJH|6iuH=5zgGtM>-ydI>y>NF7WLC<#3O;u!hH$ zbNc^R_(}aZZHNESx>l^BX^D!ZvuusY1o8DWTX)(yxw*YXOOvb|Y8kBBFlTW~KbNhx z@U^Dp3wpM)R;_TcZdIqI&G%{%F)eA@+F`rn#|wQ;5x_Knei-xOuqm@EjfJp5{MhRX zwRcbe8@&$!4W=wqPpyiA2WDR#2aH|x$>p%xZKJ68`4UY~te^N20le$q6R7y#amN=vlkkMioy#gjMqgT!m&Lawt{PT>hWw_F zH76XmKE*eA24+~7R;BOJtN2Z4Z!k2)oH=&h5I@iCjNbIINFUe*68FpCWd zZ=PnODlg;L+GCXcH~e1S_Saz3S95H5G~r$T)>MA2o(cxsz=ge+%~_I|du4vMx`PSL(um zBR(}M=)qg%Pk7VR9~8gOm=JoNqA_cjaV>u1r`(ZF;8{b(0h8Z8+a<4IEml?O8NOl7 zK^1@QOfA045#RHtL1KbUf4z14p70hN@=Vvb3Rk6X*qUD`3_N^kUV^{ncXT1gq^tNv zY11QvEx$c&Gl7b~FL@i@>P!2>HkSrZ`L0~Pd}{eNr{=%MMl+rs^h-LOj$U>8ty({1 z1->}m$a{*`3qpSIta;U= z60qqfb@&zithzrUOy!F>6@S@7rGN10)`bf1qk)Xxn?u7}`Fn9!u#CnG8eUeOo4We5 z##H_1;{{_S>3E0y;$kTRn|@7t$D97wcmQ~duj~?1rLV#F$^@IfTUvBaF!~zOzDJ}- zJlUf$jP!i&{*VKh_l$wMe*m zdh)*pKrZ;F?F)m=UXLk`B?5Shs5PXVzAqbpnm&8${ttR(w@T0Wt&&UpU_|NhhQBdR z?|{8@>-;QOFx|+&o94=UUdq{bV9LqT&>NzqdcuK65Y`|gJ>-2UN|OUm+$Ccj{dE}r zH@vZy-|V2v-gIEnI7Iq|n!n(08BY^}3a_me!hw1AObt-Lj1MC|VY8D0@Ebp^L*Rf( zczR|(rjJ(L-dlML&$6EpK@Yrk?b>m@EWTS_v%wp@!2_NEFmmuWxK!P`U8#>&R@a6%K3w&Z9t&Ou3*p#93#(K*yYG`A6o>r;0-F z{OkN0?}6#n{K4e$V@+9l^?29tKAkf>`gQAc{>Zap#aNXe=O^a z$y2r}d+_pe0}Oi3Ki~r996-RXt8#kac+Xbx!v{a|tY4=;a=KYcwq1Rz)8 zoycH|sCDkZ!%yd@jUn`=uc7Idt>7p1Teg9Dis82PaQGp-QjXvXZ!NsTmY!E1!yA9y zafJZTBd>-}77T0&>72&Wgg3Y|*6AeJ>0J!yEh7!#xI(EmS0CEw(&xczT ztl_~_{;j%yvGmlSLO^^=?|HAcOI;#84Ogo4Jg@b55qnsc^~d1V-Bk3(uXjzAK0N1U z<9|cAcvbqW?cgFm@>TYZyeT_|C;yt=SNttMs{Vu%pQq3{Oj?+LXJ+Yn{&m||!W*pi zf($@!31{Oi;3ZnOH96#W`ntWLe%+u4M||+?$K!y_r|u2|2zhL9kYMBITaz_?yXH?u zCBEf=_^$67@A0S3zqNX91kgu(d8_mlSgnymQ?wU#wf8O%I4kd`*^^!UY5c(NzhB3i znV>&58-KdICZ*B4e!L5X-qN2pGQZb9p6lVj(Ga% zSU+W2rbCtK%xHc9)-Z9{)lSK3d79{PL=^wz96uSVi`@nr1laPl!a4ov$2{$ruAOqN z4#|pjtY}Y;C{B{o4~$Muatq*&$<3LdBPAFArZ@mPnQAxOO>SvllhRQXKd73x>3r*K zKYm&*s&m;~4fwg-5YE1epd6@3zCDuy%GiWS@>180z> zQ9mm@=H{1nE#mMoKl^iT{>woBfg^P()mN+VHS7&8b;<8-8<)@Prq`^NZQMc+tm&PRQrEl_(J`;mw-?i?{@bI6W7W|;M_J3q_ zJ_}U9#L@Pmjo|9^TP7cA`YsnOoYN47@4(NU4Ol-$PYV-Y+zUB9x`?l$J z%ZmTq<=quM`C@*;1d6oaDeJHa4}R7%9-Z;1Wdpo<<}b1hB48`u&cyjITUE!8^)F=c zl~H4De_S8Mz%*r)_?9)b9K7rNzq!0xSpp`X8+$fdw1B-wc$N-$yj zj=8~*hD~Jk#s$5u9<~L`;P0t9o`gB$8T6z#Lx%>?3-NizT>Y8+J*F3MCU~ou!va$9 z_ZtxM{JO-!Z+|)B0TV~tjb3$W#9bYV$72DYL|@&)Xzh2sg^dv81XSjRh18_Fc(3^CSG1<3#b^1!LYQKoX_&fB6yo^5yfWPT$#y~H7S{2+oI79^l zHa!qM(OZ3f{Eh zx$@fvTqTcBm#h3nD$vt@t}tyoy~)e`dZkmLA6Bq&(5LbwIfKn(zD!}vIHU_T{)=}dnkZqBIH+g1iK}ml2lfR9P)Acu_*Y;YpXV9hLdL>`lE;5+(|Ju^r6L7`BVFizk=JP&ESEPek%L0{ERfL{{iRaSrp%qp+N8Y za095~w|stE|!N$Ms2P`7L6mQUzCjBSn0-m>id!=7rx%^(!1jt2vd2K!l%#+tw%U`B% z*N^uH!C&iLHlYnz>+@5}N6Q(O2k_YID;VIUwBS#3iQM2LJ%WQ@><0rwmx|l)mS2`X zBp7()v&yD7FwbH=@D040Gh5IL*w*(_d++-5^%(G`|5OM;uha8A(Z88IX}WG{(=<_J#VTT=>VJkU|3gEF}>1*aHjL72H4Ei1y6mvjXIJ z(wU*@I$V(@)sK(gCV=?p@5bw|s^o{pq)B-AXnE8GhMs4s9vpsS?B-~&rQh3I)h{cb zs~*`(y?`Eh3a#%%{)z9S1D7vs5i;nJN7}O`#Zh(9!!wf9L%Cyi(9}S~lVvJr*wp;4Odp zO&lI*XwTjvkSFj--3FU|79*nzw4w>U_m3x8H3)isgM|Y&pK2pKfQf_jVsEg?qxK&d zoa?vl?@hk4F)iY{zA5EA{d?@h05r%qUkCmWDB{qbG6Df69g-)(3ZKp&M*MVKC6h00 zC@C)TGUr`y{~e~zOK+&I3vX*%v7Qw-+D@`Mwu)1^S_T_#)CYgl>0Jx(-_Bc9En{jm zEjz;7sutIRby^)u@3bFS!R65OQbr7Hbw`Kwh*06% zGlm%4Rr(n6UNh z*4f@+;1$U#E3nmt(ko-&)ijz~fz6}2o(^dnf1@9sIZwv{Yk1+pg`O_Njy8vfS2=9yj|?~Yrr@+_FYP=}YmTmJZ)m4}X!kX#l2 zAh}M*VML!Hee+?!kcYG6_<4-K_MT`=fssFDuY$##>{ax!_aF3bGj)1{17;3JZ}M7f zFCXIQw{;s&mtgqG|NGSR2Y<`|z>sQlogQ7&Os#rA&m()Yc=$=XR}Q&>O@6&`0h@M| zK+tRMV3X5;^*aVTya#Ohm^X8n*0hT6#ci;gLVJMiu?kNDN&keMO5$?(k@K7;=%KIWwD*a}XYi@=dzc@1y2*kr2KRX#}{mY7Xe~cwIbA=KukiY0o20Mncd_MzU%Rg3 zc++pA=skKYqi^*NAQ$|T{$vjsYzlSQ^4HSjSBi(;__gNjv2gBQReV<7-~*ngc;1O? z&l^9nrr-Y5UC+q!BQ7%r#i&Z3#1r1qQ~raW*-yEQ4#4Pvi`DZN?WG>Dj_(Zyu*X;F zrScVLnl5wTd6ets_{bddr}DAMV1=L9wEEBkoYvB7^|Z-g@K^1(3|I8+bw}{)LSXds zmZG>?|0;Uwd&p0E-1UG9e(JsKbRMvk??9uU#T4Kqx_JUN>k*=&Zx7gB3$zF62?yTf zFEzJG`Y`^bzD20<7kDerVz_bbEsq*(`cP}6Cd*)GiunuYMSR0+^d9xe@S3`ExD|i0 zCsR2v^fS}hCtyoo$+DUn__WUxzJ!%f`x?O|QS? z=MNbSU3;z36Gy|LR<9;K!B4++GPMF5p1qNzPs?A~m@_lkr|};6L8q< zO)%#lg1^WH_=X{{#cvG`ae6oKER~>nU><4cvU$2sBJk2hgW*4L(x2@f1T5{_@s5D^ z6c!a%@uxMW4G93|VQGlPA^gZo_eDOq0?SSuv_`9Yp&00vV+J}_o7lEze{=iR_8r<_ z=Bs{Fe!SLNYJ0yrIgp0B2~79D>Q`&|kp3l~iWxalsrdFA|6#r@2R=If4iOY;eNeTcX8e+%VMySrt!*Z5$w7GeJO^bS*|S4_W20qcvJYsG1trK(R#)@M5Xr z5cDDUCiQ>k=>7W!Iecyg|C8{m1+PeWVAiX0_!(XBff;ov!yb@8FBsdcRX}?EP+2k9C^hX(|4j)ZhH8;FI*={#pD_)ceeY-&6Eo6ubze z+^JfSQ5VEIpE-T1xcH8I?@&H)pVeaEX1&)1e}%tDaOmS5nvY&7_yRq+J^1mUTAd&*1-KJ-8ny_*)JZ7Yjy2)}e6w z@2!4V@5565w(jHQd9`63PuT>X^w4*te}xK*1+^2>0QZoUIwK_br71p>EcAD9;=fXc zb%x+SO7P<{jy>hSInfjUv+_s$Wox8M;a4TRt{mk1@pc~|K@Y9-^sh<$ez4wchci#O zGoR)9InKf2HP0@J7t6mR!M_x|ME-M9eDcRQIPwQ96;<$6&n=3N3jPKI6*=IJ-n)a} zzRb&GapF(;ps&1qE)}mRpV?ktX2H)9ecC1{z9^XAxPB$!vH$&q5BtCC`A$zB zaSy-1>+@NO9(m4Ec*sNfu@4jF*Q@$Q{k%sH?sF6V9T-(BbFUWscKLqdVDTm8hxphW z?ic5J{e7i_PlG?8#L53Nk^!O*6?vr(;G;A6Fv&}M^m0A8b5t1EukYf@E`^s#)Of*^ z{h#W=p`R1=4*lGs_|VHt%>C#>Z>tVV@WM;Iysz!?fJ+6F-WwDASs5nqEeWQ*z*eKZ z_~^^rR_{plp?r?^WTpF468xvi2=@EaWMIH5(hA1D4;9RPm$-+;zoR$z!{MmU%k>U> z`SN8xevW$*z+=CG|H!MHU$j@$f9g_FzqRjQkv#?e^4AI}x5i(^2VbW)K>jFy@^`u5 z$lon0_`eh!_4$LZFN(Jc-mC{VF2;xJ9r_2RJahQX8Qg6@C%=JjM6*w=KXS{}*aEMT z%(x#*S=e5j)5Cr)BpjsN8`Y4J{(T0i|58TIk^iIwKlB#e*)IRD)vn{vKm0=fz}RaJ zug>88R9V1pPUTB|I#_VjC*UQLJz(k=`n*RE?j^DV?DcyF6~*ns-z9%L$9|R|@`@lzun-gS(63 z*}_S!=6?9sKE6`7TfxT&AMp9x)OHH$ z?svh5e%agB!=1di;!AG-rzH5o`@OwlOoZDmSSDY!$G1M<_VoxzxewgtLL4js@Rxho%X+`l>aGue;{)pZYAO6UZy-HrI@8lB@()(TbZ++j_a&J%NyX8@xxl?>}j=Np(eR^ZF zxaa=R??yh(L9_ScX^Y_R7Rh%Ih zeDpW37Ca{SmQ=ssw~ycnJ-BXovmHcaZJODgtPdI4uj_2?%y}x@^lIKmo*4R|| zKTGj%6}(pP&l0>w%;`Vprt2%*(=+rA`QJ z2O4-Esrb}U+*~^?Togw*Se&Ultw}%Z^ZkN5f*(!zFMZE(S0(+uLcb0meHFX85nX>W zAzzIDj}?5OU~C5WdBLQ0jzJEu&S30ivEYe>2hQu$ow`r*B;jTxd_$8J^d0<05`00z zU!eS<-*Xd;zW0(p^!=#>e>341>``)^b+IPp?-Ie#AD`gsG`RxOR{D{Z~xct;mkDn9yUjDx#U4Hx+#54di7>~2psFDfnVZ#%isua`gcN&GXq;6uA$ zHQ^Qg2Ufbh{!6m&ZWw+iWc2?N{@6mubC={@B;GGq8176NCT(l1NBrWMZl7=MaeOy? zk_K}dgnF#E#=lG6p#OpNw?gnyjxH82Ev>x_d%AmHhtE#s^G3nY|6YRcJi_&VNs7NK z7+VSarAL)kALga_KM{Pj@bArFY(HS^?Yn}*-n#7%cut1DM}|Rto0IJ0{9{X-|GhMo z&tt-OgqK;F`|%oYpJF|7mSA-MAx9TKJ+3V76z%&GyuT{anEcoNH}JU9%JKi+MXx5L z!moQ)X=OV0O@1|L{U@FQWhNhTrk*(%P!Sl6)%?yhqyuh6H!y z)jgx;)+TsI1nwch_p5B~aj+QFMB+t)qkZnCfBz|E@doAZ!9))p`wxD! zPx~u>QnR^hPA#o}yC%`oUQnLVUVP!XrS<>6pYXuXkw4& z1ixJ{_2owiUVEPq=`)`-5)yf~(6yUAB$cU`cxPJ)sZa`&3r~?vDSzg?FeU{)+fh1~}rA*XTd@ zdY9W*zhTw)3x+n}>r%lqQu!d?dBX2bzH8p6`YSv(j)PuJdPTo082tyo3t#E>L>LbG zb$aJ`Ykv)^y^Z&mwmzw9VD8{QE=~4M!v8M#?3=y5+??n?Dww*kAlVP_2^sv|4|)BJ z@!BsxT-thfw3iD-f2!z1-orjx7H6vdzqjEDyh!vNc^MPpesrt1H;g%PU;DVXkINh^ zp8YwOXDow{l0V?T_>8y5O4c0uJ668XA29YA@B`{>D1XLCIAF#$0aG7V3Wf&v@h3C~ z6z|Ezzxfws@g{{6hNFBwqIcvM_$=i$;LW1HU$lRe^3V8UyWkjKJaV_|W4>|Iy!Ee2 z`wsZl1e4w~7$A>=uNih5ZKTqic$9m9Ff}uT5 z5AF{V9PqwGVz^?&X0=OumYEf_rC`NMtc%WhvQ6TDW+xLo0pU-BcBRQb8@0q1vd z($}$H_4z}z|Mv-|EH@{7H+=6sZa*iIxZJ|OFAK(#Q67}fpwbKYf7_mP)6Z6WhCBz5 zm>lVULGMWaga_T;?o0VU?V++*BYcz>^5}mh&nN%2w6WqN3d41$*A4HXi8}pBv}Z3n zy0o>)SP%Z^?|T2Z+PD?PrQi4VZX&^?|K}QSgg!R>uq@OB79UFTcDF~s%&($8{X~;# z>dy-jzw`dX;SCvoXoElL@f%_2!*S^6KlBd$yig~$e_!y$Am!fv zl$Yo24*ri|NOSre?zaD5%xakZM}N)w19j`FByTr8>kZgn^k4L!&lP-j&%ZXo4gI`x--e~Xzmpf;_}evELB5HEf3qfM$IAcb3AX&pAM#v(P{a0b z1{0q3ANsC|1fP0_#$U2m+9(|B5fggHdc;P->jfX72Z#Kx(|fT&4ucQ)Q7s%Y-cq+} z?%xh+*nHyz2a9(f>iYXof`5F3^zUMV8uhBo#KC?E5jpHsqrD1vhn>|k_WhO98n*Ws`*WYs;N_)? zCo#;?ejX@aw4cD2b-{;a@EaAMv}fwUL4Tg!5g+`k1PA{1mw5YgO49GviyM~zYl$rP zjf)yK7rx%X0zCT5@xXzHK8Jr7J^0fye!q+Uf6ISY^ptPN|G!NSe#HNu=J$Wg|9?VH zTe7?KyYst1`rTXf@6m$;51hwmzEHux*C=k1ZHN6XIk!>J*Z+*ja^DdCn|cTS3vX={ z3xt1XvY+=}qyA2|zAn`d>KC+8-}bz)Q9NJp`}E+z0|%b@^os;v4pI*I8G7gNUR^L_ zufQ+3u2KA>VA90hD)>UlcAANk{kot4zE+1&9rdwXc@kEqkaPaWd;v^&dYx^ z#ebdP3HhfbxVwJ+>*swu{+5J4^Ur;}er1B+c~7JGtn$7k!N=X(m@+>jJ!FgY*grT~ zFm(V&|H^t^^snFflIu^)%;si%+2OEX##hf4=H7(=$=^4M4+w?_?x4T(@dslv9B@bP zfdA{khQ$wkli&9WANqpdA;i;zTm6lO`44um_?v%letRVNsRYvo;JWn({Cb54f7UaO z6CCRq=X~4ivxZ^j-XnNizH<`%=p$|)r#rg%;ddK$KJ5IK2b_0AY4z!-gn#h+4VznE z+~Wbi`hob1*HgU?fAvvM@6`$arXPC$e@(*wr(oJ*zx7q~8qwo|{?eEGdgLEjsOHCl zuaH0B-xdFN;cwaAu(K%J6aT9pcX>`s_4}^`pC#P+8BALhFzq?z7wtJP{bdeQ7CC%i z29w^01xI>2e%-M1d@o21{2fm;iZS6Inyx=`jE~`egh5)j7yT!t@1XzSZycVJ=GVlh ze~kFZw_0$>v$q!hso&p8{Nbl5SH%zfi5VV#w9mm0cySlZ+Ew5eHJaAny=72=a^3Xk z_g@tr`Xs$$1cyApq!%#pX-k8DH^1)o_f!2%o4>pxrT+`TM=Jh5(1^*6&uE%{ubbiU z^#e_-f3K!dlH~R+`oQ=Ee&5uC>kKw+ZRBhRZ9D=#nXAe74#6QG_DWk7_R9DL{z1=p zk){P6IOKsg^u6SnFloOtjod1&H2&(1;6h6?h4*7qwh}t z#)F$?kFQSrxBSZObI&9I?IA@O?ctlh=kOO&`?*2(4t`y-w}TQqKfxaseMk8F6a8tk znzk0wq>{=_OZI3kO1b;N;XL`!d zQwg4%;D_fp{ap#3JJ;baCwQsqOGo_vEb03R)hG1%xdh*(jdkqn20gg@^bPZl-lKg$ zYO7@*9le*9Kw4{7c|t!e>F@EAyuJEVl#kj2_z$EG_`c^j{$sOfdBTzp5Fr#gOx9B7N?1K z)Tb*qdHv^iM7Vt~Yuea-iG#%nf2pyq=+PD*jj&|D-HF{BoH3yju9E?<4PU`(ccZ+jf1^#$THpEZ*`i zFaOIE{73I;T3ZJX9B_}~28{mCP~JoTj3*iI#CY1oxdqE3;KWgdb2oLyiQN~<2(WD?XjP0)A;01{u7=OSI{&TZX zlTd6+^c$~h+J105(UV_IS*!eF--n2nF)R-JLxMveecx-^c>O<9{d%Y1w~6kA1fTkC zeV2d4CZztRPx-@xlm z5?gP5oI#|V*;l3?^l^;f&(xZN!D}2;X@&kS3m-_Z~!BO8X z(fY(z!MEta(SFU*JK8V!W6QxG{KXlb_Ur<|OZ4ENe^h0a(;uMl;0HbX%|Q>p^%?$t zwQtz=?V`bg4*7qU;9m=-YA;RjF&DSYcHWut4}7X{0V6-{ zX~<9d2Mdn$fgkFEv9}!m0qH7-yYbKN`S0;RmTY-^Y$;&$^$Nk!-@O0TEo)!yRTvI? zf3@CW?+3i5WqYmHHwkISnt1%Rkt%^@Cp~ zJmt~brEltU=ZXehgwc=&_BU zzd(lxUoZH|j34O-9{Nog3_VSK(32i}{gK|Zds?>MbXt-Z`dc%4V9G1v!=JUZJU!}v z4!X^+kn?q>=APnw86U;Z=F{OrZzrzObpJfZJD)I|x{%htC3$UR>$`n)c|r!DU( z9#&d24XfYXtkn4%!T*xdf8KCubAhOTpWL^{_A9@f@WlU~(u??KuIjP+OPhk*_kbRo zTYNpi$a{>!LtbFy3HbE~_Za?4BFpjn;sf+%4ut#mp*=>cV-Du_Tis**TddzMy32n{ zmx|Z&^GenK$PfL=GR2(h(XD^YVdObnxRB@BC-j&;!@lS*p0Bi{zj&n%wrUHZSgbT~ z=;xbyqaQ>Z)w5n69!$*pEnQ0~KSe;azCOQb4E!`b{_BxJqwhDkZ8AaM13aR8z?!AS zN3FWxM=yuL&rSDmL2qWQJNE~5adj1cc-F|MF1`Y07|AD8SFP$~@_1&zn@=}HbE|d@ zb180}p6-Mn9NlZ7;h`zopZerL%jwA{0xG)Ufg2X+vU&dcs<H$Ia&V%fHz+40o`is>07hW zQI(WIfsgc{112lFQQ0nv14f^R9HRfqGcfYbwp-+!w>LxjNV38MFD}jAJqCt>X$CI6 zsMG1_qRQZRdo-?{yH?ND9^mIv0zb^Z-^h_SRDX}ov?L##3K#x3&_S|!5 zNbMM~<+nL~D9V?xf5)I?QuvXRZ&1s1!H)O*cgeSE_2CD#4zB4n=fUyUm)-oEw7_of zT+~|2XWtY__DufvZ!ay1j^okKN$b}jUdC^YvNgxjbNeV~_V>8`kq7B_aOk7A=&oGn zQLI{h@PVb@)9&(o#q0uk%pQt{R&l46*A59td@Ik{!@6bHVb?F>7Vx6xQTtF@m#1T2&< z!}%Tdz}VYu2i!&zT9t?Hur@aEGkukF8okqo4R8ELMn~q)8?E8-^Ivu8c_$id5lh`d zIjyA{>hTxMpKrII15=LNn<{7Wc=_(#Ae^{fAN#8{1PeoZa>Tdv^$n{%XU-c3=6O38 zPfAPp-QM^FiNh%)?E!s;2Ygi?$$m|@s(+Law5}h&7!Z1oKds5Vel>rt5iMmQVW09S zXW+?)-E*s(ZYz2({wet*M)035r{>b&B%kFM{%&u`?fP>4>{Bi+JC?r7Tela)5wohj z0oJ{s)B02UZ2Cc&;%Kx&KhSy`RF=NmFJIBk+V44g>`CoGUi80lCC0&k9qX;4vL}l_0Ri?~JV~X3e*sG+BPs zyaXQkxwn`88+oW-mrT2)aghjtqu(c8_*s1Yp@jmU+MDK>?zIPw_E_GUUYSN9@LoO> z$4?yZ{JlIT%biM~#y{1!vu}rPf^_>R^i9$zZ)mK-ruqu3doFQxdL*X&gL8c%z4NC% zcwg&!U0>$%Q9kR9+VRjYD_bUO=u;Q^Q+zppK@OXKS08@(QH}YQp7*cxu#UI(VD_xx zIU{xd%V-IH$mi{oJaWLU51kWS|AFS2!R-OzdRGyI@G5Cr^m7eZ=9iBB@wKNUKjVEBVxY=i@Q^gsdWhcX^Q3 z{V`rdZqi<)Cmght$1i&yZ)ls#;v&x)2<3P&{tOrNv1PpDd3<%>uTKA}5{4h;zii$z*iF?>s?W%+d$C(RseLki43F$FM?C`R@f6#i_|4B- ze^c>`N(|29`$w#SNmF+?xBJzF0mE;O0x8gdi}uL8ncDG+{1OGdfJaa-oi2H$0`SzY zbIvwrX?gitss_6~POAJpzUOC_zM`PZnHA>p>LV$AS$S*0q}1KHaPji|gf3ats7@w0F9C!x}F8`}_EEp5yrr0H4Kx zHrhY?EH};8xS>R!7}7 zY5`oRXje1(mlY;Ax9y9tlUv(2wQuIyNdFLn?i)=!h@guf%h6U95VzTO1x&q|RJXQP z0g@3tkzX%QdE^MQ@g?^NE13whGC952I6SK{a(SY&a!?_r&wp6lC<_$@UJElO4DXIQ z+@^@6VP&fJDI8%I*8{4!mhPs@F5BEX*oY%;idlsjU2Ec^OE#ao2^NtL6MrVh%mF^R_}1>&9>PvYbZrAe(DWN^$oOGSnf?%z z{x;W(hcRris$=}zwl%SkQiC7*+xgCGuf6u_tFI;u8phgkc+FL^4C~V-of%}Q%G)%_ zkwmcwnhWBLKOW+m{yJ;NHymHAS(n0KV&A^=&tcYd%lBisv63(H=DBcwk&isTCREXA zx5|D~FEp-Gc_hIc{Y4hny{=u?4aQ&yt96Ahlli#w&phWjCmbJP*zP|2EHf8jq^sek zzI)TQ$nZ19MW@l6-5%H?xJtuX5jS4KkkNS*PF*Uq;;2%^bOzKhY=Ci%A+x>UCwNcLka)1{%d+C3_2UTbjFq*eCXa? zx^iO+x+F^!hs8zDHf~G;WHKW)QH_qYRb|XYnDe7Ww#Vd4Ht7*lT;w};FP!&aRo>>b zrmZWE@988uD_^8bu`9Ywt5(ZoteqkZSxh&28z89Rlm@;0&Qvh&*)S+yVx56y<0 zMUHeyD;#0y^gzawIQhY+dgO@;hR({j@cYrju8f|kTyn%s`kN9)S)PAw6=eK?yny^~ zB_G8m2TQ`>X>}nbQ_9SvZI$HBwE>lVdi zqL?gJDYifHRO8>%pCpa%fM)!Jt@$PS6y~mq+ip$kZyT2?zeQ)P)K?X& zJ_@~jbS!07{z?`)DY>G$x>`d9-9El!CnFu4jdqImQ`xXYBb(ALhGrB}@U<>AX-zIocb@Aue6FJ2!CllD)5(r**Cz^BQ%~xu>K5OD=Qe8N>DSNm*{U?4 z63Gs`gu4Emdp=&$b@qI&UR={f`x-%!wH=dW4yLWREt_Flm5Rl%8?*DP`u(f(ilUqU zNm#-WC334YI#cr^4cS%lJCg9mwmVA05uN0e#&sp1mIHk=s`TkupFY%NeqO5L@x7W3IM8@iS z*2B;&*}OcJifUQ9^Iy6OaWke7C)DO}d|_a@eHfrpK}UJ6O3RFQhkcVF-N9a|ZE9}$ z^Z;s%YuU+*=N8K?r{1ToFH`JQF07-t#ji*Kvfh!>HI(y^odrddue2yh^K0|t5_i8# zUY{aZ4TT$Tb+5akX#6#jKHXpxc1iq{i{PP1<>V9?&C>(ih^i(ck(iN0vZd4PEE;tU zF@y2>34Mj;ely7U3(pMUI%MAB z({6%HFUT6hYzhvUkq1poSI)tQe9}!-9)ww352?!B= zkqc57cKW{Fn;IjYgr$L9tzW18f1LctOyTnZCD)hpbKCt*-*5Z8k0)IZYtQPR)wW@2 zggvmP7`K0kpXFoz5k-06fwT6IlAv?_aYxPbto|U<5a!NidFP~ezZFp9&q2w%6Rjk@dVbU~i3r-8nEtXFTBe0P_3m3P^%9&`D6M_Z$>w(SCB_PWm+w4Wr0AM%}e{PD-DtJWGx z&5sji$E06SK!;Umd(;;8^7iHK@@}Q713Ge~;Wp0RCfabBt<5ev!y~H>J&3TH4r{6D ztUPQ{fVF{4FDyQQOmU-L_NN;PLq1#QQXVKg(r~&y-38>uNtoMsU-7K+xN@zMCd}%- zbSkg8&`VKFoOk}3btjL?t_U;vylJfHOfMW30WYB9r~Gz?$A+IFuEa%xv?pqn0lKgu zYlsEcVNdk^rtc}MNHxEe^H$DVF>krXW`w~LQTTQwF6cJS;+GBX2=h!msjDMB=O7m+ zd=O@NOBm9MM%p$Ywh69}-hEyo zI-3>8C|MKfG)pr3B#pT=XnY4)ery&U)5zINfrMFqH)g67REI5Dytq>=S<<0Es<<#p z0}#Sc>~rMkW-xlfV6NTpmOiK0VAp^!^dmm}2Ww%*%Bv|}3xnU88_ud%c+vxdH&Wrys4^!`Unut-DJ)-Gm>^PIMYRWge=4mvaHiA|eZ7c|Z* z&-E}%m!{C1ht=s4n8nquTCuiK(l5f#WEq~Rk7}#PQ@MFQRF-o54f*z(qh>SBX9#n; zI$^@9bX^*YTZQ3~3x4+PMh~(u669QnH|BQJ#aJgx z)!=FCWmA`GtdAI1(O0g^gsXM8Aozd4r;Jb#zLb+KmU+fh&J?LvCuwBYdV(r!$X0w* z4Q*{oVdieK?ct6@$@#3_qg<5~dI zhfG;zj!b8~(u!88C9bE*RT*T;jHFl4)O_2QP`$0C?Za^+8~cciD(E|Bvn1rJTXrTQ z?J*i9hsB|@c9gCu`DriHo||&7QK(0SgD>wQ-5n%>iTPqLq5MnA0d5v>KC zkGb1p+EbhBze!aXvS@~>Ii_a>e)aglW=|$ZDogFUU8h_)KhKAsdzoAInx05! z#d0}_I6SnE{S&=G&g z9Up@q0!}urbVw7i(n73JRtL@%TMdK#r$(#pc9FFQ}m)tG&c|y`MsgML3cX5 zvDlKr+@AH@^PY`8r^`Tt4&TP|^m2nTN|@`QU*`h%vi6ZMFSk}>hSoz``d7zA`T_mE z?}(@AN(hs6e>~>UWHF1lF3WK5%-%V@d-M+5r;gm#xSQ@7M%`6Lb_9U9VUvA2DY8Ux z$nuKv75ZHx|MGk=d-4?FhqT^a(PX(!Wj4hPQWb7Xv1QBDbXD}Sd%`k1Fo-bhpcubk z(}v^Lu3b0o7OW|w1IV4{ zM)#hz9#nRG;h>V)420Qdt^?iAJ@i|(ShcQL6&?_G@>J(dV5+R7LAd@l`kh_UB4K@M zpP}%&@8vP1_MlzpDm9Bop8W(C^q#J-&D<<#hUpCsUN2Xa`w-*wNqKsa|7cIGFa+1>_Gyj1Q7)FYvB%V| zxq2i7Vb&hF$(fN6*Y)zm(BmpeXlj16Ygd-9mv+zr>9M3JC!f=K8M&WO;(DE)XuP=b z(#Cm>^RqgQ$vW)kqo+Y<4rS^`W87qSCCRy_2~_j5{Y;2O5urrmO^|E!IffhTSGo zNUwBkfNNu8YiH1vs}gOxLeXWWW7B|wjNa^?v$e@ZxbXqV9DJOAm4?BDqu+y;ELpo3h@0^yIbcFA}|NfjRTCt*SKi{n6vF!4Pec!~# z+SY+-C4CXOMCOoRgq18LN4T{M#l)twHlKFfhNrGx{+}t__^j2!k@%FwL@}PiX({HY z4E3s9$a&a4`|M-Cu1pJadAhELTF>yAtKSU{>%VGnm0xR#Mn>ih&(tU}ZIr@?aQ%`d zoTW`Tg6LRVsqwuUJT`=%Hk(^*OBy=r<}U)Ihl3a@gbW?+Mz2>TepndT~?UJ1y^2R2u z;b=mfWixW*lu4gDVrBf)fUMS0D@}=OGRso77Qn1H+CQI&`x&iZu(RU}C~Bc5IX}wj zkt(`!oX|T|?oV5qxs~?sX{$Q7R+DX|T`DiuR#v5HqN3!K%`V}0#PmI13h%~E9iB*W4Osm&6tPpKoC>rxseQ6~*|h@mXv1ymHpdG{~v>d`;gdeN6X0e$}W5M-RW8#(9|S`e(sL@A_e1 zi2lUq_V^h!KhV-Yaaw0Bx$|edwo-E~|0h5$(p}$J-)L*$e%wO4^$=aZ)7Sj(Deg)1 z!ROtL>l-s0tU&0OSNfajUuEk@P}n4g9(hhsnT!|5>lqi+O^-Ri#p$iQ#tp3gM1JYn z&eGSjUYNdyO}LkDOW$u~Pv5(+NS9l}{ai^M?)qHSe_;Qr{sa0C*54`mkuLooiNhzA zBQp0*{0>DuScg!^o!Y>nyXO8V87{jiX5A4hL1@6%XwM>1>lMjyCHZUH?$ zMIab@AOCK+>XfTayXy3-#;^Llt1`V|v}l@lqIWruYO$8IRAHzh()Hh;ajL~nwh)fq z)}Oq7VBNs@z__cYqQ@Fp197X%^>9l6^L4xWX;$hkPeXjF@fm;|{Jp;1+~6M&aLDs) z%?F?hSJNYQpYFyx*X|IB@VlFL7yOI8Z^FGCC)$^{FH;lus`l$N=s}+_MlEvAUav@3 zzb+^bEj#7S8pSS6;qdvo;(omy|EvRjGBx9=?|5pbx7?|#R8XhHfqv%_)X7;i~9e zFX`{o!YjSOC#~)-nVyvmNt{rG^Sg|VU)op8DfNm9{1LCJ3-aSKK3ekbZ z>@D=>6Da$Om_A!pjbT)5gI(LMtZFEOWUHSxD9Wf~0LBnT^}Zg1kG47upDi#wZ|!Kc zcC;JQ%IVsVwE-FxJ*a)atn(H&HBoSO%ziRPnS^S{WeNJQ+b0MftV3Sq{E{u=y`DD4 zHx@Pkt&^-K35khX3pFi1ol%>^pgwDfY(AuQr@f7L`lYE_7TPr1zpjRVQwGe8G`%It zgU4x!DoxdcdtY^E>6Z@PVEUM!c1vwpnahm;ufiYOxpOCbHawfN@Kp+bP+|6r&o3^Lc&46O z!R_*?9bC0wuA{%yT%HFHuKC|7KD!DZQTSt`eOS+9$JX?ZP43*eD>*ldz9U+mJ2N?h z|7wLlwz}psAwJOZz*09DF1z&T1NPI@3)Wk0ysz1uievN)*&}i<0fz5X38{s}qCHv_5RFjo(Mgh!E`Ww5_Td(L?I4UhY(xi(xY*@E$b>vA7 zKCb`uE&bDpMK6KiuUK07dUNy9=DV8LO7Wp*@|`Qv|v3WGl!Rkw4O@hQgJTgO2o5Z{4F5>E*Iwi+9ma4B=T6W4j-AGjZwcVHD`TdE`viwkK ze%bEkL=W(}Q891SznP{1PZ!*m8C+?MrGMrKW9;vxfc$dHsmUHfUUFCIne8Nqk|W&9 z>tuaX@OZmd_2tE+m80utP3ySU^I98QSGHc;T4M{kRk=j*h)2ywcTe`L?Kx4;sVa~< z{Jy4cEVBk-m6ktQ;%GijMx_;Nx;K zg1fhTqF42ym3uMLx{R6GH=?>|)6;~w;WgB~V>*UYry?i%l|CAk6D4X^- z?nxQZ1cV1y^Y?X%sM*8{d7x9X-bWhHd%YOZoq8Wx+D(5H z{m2&4KXP>4FI@9mwf{=+5rr>5ybga*{8uRq{&{~fF8|RpGm$M?VuvbAz7k*}UVT-Q<^c33-q|*W0ZM?NP5;<# z!bNJd-SpdcLw~cvClqH~Pu||Hk{v!MJ>RcqJk#?dqVI^7Czlg>&~tbDL%s;-$;+K~ zX;=B8U${v6;pt>{vNfgKov+Xvx_cs{UoQFAiAT3Q@Yy8V2|agY{o}0)-=#bXzeu$9 zWbMx;g>O|j&nAUy^+!KI(lHB`rlL2@`a$}UUCD#J?JC{-6~0=$dA4TlPo#T|!bh@o zm0~x1u-lGkdGhiSXk!`5C2y}D6#XiN@#Ou&s@?E0{ff4`eBrZP;XJoy^tjg?}az9J7Jj0ni zVCUqChyG|6t7HB7_+hK;d6U|ti}Z9d{_xpV`4ZkCO+9(Lgno8KA9_Qcyu3n2;^gD) z;NMaB{aL*bXm!HMEenr&6!}%vF&Fi^Th8F$O@EW*hxhLIcZA!LrJLsqJx97>|Ik0O zi||znzdy5|JC*J_h4GAJ_7?eCuJD_(aDi5~-Esz>)xzJJ&F}L3=IvO>5C42#uubxe zD-1qQWPI*W_y%b86xldG_>ix5R^PYpMxVidT=b7*?Z76{lV(RxZvVlb@LZo!zTM>* zdZ65My8`Cv)?0*ihlk!eij${XJfVJ5#M`wmbN_L5xg-Bp(O#oxRi>Z39EY=V+|GDL zM$^`_EnAlk`&lkNQ|QG%@{s2%mvhT5?5!g{xjxZP@X70M$O$eFzghGX3Oh?rKEDh4 z-RTWJxt!4LD%~f<9Yp@GT18qVUanmS=j-?IE{wky(AgPV(>(>7B4{{$X#c zgnKNjr(2b7M`6Ut+p%p5AKyhde3$PcoIK^>yE+5Q@z$puj*U&5>S!MOUhJ_|yEZ;U z-^F&0A+$$WAErusUy_AoD>eOE$E{Z>)3Ow@a7)q@aTF(TvAw}oyj)LNUmfRVsNK7#cIcm48f~@uUY>1bww5L`7+56RZ2?X$A;>1I>!P_}kdd%5*BVzzr2d$HODtu_+<3}j%^KI+qVbS;M6bEgxR zm9&y0i5pwPwol7BLnO0"~h43aHaLrjTLb{$n!8f-@TzOk{|puJ#jYr9B+egJaE zHLYuO)GE#9BTdIS$vuZaK)a5EI`C(X*>Ez-Rty<|yQLB}~u6)?? z6^CWqN_-#OPeJa8eB=e>hC)h;QMn|SpMJFBN~h}+#cuIWXPvf#YXkJ-0hRKEm{fV% z)^{pYY``o~)u6h2uHO2l!7__j+R|}d>D2eDbDN!<)8aU=XAXqRCAEw+;#hzZ*%?uj z68(4*JNiQSorCEBXw}XlZoN$})kpw4vK$$zhSt8bu1S-0#$JK%7nIstpsi|@XOw4` z`b3n4`^ldNi)~to|C{1owS)8sj`Mwt1-w)tmQW3c5z+adSeMa7R66^||| z9$(}EoE5RQ$eK)RPxQxe$l*M1?Y*`4w%$+n-qL$>?}vLoB!DD9gSrHdx>Z)XreA)K@tNR3zj6QFqZmt8EWsAhSffd>*C-|y5?%PdKQnWl zoxLoQe7~>XAHTDEpF5v>&di)SGjnF<)_Bhrp-tJi4>T0Z>${mh()JUsmxVNyuFjTB z&JN`}0>@|DWvBZiZMx{LyvN)Zd7y}6Ef{K%Fk1G$K9*ZHiy^n0VWUsmAXs}i)4E}>nY_t1F{p8w$a=YId> zVuPPjc|Aj$(52e7&}TKDruw9%NpOU#;eRB*-D*a4qlKvcHfQrxR?WD<{+GsL@y7hK zX3Rf>MCI3b94Lf-&$pI%99m&(XO$V5-6>9H%1^y6eFh!qsja=RR^qDc``O#so7o$F zg4o7u=DX9OURB46D4y!JnRon$KiQ<2J5SR((!CM2?)JhB{!ZJum{euZ+#CW?6(myj zFvJVC?#*|LyYS&I)n>TfuXyqO&a_ETxCm@!a|)=hR2*4MQ}JXQ=*~L|cid5!>;L@$ zD}!87#tqR0N>%62OfBPbntwlV+Y=vpr2<2TpC$O&MRr`A*|e(E-z?W4$fPEJ6^J;R zg7_JT{}4hpH_kGcH*(uq+X$<9;pl9vCKul)jofW_ zns51dx&f~pvyyB&&Eoch_&(-fv)1K3t?*$Ihi(-$atSh*3dMFj$>cql9Q9j|Jn}IA zky_XXo_ci*X7s-qBUOVc;{n3uW@^6e&4apup2 zmZ!h4Yg=>B0>MAL*18$9U2kb?#iiEGN`nf6vmsflKuB~%xmIWPcRy(d{nbtM&v96j~EGER#%Br%|u~~muNO)Fg{wyMN zr*GN|De@dX8q*rHkttf2Evk8?gE@Cy<+U!%Vli*YUOBG&ig^P#9!M`6*J7!1&Y^u? zu_n`5bSQRPkLQZJ&942LNWCzYy|T>HiXgNN8jdJwAi*`ro#9>ZB&*`D+@0W63+2jv zu+jILwW(M+yJ*Sa#r%5H`%mu&v19aaO}H9bdqI9uePaW!l>aG~Cerod)LA^czi1-i z32cpQKVZ|mLt_S%HD`@knY*ECxL;V`&sl-TIMTq=F7@;*rCDb4)DnDwACx(uvD^3Y z(6POz@pAkq%`m@cuAWkTL3J~$g68U3)l;jdR~zr_s{CI_Q@&wa?m#S;36Oo<`!vHG zX(I1KJcaEz*Q7z4yF;X>&568E8oQsV>3L?CogW|MR&N>P)@UIDl*TJDv#e%YesP#s zO3#p=9zg3Wn{lKw*3rzsc#RzCj~2Z-pWO{!D0^53)YUiFyZWa3QhiN5cf1qM=eLZ! z()?tzD@#|Ft|-kaHS1Q{@aOfkcS6Wl%SK8|l%`og0hM3%B9fk(>xgu30< zn}$?>-d3ELW6vYRHgbgVU=trJ`ME+lr)`Pn!(5{~Df@1AdUgi0uMlq|i=xC`*0O+4 z)4sxw@{`_Fs3?S-Lgljbly#AxQk;@aDNU)H!s2$y=qY90+Ud(7u5ui~uXO9j*UeOR zro*0E$X|93?Jn3w_1-U=&&;@)eb^){T~wMiD#M5c+S^k)sTd2;pMF-cnU3X2dWO8G z6nBv+JJomU)~QBsDfW5Q#|Zhj!eiSdrknyL9>V+WY%+d94owc*MjQY1Yjn=?dYS>f zQnR>*j}&Mwn27mPXwhd?&QF-1@xG@rI%LypT4&)+qxV#r?M4AV1sdyTjpBvD0?(xr zU_Ql)uZt5do!A%+FV5Lw8A7~@F2UuIsnQHiGK>LZi5btyc|GGPNu6qvCL|h$E$pI` zIN|MPJvn{NU|F9r=r`a#Ni(`qJqpb?FDma76fd4oGaZ|vr5SU>3^|!Lwkk(&8uW}_ zzA^%b5;pmnH7b|9T%1aHwdLR2?8&@hnVs)ZvSAJ#%ifsn(pCqum9O_OXOReJWPSO4 z9%yQn6sJHo@%3zG^M%Pan{V~6-Ma;{|o$v{=JQl z;(xljiETh3#gFTLmVtN%z@7y++6*9mv`@7wcXBwja)B$}uI%*hb@S!-t_JlnMbKSG z^L#H<`4K-UUs>3l+Sz@tv)h*EFFh1LzDKOoSXjHUP~BJS`8qkYl7aTbqJ zyIs1uF?LLR`9;w|s@8ooH#U5Z&mR-t*KbSJm9?eh-w}qF#AkS^(zwI_>i(s61Ux^s zk5Ds*)$qx1*T3Kz;kGMZA6K`js~f=o^198J*OmR)p!Bu=?tkFl`X6{i_;+KEaCJv0 zcCeoketFTNmX?-gLM<))ID*aEt8J*BJB4AcGTI4>Z|M_kWKJ=$>hz*pQgr)yCI^%D z7wRRpKs9L9pyEecqJ}Ku>m5UOT)$p`A0?)+;>Y$o+0WXx_t(g`6Hk=n4=m~FVXn%pn4+gk<7C}ljSrggR9X~4OESR%Pt=E@Y=Majc5FRko;-`Jg zbTy?nS+pCAMrUI(q?v?cx^G zpeuZ-W`9Wn;>$NU_ro<@Y1$f&mDdej%3b)Tn9of9w7^CeOz{MF)>*y@b%KREMG<4>dxw)Cm6XDZt)fK~9J9JpZ zig&uhZ3xZOKFp=}>4Z-yZRpSTwVi*MP4kXDOVdmB2zsl(sw!7hI=wVm?k4ts&3B*w+j0WaON{kdJ)NI8Tt&-Y>KFm`3_Vow)8`j{{?NPn3z zh_BAP<(51b$v#g>{NN@eKqw?bCuuWJSm$WO7#%u@4WCTibJ}Ap6_1x>mnzM_T@8ie zwVk`Fyl=~opWLVrMp&(LOap)B(Jvdq7#oer>B4NqeyC>at&C;Exw8g!hj?;IbsN?w zjFvj{uX<=IwH_6FBJ~!&ojjNB)OMbI+i%IyS>=RXKMS-Zakno$!YVu4dpp z5&4JNMC&lDG{WC7KrgRHR@3-D%;BFPYy3V8Bpbu8j}y+L7(X>1KQgBGJ+RLGS^BHu ze@J?o8lMy6OaBRkEx)rFAh!mOjQPz1-$h5*KjIe3^E>#p=p=dt{73d%M*K4p(%5b1 zUzGkvU`tjKOp?`|ju|x*6k&e|;>E@HPpaO~)2r--i(W3S7^AzDLvpm7zAXevH42`neoD zEAq#bxo}5#7&aBXiW8|v_TVTlzUn{azX&$|N0etISjR+aZ>s-?J#wzK?A&(=H%2@a zJe}~K5i5P^Z|VP*iWm=mCh{Lc-zLK0>r?0#@flIyclw0(cX6~=M&VUovXMyT>Brvm zeFpnY0rwUY+G3N?Rxd!#u=G43d*ZO(g%a7kl#`sz2G+>TheD3r)hE z#3ou*`Bh))A68%e_YJn;oQJ1h&{(!5bYg%`czS{lIXLuB^=Z+m;J$>HX2182rhR}_ry|wwVeIQY3iW#t;k15_1E==87;N@afA}eQO*YZalj-m1 zV*Xbc6IF0C_($L}n`rIxL-?bpZ$rd`V*Q^Iadj+zp0D<-`m**c{CI*tA-?KkuNYtY zZUr`d{~P{px%k^8@waOZ^M%i5d6l<6*vk6=&RzIWbP#EL{{?&bOp){%1JCsN z?1<2Q`USR|vbS@X)IA^TNA)oiZ1pAFoA`#mAY-*Z^?}NW37_)f#-tR*Cyk*DJ7%ETx;jt+H zDe=z*KN{P+_)0(JOWycj%@5C{jO3VTwfnd>%iioMK2`49xbYuL_`hfJAp2YWKL$Pu zysw0zn;&AnfUfEjqLaYyu~!=sb^SxIXR}AljlhkB*NOOT45uog8F>=&|S{`|K3?!qXDG8qVa8;9-$}3-}4b@&O{@GJC_4Uk_~Z!h0oH z^7V;)6P2aBzsn~25qN9%mY(D{NU+kQi&oM<8~H=PR-Z>RIP}7H>qL7l0hi(L!Y0}T zs6l4)}u-{#nRh4Sqe!3!h2ahUbEn_Tq$37q0NHyCaOR<0Ai;=*twwy%6!I zPofiH`ApFau=tmGR7b=#nAuP!e*jr_}{VY z_wWc`i8ECB4~Y2AmzZ-9HvfFy%fY^8Kj|xbn?9@JccwF`y?n(cI-m3pW^eT;ej_;L zpYuQR)AUuICgNLp^7(hf-!hl~#3X-}cW1Dbw-;Ep+olUYkjk(4W}i36U)a`Ts-J$~ zw0;f(Tm5uKz6bd7YJMQ;r~YR8KMO8{XD591P2-P<{6Z}UA;nMm_q-YKQ?dRZi+D=J z>%AL%VUv%I?*PvvoZ{UQJmh`WD&T=J{?hk?{x@+0pIYRG%U4ms>#zP;H?Qs zM$`>FlKpQyLKb`s;s2Ju`oF{ZfQFdA@Lt3>tn~NIr9UD`zvqWxypYcm?fswNKhF!$ zE%=(bZlTS;=JDTJ!~Jfvqx=WpUW9)bvBndvx8&nRetb#rfaSrz4G3&E9K0uCn?L`* z@>Ra|Nzcl62@mCc2i!g8w*Wkb@aYl120oOq>GNTy%zc8sO_4ACkHpqio@O5G-5uU` zk+1mI5w`gE!Iy70edWG8Jc5k$*{G zufRVz@_!up4c#*LYjimw>LdH@$Jk-^Q-9RlrYXw5&BE^2RXl4D@o5YkyTji#!F2Ho zE@7V@;L(xa1FZVqKH~LyWNs`(ECbp-kKL*El4-nCce=PJMDm`M04_J$u=H}m7?(UE^W_-^<|My&Mr z0bBaQn7D#f9@W2$c*55T_>tT~G4?_k;Lh@yw?bMQsPKOtiA)pt_GFPcIPm!vp?>Uq>Z zZ=bnFqRK~zE(NQ9jrWN4(hiv)4`c(8_*=72`KyCd{w_Jb>M!Nrknm++)xX*I6Y_fr ztTrg>x?|?&k{3jKmcg6Tzw|B)-nwgg-%c zk09>O8z1_Q^><;N+cK>2MfuzK@&NqZ!N#weK>3hY8y5*LP4MXxGk-4YgTQu|ff+I? z%; z_#X+De(K+8{@a2r|5fo1J~eaYB)-;PgTeJ|qA6zt|JXY~HxIl6;a<@{i2pn|<-eBj zTNx-+e`m6ZG`?tTxA8^%pB)CndPgC@ z8oc42%enru+v|TXSo$9l{kiy?A#eJNzctwSr5}X;X!r|_^UN%?&KtW<^M9+$}9fS3IFx;Gk-45@)v(V!WZ5$ z!MA=l^JB5KmxW-ukSnu^uDdeK7nFx6kKesE^Vbv9Cq&XuZP)Y@e{*okKRDqJ{(1Pe zf@~rh2Cido?OA;Jr<8v}!rz?EE?M)p8_dak+qL|KFM)6PiyLV_*w_5Gu=<34niN2|1s=!&PF8uFv7-HdF5*?ec|g8eA#Vbe0?{@7p97x;itj%$oFFtb%fQv zQ~u>SyyLfE}jlBt(e|S0aODo|oh2N2_8+u(faAW z7=IxCW-{T;qdvcQE%WCy7e~JQ&ohLNj`)?uVSax=#Gn2()Q^0GXjS~*zY*r&s&kR% ze-qeu^C;L?{?hC#dq0=pJ?;#OR?{X$+uoulXF2B^vE&{97GLGR1Oc{|DnSd+YDQ@*jpTM_#gr zv590KnsCKF3qK3vn_Um9{%1J~&7)xdT$z-xn*hiDnNp8cOa;vVJJ;QtmzeADva&(vl_JAmi0 zpXw3*-tinF?co;@zw;IMKUIY}x(=!RJjUMIkFdrc!%I1Fe>QxZ-|ki_@H`yljqUGe z;OX#HN1_M7e_?-eEdPJ13V#0ln&)!e68)YaZ2IznQ{Nw~eaL@|hj0F44qr&Vo&0o8 zQ*=A{a`HBR@HKcBj@Nmvb2=ZRwbHH;i@#@%-}pcBU(dx?|FQIy-@kJBVDvS<>aPqx ztv|H~t3UDA%JDZ`1%E)oKW(*wZy)Ag$6y<+?^kCNDSc6z|9apwfBDapKPus?J$)Z+ z?Md~a{y&6cBGvEu?9=)k3by)He7)n&;#Z;X5Oh=@5J|tj?9=?EPpY5#a>~!!FVEjN zi7$PxPW0{BC3A<7zn#BP{)gt$-#>}}0{Wf>ev?h4^yDk8{Fl@fyniu&uJ-U<%kUZ>&<@1oB!4N`VjC7Y$CPqvFy|KFW+kMRbJWC$}9bZ zjW2&AZ2qRPXTdds2eXN$fXnPJ6M*J{N3y@pqZRo&Kf4>e3nG72^}8zlPgpnPe-1Vm zNq>zmrvIwaUsd`3yk1EEEuT8$PEP;D)PH|?42zy-fJYNLKVtdsGWb=`B z#QF0Fqq#9fM~m-yRMO(0u@IBHR$M;%n_=@!x(TT<>g*eBCdh z_2{^WCI2#YWAbW$%i&r3lm8wGKlR`Dfz5v_zV5fQ_`e=k@R-A%bbeoTH74R44k_?n zwl@E(_?s8n#}~Hv?|!G?uaBsXL{mv$;Wa&??~cdb9?Zy~=O`kfQ;klEOu@P(9FGz~1-SrH$~ zLh^3pwdN2BOV;q&*B1P_M_X_D>j}u({AK8M1+Poj5Z&o|S3Tho5$k+PBjE)xec^i& zJoCnaUk_Xm<%JJN*6`uCF<%7B$BVuXeu3~-0lMpNEx6yI@23g=3w3FD{X4>ZX4lAX zom=p0Ase4}xGUKA(a0YM-juMl?=Qjf2MZ!!c)tW+G%v)r{@xed5B|DQUiGQ@mDQ*4 zv;?pI+k(3h+&jt-y1U@-_rvXYx|G7HzM2Dc&w^(Vz9M4rPaxbJai0Izdqe$eP9}Q( z9=_&>{cL|J3saO9}E6^(1aNOhKLWP zPDEcmQ}Fi>SbHDxr-Hwib#7q0#bDjPu`uF)EGqc*=szM>{3gO_`~_f(zviC{UjLy{ z{=8=k?sarEdkf39hCczTZiYnp6642>gzbEWu8%$s9v}HXc{!B-2MPW==^I{)j-kG| zN3@Twe;y82pBJgVFJy1|3*VREGr8V-EqKcqU;RV=()!Dje=Yd2nPffv8@xH8cLH=z z{f+)Xm}!)!gGs1~5T^+}X+5v;-PZG}-?PA0-^adN@MGV-or3%{@Jj@zSGVEy6FmR@ zg1>g!68TE+T=cn1$8kL6_XDT#f0gh@d{J z*?%O*t$q|=<+u2%|H)vhfAKZnH2yJP;@`nLSMdY=p;Yw#bN<=^E576{{>{{X19(Yb zd;4gvWcJc{Csk)*Gf@L4!_HuTmYg!A`cdCZ?cW=FTm8r%sQ%UFMDiEQ*{A*@&tI7E zUt6c>+xy7_6q|WP&!WFR^J28$?ciHDJ~Cp-3!D7Qe5z9R-;zxNx?{kyUysOF`IWwv|A}(ZO#yEa`7eRx4=#)LQ~Q1o zZ1(9}U-Z8DqsZS4JQ)5uG5(*xWx}cx(I^t@|^2AzvT$SN|x3t$#?rW5KC@>c6I+ z+MjH-giX}2e$gF}wb_6A2jTkkCQ15QyIA_N{~ln||FJhY$4UGtY@*v}?`j(BboS7F zjKAECU{&H;zx^d+mPq)o><#PwsGYzz-?(&a(LDuzFv@34_81b~Y0*By%FD3E!zQqe zhqBj=V6)e+Pb~WNbF5C6#{-zy--InqU-3C5UO7MdGL!o|NpC|o(b?eZ*vqD((cdfj z>qpx~eb457KlfnE?y-J^b+7Hpus(MDQ_|TjmQQ$J;u@a5U*_*unC^26{zzk`mG7=g zL;LL><39zy0e%+o{Z|(K`enzcPxIBq@cdE4wLdSqf1=+(3IABe-o}XUqQ01dxL?Qe zss8H0R)1epUz~DtlVf|i{nnzdyU(J&_udxtv;OuaSpDPC$p0A$>Hdsi5$pWGRfNAA zaYyl0c8fo(1$~60z88c0gU?K`T)E-l4;Nhvm}S2w-A|{sWcSkvW1m*RgX;dcTbPFf$w z^s;xcA9;26+T$nQE4p0>KNzvsFDZ}oA3|Ky-{YD#yxj*y_iN%duMrXu{%sClo8Z3h z2mi}7&Xcfwo#92VhW^l!@P`vNzT{^lc;9D=em%i3=1KOt2K$=5#NQZB$`>|%Z$8hi zv_F%Rg_gX|H;*a*l9=9AS;?Od*|uNc3%`T?3}1anxZc_)u-&O|QD4MAE81K9W8kHH zPVrXwBTgy$`OMuh{qMuJ29*O_Bo%r>UFaO7qtK$Due=jEO?|@>- zJx%%4Cq&njOYV8F>O>@a?a1Ejq4skM=~??)6@SxHi~fAbMm{y3Kc@Uc30wJ9zVToy zpD;_Rc3AaceC1z8Kg(a~KLg*=Ux>dHz6%+V}zh#d9 zPQri8m0Tn3>6}g+gk%prTWR(ZU;R7fzmJ^pmHvRFJi^B%`YAoFrA&S%{Q9++uf_JG z^7epl{mmW)f4?nZ`8-kW4F!L{(5s{&(syX71@)u;z}_A|5oZ7Hki@ML5SOTS-o-1O7@OLL(YBn)Z%F0;4s`}+r%{QRqtIuZ$M{$*J5 zW56c=Za@4R_>XKNJ-?yx`iC9``{;QG%U}AeSJj3e86V2~&qV%E^f&prN0l7n?(?Ml znkrfOmEHwllRts;T{<6S^|$l!CBNRC8RJX-``F6l|9MKu&u0%y^1nLKPvfD+0~-&8 zrzH4~XP3M^K9Ba7eSQMp?4$Mm*J~x4%*01bsSm#UsNO~iX5k34Q&-yT!92B5?`4=VstjvIj z#jm3882_vJyiSkwSf+WJa(U5x4S&NZzup6(e_w%&Ncd{@hUM=^gU!Ede7hHHeXaSglKTzvzmEBz{_~PQpYlb-lD`>Snfy6a=9chY z(IgjoXS0HDy9Wg5wyUY~=l<4;_7%R4u;E{V*C4;`BVSnKv0?eEtw?L%n4bLiRfJ!N zSp7lw$69|7R(+&c=Nb&l|11WZ|55r|gVXf2zO(dK<6_gl!FIkt{Zs2B>!06)e+qo7 zZ}C3@8(;lP^Aqb&`!`g%*~DLyW1{NKs@xvf-}F;{cfz;)^t|tQu$)YD^#DX$e;Owf?d4>-vq#-<)8IG@@MAa-<^v;H^--n+UfWIlK+Lns{Hw$x9L+N z;R}mApBu64r};~2-?zZ2eecWh&%(aOf0r8xwgTT5>wE3ps@%2U*JJvpfwi7ln&7o@ z-iEJ*e*^OUs>lQq);r=1KMCF%{@BPDo`^3tygv1(@o#k>n`bMA7yP@@_5tVK&6nA0 z|NJ{2d9k3*BWW%Lk;69lk+r$@(v58#=O-JTT>iSA?N7#SIvy|LXk_V%D(TmI<8$N0cK z%qq%1*o*5a#TmsP7ca^#=GDUGY*04IHTnF5ey*wuv)miGOK(=)l$w^hW^V+QQnpB6 zbs56?_D}G8o*&+5+4id!TSD#PhePSFw=c?yuwNk3<93M={*B^^eMw5G`S?_t!H^sO@ewXa{&Dk58aDsIB+G6UHHDW#=r$X-jMQDlGl#xa-QY||M~ zz&a-VV*4z+a>KGd{PtPar+!(VzOFpTm8G%r@b4AQ{bbxG);|Bx#KSL7eo6Pv3+1xN=5|I=TOK+`ESY=zMHn<*VB}K z==aqFsyDr8z}f>!1Gs?FP-vLYP;77w(kL3H&{r*G6O8H;59up@s8~KDQ^VVnI~QxS z+G({H*X~+dtl6km@#!osYv!R}97XsiZiw#vLofIu-_F>pY9iaW2zBKBh8KnpA5N3x zS5(l(kLpiz7tw4w@HK3lR~d9|7dJ>)`l;3(-+Y_H7jLF#7i6<|Cvr1yNS;F`(l6SN z?-yb%l%;t>p zQfS+RRsKr*R+`hjO)y#Kp|HGtV*Qf?&2pr7J``KE74i@Mrw(_Hdi%Gv zk8+{RtRZ}xt}pz0sqd!O*y~|y=4JEso>#r$x$-tASt%vb> zF5aljTZefoZRG{k;%~+0iL=%n;b;DP9rkKuz4TUZb>BYQq4Kq>kiI_i6yERL{yo)t zw{5$3)5fo949&tTmi_B#D|z#Vb|s^?6pstX*xQTWlkd^- zwU6+IT6<$J-yDhW3=UZbGkvpMxwYAh_hwsZ^}cx0kH$$q1Jd?Y7Wk8MZ{H1q#3dVP zu$($l|5Q7#YUkNG;3+h0IjoJ@@R^tQW#3%+@lC-?Djl`ATSfZjTXl8Glei_0v9ok^ zC^RwkaNkt4_oQ^>6Am65DI9i# zQQC&D1^R%!OWeP^Ilczn8oqzedVC?Xe+@eCai=RBP#UMVF!RmFZ7kyomw}YnCl4 zwZ72qOE&<0sV{uBVTCMUr7xea=-_(-Jn@OE&s2nOO;~r~Mcb8^Sz8HwT^xtbW?r*z zI|2J}9u*Wm$sN@-r?otOQD+_k$?K|PBT!w~>$VZlyRlp2r}JW;ZZ8lHTFuA}_!KHC zuIPSzgJ~;6#{zogy5{BTUH$rWNWNoh>r>aK+$ZGa`;qq{`i28TqIwXY!Uz=7iE~+ohDP2AqValm zHobTWlZ&z|aa4K5F|trDG%%+0EA%VgQv6-vhPB^VyB=Z3QramkQyu7!jB3Uc%inuYIweSI@;9qt-%`APBWn}DoRE=A6aPo+ov#w zKSV-S-p&e!88v|pNOeK+;;cHFB;CPNUSY0%mv4|!s#U>5ulNg3IxE54v{#VoWf-Rtq)(W?+|B*#Z@Z7($2A{! z`FQoWyMD^~{)^!zd3BJP^Et1|KhmWb$b4^HHmlTnMQL{7+U&a2gNFCa>w}lA%lME4 zec$?c>>u2&M8P^ zS^VlI+DSNSBInW5`+CZvFKP0sd?dnmG!q}7&W(iLiH{5t!NaU55k5-Vf`orre)K+R zF8=GB>GAyBVWqrAMh|qg*-_BFUFck{6;)JS}y;yZL-K_k7pK&nDEdAf*%66^;Hx1-b0%+;IPN}84=GbCnN$@C+ar^@6TyOLz4Rch^0YOSM#=SFy`Td_;*e#?BRhsF=h zhE&2A9&?@$=tV0T`HshT!(sS;K2Orh%nqscBKl^J)j(w>6ehRkoI)zzZ)#>}pR`)F zBT-IFSTx57V}CPeu@>-*k!B*p-Shqa-0!u1fA-HLOD4=kn)wF9JWw6&o^DYX%Qe+* zj91V5KBqambImlhX6@s~E|SvFxHYD>?N6)}sqcn#xVF^%P4*(2_J3w;mN2Ar!uf}0 zH>cE6oP}0bWjcGqi~_xQ^FlFAN8`J7KJ|kV8`}GH)Mr#4mzBA`C2k|7pNf2m66njb z!JkZ+;F{W~>?TZTYSO><(kITJ^kt}Qcs3zBEjuTx<(pZ|#X1#8R{H3im`J&p9?^gJ z<4PyY)tbqB4%f=>_V?_$f>!;yA4giX-P1~NoR8>J3nBd~9hGZL)|qSIV+fC-ROvq0 zU@Hj+(zGNPCD|z*ZJrux3XNzrMWZ&et~%}}D#K8@v=^Q2T=Vy|VY=^43Jrm463vp) zye1M=F;)-Xs!C)UT9GTr&fYF0-w`Qpn|*rG{<>3Z8f$toCe-n#ebC3+PZM}DTbZ-d zWloqXeUZ`$^C#@ejB0vKuP(hxolDrBhcY%pzR{VV7^KMrZf8ezR{6HzzO;l~-lWg% zRL(SX@QENl5~p(_(pbT1e6w8bLTiS>g9mq8kqWYtC&{UzIA>sUO9~ZBh0z4E|3WFb zGIJF1`%m7Bx6KGv>V}ed@*l0s)n4Pdt|omeS_Z$cwfIJB@$J@Pl?)n4ayn<-?~NY) zvbug*_kMa`AHV#of4Xva{d+s~6^23`DWq1P`~cM7G!KU8aVAV3F41FJ z$Y1%!K33NFJY+35q|OcL?uPVsLuR=lJ>wHClCyE$zjcxhG^WmtnN>4pYR#DDnmw9p zMmOU${Mrs#Pn+oXt6_bgC|c91+_0IZx7?MMyET`)s^vNp_#<7ysJsWx>_S2{CCAfq z7-Os}(IrNN7v%ViLcQ-E!(rE!WqMfpHQ0gXD=5;EE4uGqyGTEa1tTfnI4=oDNREC= ziI|BHz`nlg%g&O$r!cs{XSS(Nt5Jo*pAtyY!%EFwC`!(yRIVJmpVHGdrinkz_40q= z7|W`*cM}ox6iTcf&_>Ev{eI*_S?+(A2OR%_70xAXE@U*SG{zFEKKig7Smkg3BGfS{*-hEf zYYHn~SqSZK<4O`(M3ckOTdFLBs`c=~NMb!}{*VcCx zR(WM>=gK5Mls2{*UbVhZ&iWv%d#@TjSF!u~5I_DTxj*Iqhs%LJ6nSFFYM=hD42sPw$M zi1Fg#+XcO``O&pyYtP(he&y~i{@3ym;CBBxKcoVMS(9HL#WfPgCNZaN^XfL2tT=H$ z2kdyoS&<1dex{0L(n{v}wxkT>Av0$t&KmD*+MmwmweD=vKAb4J?-jM(WqEpBjtn+qbWFfg~pzwwpKThz_(J_3ck>?wxnu;Ty(KqyKfJ zWCZISFNe$O=sb7ZnQy#=^7YNj7LDzekRC__ePD9MS{TG4BiKk2dMz(HvfPS`CV!qY zo+Vvor#jmW-+o;7trh)dEnmJ|%|qLut=DyPz)gfTaje^ZU9UeuH;Lmz**EC;HtV{% zV997(IJ8Z!h2v$(uqnO8Ic)hZ;&@MFv`t3t{Tw#Ag&a@ydnKl)dg@8MR8DExapi02 zPfFyD%cVCtrdKBJ{6tRrrTKnaIXaRvJxo8vmz*76l1ty@X6KHt%+5NV<~tuen)HXV zy`R*_IF6egMpHi3qvQrjj(W6w=Pqk6*8-k{jJ73-TsfETAn-V3w59E!DJQ3VrH7T@ z@^u_<=D4=Gw72FQHn~N)^cI85#8H}KlX{!Q@u3`RU|Y&@wVxDQdMz=28M#-GTUmPZ zkdw})x8zd0TYB$vJS`tlylxiHw`;XGI^__e)mknHrZ46r#TPHS=nPzSm%BOn? z!knd3b-_Ld&AbEZ)G5VYPIJC>!llg>f8lY^=NsmkJYU7#AdF{SI_r{4*C|~e>H1dJ z8#@2G^9`(3QoBf3t*2F1*+BEzIH&b;VJ$wd@XTz!SJ}aaxNm>W3gk$(NGY{nS0>n< z*=n@ib-t@*U&~%pW>Z`Zh$~XtVc#&3ThiLTAIe{;rD&V8ZCn4C^-X)Z`QS1#+ERZ% zl=!lXHubO3V997pO7O%a_a2n-k-!%#BHUhD~ldayq6> z?Lgyklj5*RUz2O1KF3n;dPZ^Su+U>BA(OXX4e?dyrr&6=Y?9A+an8<5z-8pLrS&_B z_=7lR@$=;}{nRd%kL9cOlg2Z-GVOE;Wq5^c+zu-*hvo;$Q=9BEKZh;793+mZ25YV zKbgbvX12vUt?QItiY?!K{YsBAakMQ?^qZ5jSH53adh#!3he^br4o>woxu#rtlfag5 zzP-p++Ej1NiGHcvJdUSwEjeuYj?KlN18yR1ZA-C}$*Dfm^xg-nT&9P~*>UkyUXjAq zZcT1%uDmLL898lfITq#Q)b1Oj-1MYAyx-=y>9aH!&+>H~9~9#^6W_|KG*f?YTrPfN zv`b#jMLSq|SC(GB9E(Z6OrF}(@-|2Pq+<)?-XPLnL|9wTo!jao-(MHz^tJN#jQZ6P zU+qQdH4$!POUtYBNyg;z?ZVPiyG-R&4yC2-{iMCLdz@QxqSUjCSI91+S2+MowLh0a7S{Bqkh)T^YafB&&9>`jCvaRBler z&hu8%4#wv6lfE6LH#8@gZ$D<2hMb(@b(CJdeqULMejVl8QF{4yzcM@5{ky%L7cq~W zgzcKx1||J`TyB1=`EN)0&Wq)<{=c$(&9169%?FxSVi#^(_WfZra+8^_9S5Gxr2-x^ z`+=Hy1feLw;x>cn~t$7A5Oil~;LKJ}WDS@=fbW@yf*0rgE8n$|sdm{dOcb znd7p7WG54U4!DVMBU{=(T9Wvh2dC+!^WsJL*)-qxbJ+B=`nB?=>80f`IoVM5TbZ2n zOYN+5%W+Hf8=90u^)%1XM!Oh2V(@l{WX*FbvOmULhj%g55o>nFSF znB{BbFl^;eK00Q{Ej>%$Nv}+L+P=*n%*y3E7i{HE>upe6 z2Uz*Eu4pFDNo>dM*p{!^+2m9Xg$-Ldyxz%ihum1Owk63tO!}qq=YX4#X=F?N_@bPg z**%}H^hxck`be?q*A&yU`j`Y(o`y}%>dB5oAL;k~CkidE7FytX&YyklsLnJfF>_OdhsG-q1NH6bpUtnV*^ zpqP^MWOg|4!iQG)FC189=5!ArE!p_o^11%)x97S}|06ir-`tlz zdu4ax`it%UxkP`ZJt#e;Et_u*sZ8oy5YL)6dYwvKJKCjYSMED?HFa~!S-Epfp@x-gz6?id@?w2XMARDe5b}qF4T0^}Ubk!Ag1X_ohxZJ{SDW9KEmC1KANWn!Ra#BpN_KD*WEZlqD|l

ywl5W@@l)+OO3>LI!P7W9DY~Vk7%fVw$o1_OZS=)J5%6t*ufg4;^#=| z_OWB(;++t$Sco^({Wx3`)4_H+%-G?H%spJ>r=Xuv`a!X=mr63oZWMyvXT)HKJEgmc zalAc!m#vA177wElEFR`tBKM}Wd&Y3ZcCP0d{XHt-oD{X4@e)^@?uu5nuM4aC3pzyq-{?~>`+h>EnS9ckv_^DOZMD-kE0l_b(yoQl#6s!4 zLJ2stP`bEKn&ywMRVYbce`jk8SGfV{KQ^lTTe^&BqL$hg{ukA@G}pFFt!*jPwz%4s zIkhcWZA+=PrKYw;?JS(p@$%kRG+Z*K(4Vb_ttZ>MY^n#<+h#$GUmdZMh(kU5-|*9y zoh%)$gSTD#Uh%qkre}%l+P!XZcXeyltk zU(E}Yr}9xbE@2Z%voc#hHuT7PS=~gqL=FNsev+MEr z0o5a_*S@I4^drc}dm4C}aYSiUX;k%ysu9%}FphEaw;m4Q)i8rfy2ij<3f~v3Nev!aj@y-$M8VSB%3GgKFDz%Y5vSsWS&CWGZYm5&pDL9Md zKWh0l{l$qEgl|r0Z1L%bdmcM#y8akqlJMzA|Kl2}-GFL->l&)}>t9{yUtQBs-MOK< z%<+cm=?&Fg2uPoJw|ZTz>t5@wsCB(--Bz`3Y^|$X&DGVoHEU|?YHGXH)b?buB->A9 z<34Mn#ce@5)V5dp@wtU&3j0lwYOeXF*uaSXO>xa{iaowjio?GtHW8qpDzDO8-;-)C z2EzgW+Z!tN)?GX6dwnJ#l<2cW_F5S!x1-on`8Z~*EQ;Hd1nc4UjS_l)>K_UF4#Hme zlLYTb8FvTY77cR{crWk|eR23+6Zl2&1Cf6Qjzhj@?*X~g8#bEU%Q64X*!EMFy3p|%06nqKc>tp)j&q(;Qc~nC7+$q|R zS6KS*75yN_{}p_O*2+7K_rf{%1@nBACzW?3ApnG;DLtvynG`h!iM>dspC^A;{Pk?grM`_!HTz^Ofj&7P9i z_@2s3|5RSs4+H9fbuT z)t~xL506%qS9?-@Xw4wf`}<^XroNtzr+(F5Y)*6E!8|vPzV;4I@i{?K;lFlBcz<$Z zi0(cE&mjD4DICZS^#f+*o&C~(P2$VOBI&Pis{ck{(_j8p{?PpGj!YozzysMEK5CCJuYE4&_u*vcZh=2W!jSysH|)({ieEt1`0_^+;M0vg$v^*$koo7c zS7*!tkBs#(3;Yat{{-uuxGBCT!HWM<692Npd0#eV(R0FMMejt(N(YbJZMSL;z>eo&72J-KmcD`UNM=&w7%v;Lv^$o=qaJ|h47 zE3oLpUsRr* z;aho>{wYcN|Es*}dsE_DeXIW*3x1eQ^a}n&`sm&Q(N#EO+4iA`?*eZH)_ajfvi~sl zW`Fq)*~k2c(pUK{{jJUj{G(#|37wzom>FM9melz+=-r8qgUi?Rq zH~!hA_Xm8H-U}?cqJ{McSl>kvy^H?WfOiYfUAiFn4vkSFVdb6T4HEng#(fKXK$LF< zYrOv|rhhkhzasr1@{e8^=Jz~3MLDIQ2%!+Hm@`pUj+B7H-52lncdBH=yR8=mxJ z=-)s0T>LAziST6+-vT~`u-drj&rdsd5&6jni#`LNN7(#@@XyiR@Puc=cxwLt)jx49 zk$C-UeRQ|~qHxajf&kqE&xQW`b}YZ*t9@Ji1K_Lwz7qKxzYyN<{(8j2z?Y!UBM~18 zR(p5{KPT$^YDn*^0A25A!%2z*BHjf4bi(gMto$1ZTmH&VvX-ClEeSq}^ag@&jrl44 z&A^uac`paP+5fyKe@L{)s^l+=@<;xc>Hn|t|6l8WOVr=K@v^G&N}n+~dtQ~Z=dZ!3 zJtd#o^NyT6O}ZjKg7mip7ZUq#o0Avc(*IxOpC$d7#GlPPOr-KQv$ysjzV0b7zOdT2 zVacDBliw?mzaPHZTQNyL-`?ml75%??J@ogRWBU<41b&LINbni&@f};RWJJyHg#NWf zfKL30^flwpc|Z6+&EZ8Q`2E@2eCS&s_RLbLo%F zrQbUzulASLm-J1`+bbuZ*Jnshe*2vK;ovm=6BGICzX;b;cZ~l24zSK)9u)B(z!wv~ zg*YN%jopU#{3`hRmpzxcKlnd{QHTnGv`T7|DKVOFR`cJAj2uUCLJJUz~r5`wL53+Y^pWVS`{{>ay8&9Wm zO!OM~2=)U!V(q|u<`u#_MSObajQ7`vb0|7=*E{$Iu<{iB82$wCS(BjgfyoTwScc81zeeUXI3~ImOcUgtZ-Jfy-$~HUzwO6FbQsv` z{}{0D4>={uOTWj!reEi0!~E#->L8%;PHpXgD6jEN>rKw z{gdOuH+qkV{P~mkrVsh;?WOT+CuQzsc)cRt6}&rfyGDHUX_-Gi&^?i#ML3l|8~lGO zKmGLJZ?}o*-}>FmpRcp@7J_Aua^%nC3jM}}Q~CYDsr*^sGMnhCA7p;~P36zycq%^^ zTxJt(LHg&gH~%U9ZUI|-_1CG`&&HFrr)1t=So;^=3;7gJPVn*zf24!l`|BYR=r1N&2e4cXH{! zo}~W>gI}7yaGJhwn*PvhgZ@WEdyW7fPgrS)Wd9SB^bfx!bJt_94FlVq4E_+jX~fsu zn7JO<%f_Exw}$r1ulgMlS zFbJH^A7o#fKRkYan2){@{qJo{gMVHY%QK=S^JD+`1n))I@CA>B{@o|?W$%+n-|Q{? zT!JM(0-Varo~b-jlnPe+k-lmB*%_R+pL(#hpQmY0&0w`Lk+Awpip#V;!@cNlJ(26} zrK#6*Lwhp(5LkWTgDyefH2h5}KmF|X^7n!ze+Yd{bQ1m{m7j7(d--`_$@jAHkNPfy zuZ#BlJy`8yPQ*9T+0`HT6q~1kSKU&8xPKEslqft<q#Us|)EN)K3KEosas54)rApdtGo}U%?LRH&0s%Lx?+W%dV zzcn{LjV63a#A}iN_Jn0KQC@!UC@&u?8WQC#eqR2>D1TWHcLzuLA4j|!j!^w~>sa1< zz(<2Wjr=@*YpdYz>m&c`P6a;~SDlJZTPt%d>~|G_dUjzw!u|woBoc06Z#XaiCKu+n zh0ip^)9s``nb1c8I*;KQ{$J%azgAnY_N4i>?5#E{I){r}N3hozD_WKOZ=$@-SB5>w zH|L3G_phmc9gV)$KZL7j4=J92yx~Wl$ozWtcw|J9@0yE$F2_w?{JA;)dkOCOVOZ~I zj1;~7M7aN^(W7uZXd+?j-;eUKah;zyJo1(Pwu!#)!oLY@*Y`Kxrr^*0Y#!@(U$AuR zicb*T^I_({f&4~*zC7|zrhg|s;M|Y6`i`|oczfa+ZUkS*@h&kvee?DNu=UR~S$wK* za@f;J$Zv*zy`ub|!2G*MV*398{0h7v;>o)eyncs-=qWfrt_6QT&l(X+ z9+OngcT4_u@=oPvfK7g{y$XKpofP9A1J-z`J}8c)<;)A2`jY5cVq_>Mz<4~~h1 zFJy1{t*Z+D{vf3(5`Qs!<7@nG1Ru&KlKeKLW%5J#*!%A|eqpSiX<+rYSrLo>B4Ojd zaZSOkS`6|DzJz4pLU&&#$2jfrVRc-HN<0$*z2 z9<|7qy!uBfKN4*6TA#|d+xqm+chEn<^P+yOa|`|(*fyR&c_;G$;%g2s`U_ZdjV(N4 z{smTF92@b}aRt9#TQlPC;G8}tJRoBEZ`sEDckKg5<46UJw0JTqLa&pM`9SzfJz}2g3DnrmddVxwqidKaPy~9Sj}_K0o3cX=v)ZYexCE zz*mAdj{Kny7TooOZGIwojm4?_Pjm7&C-OgfuHffys&moeKNZ~C_P!~dXHc>2em7yYxBjFl8V^1fzTK}gg#1t9_*~Bo{_wAaEj^{b3vmtW z{Pf{UC(2I%-${7Kh{gXR;eYaM!Otgj4NcS$mTir%_BjEZw$F*+w0)idw)QFia}3!0 zkNU$5u=NM&U!uIG|30Bia+Z75krg#5y0`o${(oq6TiHkbcrhButZPhc$mP z{>gt0^OJK*Uff*>K8)bhh&4Y{*=&Be{GBkLe62djKM6jH;2Bi`H@r)I5&U^=z|+8L zZ_}fE&HDvE7kxD1&A@NMUl6g%zYo~TulTC(H2#0U7XMiI@>lnE;s=uaQ1+=jLr6vb z_$6VyJ*MI^^|uFmt3S!F4>tL6Ul-h~;B~w611Wutm1+7LgH8UJFAM&B z=FYJ_2$#^$u-1c;xA~^lgPJSe!6wprQ1}*)xGvVU=+9j(=oJq9qPFP!^YhU@YA^qQ zW%VWfcLAF|)vFhM|Nbn-S9wlFA1lv2G(Oq;DK^pW<)Xirzb>}N6T#;e@OP2lb0d8x z690saMGt*OduBfo8PNscbC4YsvG}sT@rTSVxJSWOpGr^I(p&ywI3LEc&(k#8)rEvq zN203rxqb?7LF7wc*)!EwzQ*+Zn3EB=fqxpy^V3a>e(v{LtbgH6&^5(}QZ~bn_AR<5 z;@kPl{W=xB|5Be89Rog{eGiZD8{DGIw2r6?XmHD8w#TN;t0|dHG@xN z-fdq@2A^+n&m_eVyg`-lI?ejSfk7lKuO zwE@w+w}t-xLV)f|@OKD58u9J77JYyDEMm#4epC5ziTvkti++CaP?TSEQ_+u~6QezM z9$)lpp(7J~IkJYgM?a;nHYt*S;!wpu32W|V{_2O%75%ewoc8b}JcO`ejmOK7uMceZ zEcstb__>I;L$NCe<0d`*;T8NB^3p-H-`|RUe6;%^hb%6-XVHB$GNL?w?(L$#zV}k} zkIL^Zm~;2zdCzMK_bN@3hDl)_mWv;@<(b_|lgl z*qOfKe@s%wSA1@Xsl-=)Oj(`fr}zg_K8r8>L&{=!uQ%~;otfjr@*Pkt`SM;B)OAyt zEZj(XI_E4B{sHl zf=$29Uj{sS5C~X<3#3|M&CE3=E4hA}T8C1A>l< zIJki;4G?tamTbmMMFzPE5lM7a|ta?OUssTVYyXiSeCf| z-=A~N^~^P=QSz((zW@L0_rGS&eV@;LE$2Gxy*}rBCe^p(8ItPq;*W6rWxr`C_QU=% z(iDBGUt@TmI5NU;K2qHB^DKoU{99~_WdCpMEkCl~*Vz|djBW4F@14B#d8E)qe?xpX z`9-TWhHJq$lo)i?L8WkiG&sUSe2rhmmpz?Z%pc*)viz?GHv8i1`tifapPtF<+SBxv zU%d-4`|@u$=b!wS{$PSge4YQyfAzmd!PfuO-dnkrwDvxl^V{7F{<P@5CI4wnAVfa3FPUNP16C4VG5lUI4Ezx(p~8Q99FJNa9k{H-hVJqq?mb4;Z7 z3Acmo{%-nurSRLa-$r&Jyf+uKhIc%+u{ast#psBXUtPaje*Xb~0R3gH$PU*R`xCeF zz6X1A!6zoZ(jVp0SNk~#p0yv1&osIE_$*A3*YU_R8VgJom!$ev{q9csmY(cC0%i#?I&HZhR$H-wnwPyVQ_m_Onl z<@h6c8KAnnlps?2?>YN9fBBV^FZ>fzdTTQn?A{c=$&>yjS2Y&n8IQSy2(;lIrJ$F6sDeKw!tc768fjKgrwpsS z)E=z7gvVz%-0vlS2r{(k= z8=ubJvMGGeIU}kU*Mm>P-}4;40b7Q@HmWI{-+8PVNceH&JswT^h7TFt6s}jSJo|0c z6rP3CMFI&=Lf`O!PsZ;V)=T_PfCmw`{(sO8O`*KjPyF-7G==vM&!zHu8h#7D-Qe_h z0GqzbYZg2!FUjlt?B!npo4m?jWt9|PF(znmuoxJ=z z#Mx7Qp9GeEZ^D{{A}+IC>eYX~LeZ;#r5*x1Z6sew@pkr2AwG9dvGUwObBeixnh665 zsVc)WpAD0IfzNR!v3Ot=b^}(`CU~GG8T<(m0jOgG&QvUntneW5hY3F}C*maUW zW?#>{EKDG-up2>jb3Eak%XzNMelJ2NS;>(H4t5MYqLW3;mw%@uwMS`G;5RWamK2D~ zwu17}Nu64uIyxC4Ci^OvVWq{rc}H9(gm=ZA`*x1SAO+=b2;r#E5UL~ZC>QU$k-Y3% zKV%TA4edSll;MOe31#p&0+T7%N_|STnFPtNEk&rR(9Wj4y{TxQ-BcnJvj~?Gpk83} zUs!n;!}6(|4@k!w)9BC&R@>O5Pan?sZ0ghn^yw33AM4XcHuofSlAT4c(Rr{QQ~3-t zB<0u=cb(jad+xa5n2ludoFsp?8kQ)`ex^;O!r`J4XNC($HAkFm%LC;x9DKhG{7488 zQQOM>Rry$HNhX$Hh=h%Fh7%?~M7!+suiH+^&Y1d@`gx#|ro3n?=|wxw61l`2Tq+MP zT{O5<9bDRcaB0Zk(guS`Sm~rk2gE|5vF%Gd_TnBjq62%-;yZ{$QaTz+p!Sf5YEjg} z|J2xU`1~@w!Q4NzfnZeWbk<&}$1OP8Cv1_eY*RecQ%8!=ge?)#YJ`;(Y0>82BY8ct zE*eWVR2aufm+!yP!u{7T(ylHg-!`qI7>Sy(G-LAXhJ5h&Cy>&ydp4pfFerG-#c(Bz zgA`g9QX5dc$LaU{mUhyW)V^XbK;G_U<`Dlcg7y~?u5RVJUxD}%9gmGF%o7~XGqFak zAFAcc@9|_#&!?4@#`Mbt@l>yYDphKGPPw_Iv1RBgm4X#4No5Y-rC!uHtMSsNxlJui zDii7SBCJ~KAGS{Kc)9LM+6?D;IU_!036^3t(!S=U}aCcI37x(XS6tFrHhuw4r_>X(6S%X@CSyk{Hvf3xT4 zw|Z{>R?lN)+bo@c(%^USw;E`CFU0i^Lj(HS#lOq*7#RjVtn+_!IYGjPU9f%e{e z?_y#nsryP#>4mYeot)JF#ra@TJKms+h)N@le1j@*2MQicD~gvq)_$ZnR4fq9w-I;-U@LxhiaQ)IlA)ENpcAGHpakPklKO zon&yhPTaU?ZY_FEElRCLiH3|vI1&G&r1Uf@LGAqWQ9b|Msx}qhXwqbv_w+2@=D%O@ z?tA4~e=pB^RV53JAdrfmv$b=!Rtb<%QK*?ZC+cZHXwrp3Y_{x~i`QK#h#QC*+(jyw z&7?!XSIq$%=79}0&#}7s6w!fr5GG{j7p)Uf0ZXrqbq+c*to0#0-}EMA>uXE_tBw@r zu|90OTlZoS>vNgjbnGcDOK(nwwGM;lo1WHVP}`xN!n&|pC&J@=eF@WBk^P0(nSxCP zt#@vElQKWF&V^4;`Iv)_!Zeq^4)R^$n1a^z(K;lCwT?uAp0I3boe4`%etP@!!8OSc z=HZv(o^N_9DhJfM)sz3;-V*R=WL1C5B%pz_e_Rg%CKZR`)&u9o^2c{+6NWQ{q^E{Hvbj%=^unOH9MGpKU9|T6C@>FoEx^Y z!uAhg`}?qcGi+Z7+qltqw~fQ}-!622I`BZ+lVBiS^x5@794|SEz58Cn>V%aEM-w(6 z^mzNdh7zIt&U+2B*vrr1(FEI_6>A8DbhIln?=W!&)RW7Pes6^UauD#c(WBb8^%grWjsDim&I%)EJI0u~qoJrwTvwiSUQa9aI98bV@f^Nx zIIeNpNad+(DPD;*PTphR9`6^53H$QVTnflb&(4Saiv3Sti9i+AO4XtUt44X&4kK`B zRU1qgNhmcJHF*|JnVjvo{pLX>jV%0EO9gprDCxB(CC7y%_W0LG9n-5{^Kn#mbd4=S z6XQiuA>K}yNlWq%7og41`O4Dp< zJU=X3-nIYLvUL`xAoH!cOcZoJ()yPb z;tCo+C(z&9h%0FQGSgdioYPkq3TyU%3niNX$dHB;DY-SlbfTglr? z?3cOpmS=u8XXDUZa1EU*LF+G>pIU!YKB!&>;@1=4R^rO9)=86Hk4Ua#1&MY(=t1zHz_Lz`Q`1* zf1mW^R}I@$g33#Nc`QATExl=({q_v29(?+yr}|P^T6wmDD_{kkx8E< zh%0Elb@Ov^=GT%8%TJ|k?br0CWO7q8JpFz2R9?P6yp-gW#x(pCb(fy}^mUCIYvE(Ziq)3f}k9(=j@aaY$_ zi?OwcFb}zQ&UYTG+<1moUuVM}~d= zbl$e~B&YODPx9}-EZ&`+yXV~u!+D|Vg zO=PD#u04h8)OiQhd5;;MSk@&hBA(#8PI-y9aKIr26GF7io*)Ov#N9`up+lEQ?Ji(FKhRq z%ZtY4#lYoUko3_wwbWYN+v=W_h0>rj-l6jsH4f@NI6Y@ABe1+EKUXv?EgB9l%10LE z!-`q8;^B?%YYMJ67 z5ZAK-y{pi(jom0~y;loOh`n@aNs*o}D*X7ZQc9tL{hEYTLU?zuc&k1C?%>IUkp$@u zN~#s?R)`N~KbZX@LK{KjO2q}D;k|6zS8{zn!sjVzuWSu9wr;(>@Gkf=(*?Z-gy&Grt-f3pdR`giEkQj9^Q#BIx z!+V*IrpZl>|MIUjy!?N9L?$DVda)Z}APx_efihirBW#14mA68C_plu=$17zugi34= zLx@JIuxr*P)K%D&1zWUf)JDh3O_ib~Sc>`^=(q^{HgAX7oU08zl)?)bLe zi@wdLacrWB+}JQi*}^DF+DN3>sj1klbhI`h#`G4u@#+GGVjGMK4e)WjSU{TBBtem^DB+E=o5RKi;OO3!6aPk1(& zP~WAy#Z=Iv4ax6{Jg z(n7wT>31TJ&Vf~&;$RiQwygAuR4v(51xN&XW-nmI|p zRD1CWr?2YXC-J54aVs70)9|iJ{B!aBFyiMVye<3_h-Ayk{ss2?zzW%FVU;n~Z|M^-dT8pFx-_CjB-w3{+5NKGOTUp+){Gq9C^cl9Tp z*B_PX@8tB?rE_luew-jud5>g&e?ZIuGB~!EZ4>?!SZ!^Wgx3Y1M%>z;^v8frUuy^L z3;uJG*IG1xC2nic$bY5h^S?RR`+pSJ=l^K1#MDLeT@gE zukl@V>G{g9@s+=mz`lH@fz5t@26Oe*>nKyv0)TX{O?cI&c-_niERgVIVuodZMfvA* z?JoXRz}~+V<^KxO^ZC0HZ2DRYuL|ChAktcRDxa$Z!dDu;@MR9)=&=0H&p#FTRz51< z?Z7^Lx?DYd>2C`5<*WAO_4V5judjDX=D+mU$n@y~UG&cYd;QOVy?*Y$#xI|~`jgjJ ze>Z)dzt!GuBZzeV*7L-|1G65PXw=-{JoUISAVzPGWMr1^xHH2UQo30R$R|;F0}sr4;qu^0_vIgy{Rny z7Pp-6+Tc5hzZKPs+QGCJ(t0gnt-ZDd@$u>Ws#M`qTl-diE&*G9l;6w2KEEno<4eBku*z#69iId|HYB1yz}cbtwr~1`27hY=?`UZ*GIw^IxPKp;QI-pnR~_GIsFtLL@FPZ zg)bkfs9ruAKgWQ5`>%qn{eRT^57oy;EAYKN%~K~r%4uzoc$S2Uuyvlbn<815wG`dPWtj^ ze~SncV=gtgY4 z%5PVKXpj5jxu&gBV561DON0JwRQ+UP~ zJ_MfOH6M$=>)SdxFg)RH8lnSQn@;1&_Q}51qU%N6`n%S0YeRHYlAjK~9y~0`3#&Xl z-o#<8O{ezvT=G};)^qlL4qxr>ro?{}zRGWpG(JgQ?a$Kx19&2MMB+<+Zzr#{O~iju zCrK#R@9}tSpW8TnwO>n5`l=t(7yh)v_x~)G=i-$AXTdka|7*gpgCCN7!k{$$F|^JjpKFMIoC_K$N|^{u&CtiH7t;HCKb zK&p=iC@+=&pdKOl;`nFcc)EJ>XT(q9^Pa;ayHNY861VoHwF~zG+uDU%tL;v(U#o3C zSal#;`SChOC)`j?}yR97yOCvCxU(YXRJVfqfCEPrhinXpO=50 zzRK69pVxn0{wgnD|Ho$fKg!atfPMK52YdY;!9M*{z`p!)|MUE>sQswEefmdc>8reb z`v0A!pVwcW{>NSZx?c17&(qKAZ(`4g(EGmy*w>$)Rr~VG)89PP&&%)ZkEpNm^y%mR=j~@S^4|Zv|9;f^&-L^4x69H$ zHuGQCJHGwsS*tJqy)ykTX8IpCeO<5k^2_TlZ$H~->945$G|>FqmDlxcls-;Kh=l#Kd=84jbF!R`g#68Z2Ecr^YK^X zp|Ahbvh;Pm=iAQ?VBdZ<9(w&RXZjyC{e1k;^8laz#4P>1{p9242erQwUW@N<*TSag zN$_#pkKPtxz&kW{;y=M3+K*q3rTgo*!5f30DMbaXb$krb?bH3N);eZ7)-G!u{~COw z*@u5Q_Gc1A8@?XzpKpmU%w4VfGm{s87Wjks`>lZgVfAItr=Q!;`44323w!+!;%lwu z9g(;4IOh9BSSvwoP^A1Hz~1Ly?`qAy)@J@Q__C%TUi3izQ{W+~e8nG1-56i^MC!xv z8*jyDgHx0IX!Ki=e>|Eiv=;S7;9n#xfAsy9`SW3)AMC-yEM31^`;-2MX}{7xC(~~Q z`~Iu(-1ncoz}A1Ie`%(_Nv6O33iL0}^ap49AJqT4%YQ!pjmXmX{a^ZLWa)oY{SWJZ zUjAET`QJJ7{{XNre;!%a>;K-x;( zHFp&v_3wZF&coPuXuk&~d8OY${E>vUR(O^8Rtalu^3N0Z_8OhNf5(5_FPOg88k7GT zb4A-R_v5kJ2gJL6@Rr1Nk1bl!+T82+i*q*~7sU(VOYzU+aqv9e%<=QJ$u<78BX8r+ z^Vpk#{D#TC)++xs_!xp{F&~5IdG<;X20T2&dVlEo_d2Y#z6YbLG7^1lU|h@N)Cj}c z?spNl_W_cB8*K6)Re#^XrLgYweW^Zv$Hx-mvHz)rr^5d=_@RVfgMT;J>Q8gw9YlUk zCa_v@_X~6gSBa|oF)PZpNf6MLtl;0 zkKauEQQ+H%8(;YG3~%G~@8HG6cHoCo{#F7j|FaW*5Ulq8WWp7&+V9+iSJ|Oda7u_T z(b?tt!{Dp@!bBVFrT<;_rhn_0Qt<%xw+>7A>nXSGzk0KP85 zq6*gar^alN@SoWmJ{bI6>}w1X3F}(L@ZZ7eZ<7L-_grJCPvT~OBv^Cpt?l^2#@AZs zI)7iC_`(xO&*KLj*4pZqq5oe={;6GQ@9;-A#{_-R0djK$9w%)&cP2#gw?BALA!t=53@xHWIk2`vF;$QGF zK^wYfp(FY;m?8`7WeE4-(a&NppG3lUu{W&tGl2GH`oiCF z_`|Lpuj_+vU|(e<(pv9dU~lOOKkBgZ&ncjuzVII%)>`ggcJjh6JFNU)=;VdR)Bh|# z8(tav&r)1zdH?y-S7Z6pjRI+H;S-5XiLh8{ekokL))Lm*!X3md|H5ZGthL^E zVJzG#$xHuX{H-M{dCg7i_2*>z`u)7u9|-pP?U}yXs@YTe*N_*}A8{Smv*6ub`a6M5 zUjAH=>FfM!`ttuz$oupe!n^1Xar(V)EQRlVm_j$uReTKgDlt2M$UohynSHHIuk+_s zq$yH;X#BVO5T8qcu6$&Tul!Ze^ZC{m)y{Z-eimY>bw{{_4zK{WBMnEoXZ27CZPy!%Gm`wB_r)K)jHbs*E1$&Q&WcWabmtP*Q7q)cz4?Di>eImm@%WxCAK0Vp; zxJQOHzIc9nhE+bEpX=|E@jpmk`MU^zEq}t_$?&oa?~Z+wKkTYf_)VhnDEi`+F;Y%g z{F69teBoa@yv=X;0jj&65FVD{aT%VR;q$O(*BjEmA;Y>~^86(kzJ>PGg`eTyW%w@{ z{#kQZ{nsxHx|~>c=-UwL`(a`wXG@UKo@~YqP~{HO+V)MD)9P8 zcJbYn%V8~|%@S6Ao+fVjc|7qejz1E8<4a!kV|dHe;@Y+QCVA!WcgS1*bpNI2(RTl( z{N4=T@~iRokLddGR%5eamB;tMRvudGUmc{rARXm*CT{w&KL%{}wf2dywU>2ih)00eB#6d=$FsNVe_cNv54P(kJs(m1E|xI# zKhb~I=|AvjDYS*@l&MJhyWZtbcqBY4KVkJhkIzNV@J$Gl<>FFjZ-SG*i-x6d*Pjik z@tlJ4Q~uQkMJgX*D<75LWnf=^!p47vk1M6CG8awY;^JcV>f<8u=i!g>Kf{kv_5A0$ z$S&m1XNa3WS}XGxU~Avvzly%+>-xp>o1DJnH_!0Y468qzy}#^K4)+`Od}#wdRMxdj zKZ59!U|sL^jWA%nzcH-(@V~G9ClAsd!@qZvy!bmHZ}lVm9fyxQq^$V|iqE4XQh)1B zde-0Wn8I4+VAKK$e;0kjiw-V_@5g_vLV$KZJg%MnR8{#W1`{u_;1<)tzb z>3V7l_WpY6T(HT@-s=vJnp!TN0o(QYPD|qRlC?M{>W=?+jvHU;SHM2~!C;^MG_X(q zIftb`DAOOB>8pKteT_Yaufl)T_kIMC^1nBGpZ)@{$t(W@sSm>+HT~}N*U!@bApidp z`Wt8Ie^C8*m;Q$-|L*iZO!^;3{mEb7{_EN>ilszpj_<{NC@B za+ohcZBiuu?d*;JarmE)UmrIAx&DW#zmGcpepG!uf7_Ju)HRGq*DoX3`})tvzjxq& zoa5g>?D_GplBIu=OHb|hza8$b{y$9lcc=eR>;M0xzOLWz=6qz=@83GN9G+EZJw?$^ zz>lymHwGB+B(C2LpSDjqyeqNaqYgSh;)O}R|LgHt!<|t*e9uM|)Sr)(_AQ5J+4rRM zMt>=;#i?)DMB@LLz429l{&}j(zXIRa|3^Ll{eP+cRX(@5@=^H-TluNH{PPN7eY;}) z@6c<@@q3R{-Z?%F{w?t4CVq}D;%06h>1~+!Uj=VV``C?RBH3`|2au}~x zPxgKao{RsB6JFyx<>GYY4^8+$@C@*bglFGVF3u%>Lc-q#-%5OV!hZ)Ve-|Y@`rdMQ zmaH*RB>UgW?BDO~uX10x_%!}}J&G5<{ucd(`a3`2>wZ`c-;aC(8PQJ@K0LzW9q_$8 zZ|s9j(dJ92Z}7?y78^ZME*8K$IpG7qOR;ra!ZX3Y0)HyuZ-8$m{nHbEg@>~n5!XGt z=)Rwo!?!f|Mp%e{DskiIc>Q0L!};U9B(LXzDm!}~c;>e8{rSYi7v2(o468kB{I~Wj ztorcyu?(+4evPmG@=y5IUk-ns_5lCB^gN>-%p;FtVtPI-`+6T}`scn-4(~GO^uP$T z_@#2eBhy0P$cUQ3XJPL_hmYd8;YYErwt9L>uN8Zzfxp_D4K(ym<+xUF!usAs&rh$7 z?4n^=IXrvZnmQ3(vtKFv9)Acvi1a+`W%m68;(6G1r7)kzClX$?yd2)&{k%^+@GI;c zPW0Hm5vx9qAZqoo0Dc?kFN^F#`V)wo{>r6>P?j5~{2cMea#+Xsm+5@)&gCW-r&D%j7DbguiYx8%X85H+w7J0WX%rx^P=3 zzVtVMZ~iYue+qcLmDoV?_c!d#U*U(zzhUWD;G6z>=pP3@KXtHI8XCg0xQi1OU+uy8 z&vSm1zk3oydY^C?`yV1B())yC*xwQm&)xnJ@r?;feoNwB{^(3z*yOk9+fYoycHcDM zDSg$qPyYv*y%RHg!e;La^v7+%hY>{IU$r5O4acPN`vm>vDvqm;MU8uui{nUt>j;Z) zyjKp-YR700fi8Hr9NtH6mhc=temI-s-$?jo@O<$2gr8imq3DObH&Xl3^Ws0kx97z- zu}tHxW!eMBMBfEJ3Qq17H$KXWF&w`z75u{q@U(V6{P!>f;6WRv-KJYzX7e zhJjlYM}ze&a{kuk^;iGkbe)!0ege>8bzEno=(Q4o=;* z&|1EFcXmLsr~Hi|?(???*z&h}TSKUiPo(;J==X8%rsk$A?dsHB zidEKbC|0Mw)=uf=_=t5Iil4$$nTdoo-WeW@e|$1r|Gsl8@akY|e>Z^FL;f5oL-&B! zVSh zcm$PUc&GatiZ{?dCHW)#4EZx$I;2$mjI>WdM)WNBE%v`n^5RR@^XG$&zYj}D%|f1G zDUk4+#6A9ghA-*S$^R<$A3#&zl!=tS{4x98;jLZzw|#;00rCTq{*S=p!KH+| zDv!}%E03Ws;Xjzmlt4Fv_oKd!OC4g?e>W7T5Z^pu$#3uEpL{OjpOZ(?PY!Dc-(Nf# zVX@5-4dGh#>4Y!nXb9);Gg5l;NB!UYQG4W)sNNoX|F)sHhP+*y(qD&VKh>Y^N_fxT zH-vBJH&5yBi~O0C|Lu-{9__{W+tAY=VX*qk(CCo#ujtpwe+d3tYcl5bjC|Q^1)IH# zk=MCpd`j;EZmf?Zu5*Y;cq?=btAD=R(%B!C{&mP%`pWO>_-p-d5KB#d3jJ3%3+4*p z`)I$0cRneW-?t*WnAM{(j3=$BJmv3!#LZvjuY`Tezw{4B*YxGjgUFjds_z3SJF9Qu z1uDN(o@cGo81CP`#W9i6)3+d&p71H~JU*TL7*_h*pl9jJ|A}Dpf8ggEiu1t3Q+`H& zjrzu(&S4_yZ^Yj8PyRzg@d&G(DkwPhwk_-$Qu7(`rjSMFOV`M`AL~Q zjVE4SWoPpG{ooq#{qG0m`{M+Wem}T5dmC?c{j?AG7BQjEUt12>PhW~K;PJ#gJ~6{r zIea#aYg7EGruHPfi1uUng<%cFtJL2Qll?z(@_m5%|9ryw-azwF+x2sfbw238ww({U z!!J3$^heQl%$|PFBdk1#)Ia~i`NjI@^3xk*TkIYAvVT5NpI(l2zBT@J=QoD$p>>WI zjXa~VI2isVF*wYm&WGt-w^b8E6T_4*Dh-;{y=~G9X8G0VrNg+k0TiGRHq_c zAD)c7T_1+;br`RnitI3ckH(gb-{0qCtmiAbhZjj-=WElSxTvu>5`1OKkL2}R6O&hc zUj(-LR{1>ww(?PZ=z9gL58-#npW)AbyD{|F6Ow)5=kdevXmA_6o3J4g|2VMmg}=;k zkH15H3`_rH6g}U~B)%ah z=N7IDe-p6rRX)ceZ{;=Nv*^QLJ&h;ge;;go;a$j*VfB}-@zwVi-3wX&5T8$k>wMv* z4y*sGFIxXsf7kVt^>^Vj9NwGrap*7D5J`U>_Fi9Ov*~Zyw<&yoc(#Ng+1mtN<3Dg% zV|YHJF--J2_(J$YBMi^Kg!?CaYD-fnk4+O+el{j<`PX>e0k-ja|8-dE0o+I#iiH2j z-mv`Fxyt)L#QCT3O!wl@Qo`K^jSR(?kfZwl@6M=8H5ucL@tc?CY$ z_|jK-c>R5`XME{D5BB=%kH#OpReb;RAU=uozUX@PcLo%nw|tTKEeY%Sm-sg({P>nl z;n{=kAw;i$TiLH25Z}>pGSm39vcp61$MAEbo5Hj0gA@M{@HNC&ckf?A6A=JpP;v{PK^t6rWSdIf*0g+JSa8oU0r zH1da`xJ2V1X+X-mwTp6dQ7!i_szcbXPuN5_?B5=z`0j+=6nYia zM+sw^-yWy?rXGY1BMs}Mim2$sow1>T0>3g0-Bk%`ENQG3v)hW<(~8+sirJHj^Q*;8 zRgJ^#Jxc8zMf>d1O#UA%@%XX5D7Ckv$S-r0Kl!13$}6!CPdbOFeukYltckFqzoudI zft*wp6T2K_u#Z%d{XoRj?x2#DeNn1=UK#+y#*Q6(>8Hax7S;QTDqE_$U3!h|chtnn z?ITp7l^u)9eMMzkWq%;eaffg(s4*-OgMHD`t60{rtWBX!vyL_QqOIzut;I-fU|^a% zi%9Y#j4>UnUD11h{Wo6GJN_3}^!EQPU14JBo>X>l-h6>u!mjo3#D{*}fG#I{^2RTW=FU81xSoAA(w z?fM}e9y-}HqcVG%8Sk=8$5rK{a0gT$g?L^Itu+) zJO7dVSL#wPZQ>8trlNLHp$QeOp`LUsk}^>q!lqrgs*UQ!-Vv2(urqNr6h+vxAX|y0 z*$9Ub8VFo=h2L1JY&1wHXUdDh57YIXJH%PO{?Yn)U$-LjVch(w}# z;*s~?hLg3b5y?27X)M|6_R?Or7kk`Z^!K``*g>E+OL(lyBMMEdvY&N?Qu|wfpU?7Z~0+ZsAl#}Kzx$Hh) zva?0h^4o#6I8vq^tk4$QM|Ke93xT*RIzpQXhuB!p(|WMFPm~*4?{;y9SG10;*=bMf z#;Ve^9<8l2Yq%rhFU_#o8OU+zm|km!M`w6KhRx2>Y+Yon6I{Wrg4QK&L9aDot>Y`Z z9pFWTsnxaW<+CWWuY7p_R6ZVCzAD&}UGt}w$xQ>R+%2DTz|t|i5IhB}u!MD@&CdVS zAG2$ATClG=w|bun_W78e;rZZ6$SXYK{OPVde0zEcJ&#r99-BW?GC3wT@Uje>of^mGYlWcpqVzppl;LMGEIsw&_QsieUn*;@x9!&b6xw#|Y|pA^`KF-prycC;bso4)It1BS0v=6V zp?SMbJ4@X9-Wq?F<4+BlDnaX>i>48#5L&ifE5s{`6XdVutA+K(efrbEs&|u{pJBC= z`S9luI z5LE7Fr<$cdDZ_dDdB1!;LAkcbHbM2iG{eil6?oRZ-Y;LRuXnXGI>Qq(JO!*gDoi6? z%a`nXf1Us zO55;4a4T40;nr&vPk`HqE2ur0o%wHM`O4B$`&o|862d_IX~vGnW=C?qeCC0DdP~5g zu~8w+p?s!cXD)GtR@a_8vhq+nkdA`Nc?#{aN?hTk9o8z;{%Z;Q_AGxY9G6cT2Nr>= ziW7n!coK1iW!S0WPX}>@xy~Q?tuj>@h@BSXl#hV~)$;_f+38^15=|paA#~{%S^t`p z^{*P~w4tN$LF4N5%+8z)&&%w#;$ID$^5+>>?{hP~74?6!Q^k%i=SkRa;h2K@sm9Gp z!YX%-`@&XU^OHYSj(I!tv;02+9*sZ=t!g*l8jI$u~hSGlg#crX<^3Ki^{ zol2IEwhSxZ@<-t%^z!R5vokl-n-8{pO+#<7!^-Cq&aTE4v$GUGRXz%8&&x7gI6JaC z5Ue~~`I#N1@9iwga0j@8o`TX}nqhCp@*%&w%ZKN`gdLB~&cZBx+424@$?!8^^H1e& zcDl=lx1)0P`2F&w_Tc3fW_U5Ujj~ZtKYa$%Magh17TJN})u znWRlko3YyLqs>m*RFi1hP0+Ea+CZ|Uw&_TZK6nO_HY+REFKotLO>ErNt*ic6kdM}j z;%#k=WNV0l=AqnR^c`9(ZD{6sb%S0y2o?>!!bZnh6dSJ12yOZf?WIknB%89ezS-JY zkzH<~jHp@qgSHjL+O!GOLtKh}0gv0+4Ae%?AVqriuV=GGN7Lk{#(()QCO38Y4-ZHh z<2DE6M}Yqmr}HE6SgD6cI&X!?_&xcFKNs4K8gohn-Gmu z4ZBL%hPh0;?0oJ!EpX%e`5EDH*x7L#t~=s)n5P7pQ#w?b z#5WEwZ1g;DO@mg5(SgurD>}xFX^FkGRnU4SUnR7I^>CW^Tt%6^Y}q@RN_gcj4T$H? zEoip{z{@Z8yM%bDKN9_UUe}+7(0?XD&-qm%vSrWdL#b$^W-Q-OinfT;faVa|3FwEp ziaA=e@6LN_!cxKzu%7FFzajp0#=hThU+KP*9oJsC{>MzA`JddFMfewzUtK8Wz00w# zKt7G`JVds2M7u}AqF=Qsqeo- z%^yrM2pvFaZo~fbp;PemhJL4a_mOn9XRy9sd^+KsXf*2o zLlV|{!n$4v?=IQj#zP~u(dLvlttWgY_)voARPb5st>5p*%cQS>)v-lqV|)SeFGpCM zi{HNipObKz#C{9DFX7wK|0{TL!q=m(yd0VG+W{T}{$#?dp+6LSK*G}3*kbyBfqwva zpTz&a&E9(J#&J~d%S3;qf%BTT-mirZbogEB^IPD#1d;HD=o(gg;T2Ao_Rw<1PJ0A|9Q^I! zy_Wd$Pwm6E=PKCzlRuXt>;1V5Z2r85;*DT^(=D3aC+7FI2#Z_5%I~a%)t|N}Zv9E} zYTI7^vrbjU~4mG?LBpAvtojaeInydIzM$6ddrJ;N18u}>PeW&aJ*^7(%gZ24Dy^=#DV zSN>UkrN2q0PZsL>GxuVBXykud<{%_{x@PnCn!w&3MbyO~@w`8u0(*VMO@GxU=DY{% zdPQ{2l(^Q)h&15JUwt3%^E(1;_QlutY@V<7?D=2DuIH<58Glteuln}=1d;N)6>;zH z)?o8j>Fti3x2L{j_N0Fd*y~RPoBknm)^_k4%CtBUu|vm#P5JV4XodEh}3@HX8*N-V*6G5u=e{7iRs(pij)5}aWDT%u*qxu8-%`% zf6D**V4weuz&`)7<@3J~Z28ytCS9@-NcMF8^Y)asx2O8^_Pzo(d-6|R-Tc$}S{GAx zzMg+lT>twn-Pk~Pg1^K5-h^MIaP?cgQGv^Q%~RsH6l#;AAAvQ#%ns;Z@e7Ing~S)$ zmbl@M!`_b0p2|!4_2o4gY~}T*>AGL-{0=OP2Vh@*H-oMGWKZqQ+iM4Vd*^{C5=651 z0DEumL9p2qe}jy_q2nt(+4AYBef#t-16z6zo>_$7!`b;wc<*xO`R)+LC4{r4$I!3z~0`v*fx86 z&t&`n|0SJ29;I^H!SYcgJj>yWhHyDu`L1CW0Kyh`%_t*^(q1TISU2EreX+*1i}1(q)~yFk*PL(KHg1pgN} zJT_#1)DK9HeJ$z#^?u5e_+AP3fIo<|hotm{&tmNJ_)8Ag9*XC>6R|1M_xoqC-zOl_ z0aGRQ-;ewk_&RXv2I2QBT7T=QBtQR&Sik>B{wxNMg=g*gO$u`l@E-Ue62G0j=c|5= z|3l;_Vry()4no57Gdz^O?)kfA_=gS;`blgr`$u!d2=G+mhbKH7`)V)Spd%9hcJ`jH z_G0`QKaXYc8wo?7`$haMzxtTyaO_QHuitoyWbbK)7#m!SVOqK7s`EcSZO3dTc zkoR~q%EIFxP_~BuC;nYP+TOokQTK-LZsrFA_+#xw>oLv(Z%h!W{|&}J>wiB-eqHRf zM0TO|9w&kiO896BL)S(pC9L|sm$=op))N%|bmB|?8`w8_@k`h<{<93s1CgDPwB{JzwLK@vrA%gP#P4XBv{%`faK&^#RdodzZrX^-d9n_1yIQV06M-&+T_$ zE3aFS-vs{-P5h0qe+zN-8IkZa>n+{J*tAl@nvb5JNY53rF&^Vl_dZ7D_JjtxcSq1Rm4N_L9`)!@sEPI5Z{o4)fcQjj(&jOzmwnX5`RrDWPe7yU-EDBua?66hQ=QQ{v-S~ll=8Jl!`0S z*KdABhoJv$;y+HfKMyO^{sty{!sCe>9toz2)bCe?56p1Q;s4w0-Oq)s%Kk0NK&17S z)VHjEYdxil;jNVTeZN@>&-!fq(RxbKwffR}M%==7S+D3+@Ir!U8GK#uzZzlD=lgMe zp%)Vte>2DL$@#ttZ(KT`uK^wp?$a+SYzRJ!=%o>c^XDDJ?R>T-Cxbh|TPOYfeje9b zYEAO$f7=pQ8y8KuhV>cP-yKlIZ#gXa0r+R~8t-?8Z|(hg9)8>k{$$c$?N<@+lCb!H z&-lW|KY3|f@1d6DSH~ZnKieFZtl{T=8|MqP{Ahf+7JenkYyFu?#KZd&_F7+SKlWFp z{-gD3^n34ZoV=cec==Ya$sctJ{R!CtN&Y6-~Z-+m9iAt$p{;p?0t((iGFZ;X)h4)Y4Ubw&+zZbboMg;!jL?orJ%$Ryo{{j7?bc zu{}+BaTy#)e3r-w*Zevld?4j#@;RQkVL3cMVj6=$>VGd`&-$O{gIgba>eHe_kuR`! zJ~E=y!25$W2chWr7vuVAH%A!o1mYg6|9E_!!`IzaDn5y=2b2DN!{hv)Hhw-2UI5Ro zcZJn{J-pFeEw950?n zpI@KW-`5ObK0q!3!x$!c&7b-Y?0+iR7yk&-f6U=SdUs;k>qlaLk}|a9@N!XOzgwzb z%}4!LbZtIr`L{3F{8N50QP02p{Q|gx4UxwCSJ?aUyMq2z$-eYYa{8LTnkhGm2MMC~ zBg)0+@L$&iBF&%rNA@Pz|CA9>5) zw~uChDP(U?^2+c1#C?9xbM>qIeh*wp@;{wg4)-&cB&_+|e@tBGIFaUK|0#RjBZ=hC zFyiKqFqgD-tohsrA-7kMj{55m_xc*kz5cHpmOl%?-XGcX{tN|sdlxu;`SYs7vZwQ* z*^_@7YrTI*fW1AHrTMq^vE`xzd?i7&?oZv?>pfC zlz;z;{BD51KEKNU|C{prakjsYyZmHN<>%Yqipp;p^45OT9@U<$J^m;B`zYln|I~l~ zQ~qhaj&rfEF+imCI1XgLRzN(zWAdU4bv)speXbm?B`;3+1ST$$f4YVceca`z@gVOX zn~;w0A9KJ~pBfMJe8;fHgL}a?9=yZ#;!EJun%HR1`Q|nDcD`wRlXq=koijy0+^<~x zlkwP|U;l1)xwwP#$+$Frf86KGyLk9^Huf)0_H};JT$px#QvTL==P%*kWO#k#E&tMg zgM662&To2_<JV1Ir)*PVZKe)}f4f{bWYPTZTax92f`U?RAqz-NgG2|v!>W8M3B zJc#@mmc1Fso4x(6j@S2B$QX1IxP!VnEW&_wZRc^7{2SK%OI7$kAWf0V=L_tuJcJ+1 z@Ov5N7O^fbd*6a@_B21D?!~`E5DE7tKZf=EQ`bZLM0Vicj(^5i`X6*X8Lk)6)fgrc z-T;3L5C1avZ{SMc@@>xo+9z=?ivnE^K7sVNNci*{n9rN|aYsi+_Z}nooZn^zHe@FYhiFjqpdL{0#hV#Gg%A z>rF6()Sn;k3V&~~+PvuH7vlVxO+6yk{Pr6YwfXJGfFA*CPGiy0;6vG86cEq3=x^5& zR}gh)Z%dAQdyj&>y;H#6-q*oq?-=~kx$-+b*+5z^;d=JAUcz~QO6x5o|0S>MQIpsD z2@iv9y#)1-4)m>m{D_92_vH;~{1pEM$JcrVOi^E7uV8u~=6416UKt^1z+dC~u2WWu zcsnq+sG*E>r2Q58A9zc2ME8KT)`I$^=%s}3jIhx92YQ}i>mSq_8bW*1GhmVUx?c2r zJumkBVPNB5xK=}$yH<55l7H%NszZ_HFW1i|&WSM0U#?$J*!f5EnGbOI=h*8&cJ-7W z;a@te`PcRAI2BKre|-{o?POo`uY3IXkcRNCb7JDZ@^#iTA+BczqDR4WX=Xu+^egan z*xM{&$^QXt^3Rb`U7J=D|C(FkwU)|MGdmZ10N(i@Tr7fL;UH4zkhf`aVv#$Ly{lF!&yZW6Utja13)_6?nqU2J#uuAkUGs_S-UH5gX@_oJ*W|MF*y^GA56RXY6>{uQ>&U+KS&e_sCr()awE8BdHa`9b8>uZ>e4XeJ#A#e4q{Bo)cycsx8&AYnfA)O!UE_a+#w%>++w*xi`!nQUPWJ8r@2mVcd_DOw{096@ zsNeC4zs-!sVl(P@Y{Dlq`R)V6&nFF0ceojz=TjwhtoHa-u(e0c=N?YJobyD=?=c** z{B(zPzis^cIe9$7$^L+-UR+j*&u_O(_!zM6M{5b|dkvMv;DjZ=2!Bjo-*529s(!tt z^;kATcD*F8`Nj2oSl5&y%~$?C9DkAGml6oISO5v-i0Nu@CPQY>JfL=fK7nUWxn|R)4$%S?iB#kL~cSJ)Zje z#=ze_nk&>kls{`9n$P(~cncE$^=X_R@OQ(6H#xbXScd%i3G00NgEjDvG(;NDj-v7g zM_5SyykVX4&py*wG~mBouL&RPu;$O#_%$%;i@ycwd-V*efNlKIc=T3=_rkvM zuWo1xbJvd}4UxW&D#1TF!tg!RH^74v7XKjf@A*%Hjj#UpC(1*8Or-w)753J@HNMK8 zjjz9bhdBE4f;7L61M>>I{(YOEHd6*87ueZR6M}#nRw-tiDfer?e41-ptPd z)=zxfn;z9r9O~?a=&}P=o0!gZ4K7}G@s(WMtINM_-GTOa>0JM<=cS1k%PT&2D>}v$ z7w93-`!78_+&Et{axB7Jg7^r%1C!iq42vRb2Huyz`)-Jt%xkQ7$XA4ZDG1 zt0Y{qidWba4PmQ$`0;{97bXW=^h8S3vX4c~_m1EJXK5Mhik@J|B8r+Eey6B}}G|cC0b^p(Fdh@o#L;WXg&o`=5#4 zk^R-$YT~8~DC_zWE;b~Ps#ST=7)CkiE zQwbB=z=WxU;|Yh;?!-TgQHlKo#i8S-!LIQxgdk#=tp6@S_`C)-ZKb%Y#$7l#u&uEZ zJ<-sXB!|Rf`Vr^w zFrCB3e7s$>SBh$DQE4q&Dn)Z^xw*CI+gdbNigIhI+**`c+e>UK)uOdlv{s9X43;Y` z<<@2-!@I}Tbtn){&EmaMrSgYT>kXyKH}yZ{o6VIw3yy4b!%Pmgex3iZtzU0!y`{1B zhN5zPOUv~w18>s*pqu&+yuN?D+Swa>a=wWRiqgkN!Aol&bC|D3snIyY{66zDZ1Xc2 zU-J=pdCdppvDuZLbWE?id5v1&D`?&#%`;RXE?bkpqA7$bVa}MfLcb*%=GpUl?dW+t zH`%Emt9hsvWp?F%8$5;i%)?~($DZ{l44EGN88c$e_rYRuoaTG2sRN?1lvvI;gx z$gZxB0}Z165o!wS64qmgBpgntaRI!P@Z4Sm?Q!9Gg04k}p}ZA=6hn|L)u+bGS9`o# z{-6BG#=q*t^O<-Z|Locxo&b;LxYC_KJE}4d=zQYsgr&?6xfDE)Omln5&2MaHDu|bW zli*uB)BKCRoh{7fV=QP#N=I!}{dRPQr)Ajewle>iw>uhKadxI;^Oem3*WgzPnlDlF zr?ud(!XoCkG`n-N`8MZgcu|I*0k>hZLTJbTX66g^*z8W?xc9e~;b}?F%0ct*%8ua< z%55rm0%4&WcQpQbyYn)v@xt>pu6n#A!{+bO%)ezBE>bAyrdqR z-R|ZOl#YVNTa8P~w}Qr3jXPE13Yw>ME_fPog=SZ81JgW>6^_eJn1@(01kF1)AAf4Z zResYs9~7xQ)G^29ugROg6Ohv}JKkNpGJiEMpXTY49fifr%NO!X8_V0-)NG#F=^35_ zu3$q!`Dw*}OGo7*ziRNR1hr@LcPer%98=JFQS+l#h%3m>a%V^W&dcmfrF`chtDt#A z&F=iH96G>0ohQIbLqX{*!p4U73`|L*T7YR zF9*$s?ENdU_N)1?E9fZ5U-d85*+7EEA(fNI=I=|H9nD898w#?c@@^xp{A%1(`BsT5 zET=q0-IYTdaw;1upMm7dr>}l63BJNI+VA`<-y9BoVhVfBvuplNz#pZjp!P5&!z-HC zTJ=5+-Q2GFskhq(t{|tNa*)3sPXo8XQ&79h{WpKru6#Ls(0K6#>BtYC&imONjhweD z|5U!x)p(_G)Z-3t6`sO8#vPH@H-DA>zf%s9QTeMJs>BsEo-G1TBCeo$m(A`o9QWxh z&G1VZUY6nI8P@Z-aP8Bv(iOe?zR!PsNv7s2dT0Nz{E@mOX2Ub1v5FX#EMiwhMMHb9 z<>3yqce|dtKt$q^vK=Yvkth+i@>}f5U%Imz_mFKEjEhl76Hgy%wAr*zm= zVsr~S7O}Rti#Z4!jwIT$ZxrcaI~^a{BXAc*o~}95)tpZ36Q7k)0!HnzmV-i4Jvh`-SBlGrH(hbb{)cb=?Q1vQC~`jfR^#ie?##^fk6I;Q zPk-yem(^n{h#UuhG(~W6k`vxM!^f`xpP%v1bolG^6ZO$?sb=n^z%~cJmTKrh_#?qh zvH6BM0?*F)voroNj(;a6SiN-_LmY31BZTZ1PvH6Gpo5 z9##p+f4!44|Gx=eI6UNr|2bOMB=G$bhOPvU0QZX>xmX?ft-y@3fi58PBZxhcI=tot z-3)B^{&&FNAFOkW=ozryS-qL$7iDd}eWP z!mFl}$@->gT@};9)ztuNPb2p zug>P>g-u@h(|ZETpYZk>-V0xhuQ{K74mSN2;ZyfuURUfbB8Yl0W~mR~9}vF{!QU5% z4@p>aLcKwp(JheXd>Tx8hbF8!Vuye^tp$>Ox@Z^sG~q7xKMD5sKMnTwzX103zX&$_ zPwo;=tygnQl;g?U#`mK(pb4LZ+y~+F9bfsE|K2~PZT_jeG#*)bX^znCz}CK0K5F0I z|J}jnzw9pnd;6*jvoHN$W%|E%`r_+1!QTGCuKe#gB)0FLmr;T=r`X2qR|$x3PT-$T z-1Bud@ch-V=lP?sW&G`j$M$(c8Xva7k(ucCPFQ@|Grr2}0`UC=k@&pE@50w5spsoi ztLdw})E|6#Y5cSDT7z-%=U^*em5;vZ_vJGHY<%_a)sa7%Vc74` zrh%_ZT7bX#BbTaZNz6KEPIoQdwVKRvnRgBL(f0a@jur)z6Q4>kq+@m<))=PS`a7JO0iS94-^fUQ3A{-ypymDTI-3pD=O;4@PDQ+xXq z_-h1FZ5_S=VSjc&eDAO_-)$2gpZcflDL?lozUCO8OZ?9cf74<0k0-&_KP0bjpuGI9 z8750z_`lEao|*jd4r>ndSztd0`U8%y{-g21_aBwNwHLMT{lHe9d3#s=UI^dU??qs% zf7#y}?CqUhZKfbUIwmCv2T zz5i+t=D+Me2KM$J2YdT!Z{Ge}U~m6zu($sX*xOh8_4ZE%d;6z>z5NAXZ~sQHw|^7Z z?DxDR&Y>$A(XQj;{o$7*EC#{9fcR|*OP(RDJ_n1gH%|xK^`@@R&H&r>n94_KdH>e| zd;fKP;r-Vm5bwXf@$&xn0h|At19Nlq{hXS+gZ-SEyMkpyq&YPYU~eC`?DVC0J*#U5 zk>=QZggrm?3Zyw7)t^==NBq}C@p{;PQ!9KBERWC6@a-A?rNf%TQf09hL8SEdXK(3g z4$A+Bxc30CqR9I8``(#>At(bTP?QUTf{I{3Q4ALZ1tTIThSf1(Mloj{5EL`wsuI$dU5yL_j}*}|3G)u)8|y^>gww1zTIb( zo@NXp{ojb0UOp%n!S)TWd|rMJk7AMBLPL%tzhCGWN%Ree z+Sk%c-{kc5^W(KkW2i*$KFl^Ur<$n@vA&^!u?$| z*=1quOS)!CWUukZ+rI;w{eLHa>f@4&I~`f_zM%O{quw~v!XBA-}?5zY=2ePW4cCcXvxGPWASB#*%l z5)KH&^T(P(rtx#F#Ik>!xVPUeXFnY_d!66W-crGWi z@>@oLER9cOyVp}h3)cDS^}jei=%IM6*_>^Xe%#zFpe{Q_47>{U@qC11rGE>y^y0o8 z597VJk3RM^rbxs)WAC{Nd(Rtijq$v0+m?J#`)1ZV_nVTh&0oa7cl>);=VxEal<1qa z_UzxAslAuR`#b$=z>cIFA5t^df)63SPh#m+SFfLx(_fR*-|X}oAA!$OcwDNFd~#~+ z>cTdOd~#|oV8?GX_WCBsuDALod<=YbG|yVodBxWzmi^wO_x5aRVK4UfKjrN8O@+^2 zZ1&5XT*$7YEX@%l;y)33el5pe{P>W&Rt%8lNryi_dA9zj&NW|K>@BOyh^;Fa3E=->#u${+q)-|A7~@%wK$@OTYNE zLZ5y0j2%RY!^VC_>K-Ild^zzjOTE?+fAYhK^;ML_T0IrhnB3 z;@J^=Gi>F{{(Jhjx7RoM-hLg}?AzZ^2=n3jq>+3;dhM@$Q>ya%=E}PSy`@+AN4fH^ zxDFq0D9l?eqC-94#a*twn?Nv$fXzeCcW8^bC>-#0>f*wTN5{!{Gi_&jw}9RGWT)c7B#eRd~)Mq(XLoqJ{4I zP2c|B=tGrhaggoE?^^QHF_(xnmoq*Z<}>o}n}PK5*(dHKKvZ6*>gMted#e!2t`Ay{ zD|{+(%TGQ8KZaXThD81OG(zjoZ(zTTYrpT{ePE4Yl5vZpk4oJ$Nj^IiAFhPQ2BQAt z{{V5HKUJ*cFMH|DUOpBVk(aKyl2bm5_5Zq6Gw(^%^9?!vGRK>dm$#qdcrp2}iv4#f zfAN$YznNp@=k2e~@sEznOX4@*wXMkn(f;g8X!V(ZUdLlar`P#x`fJgveR?|m4^F?$ z&zvvt0Lqly18+d6b6k?=rP-_Rd3(>A|8Io;@sz*j|3|<&hb8ifE7lkwk-c=@{(0Ej zi_Ly~u^65QTmL-?*7^S_eOU5G_zl9h6MqZegT8G|PzOCzriy;ks$%vf{BSy+KeR4} zd-=L(9(?2~|E&`D!H4ZwxMyPdxYc;SS7Q0N6|0X(^7{MG>$euoX(W%sGpVcQM3OB# z7P1@R6(VMTLBASxzcBHK@Gr2&6p8e$sJrPKslUcA9aBk7yU06446M1iv3&LppgvnA zz0%`$p^{$u_sHM$Khs%P!S;n@--e5mj`xDZ(vQgL)iz$QmUqhq!AcU-0Z zy?pA-BYtFJrGJsQrT>5R8Lag4$?xWrzkCQ^MSUJkET7ru5}%t`_aBRhU+eh29DknU z?{i#5{+3?Xqs!56&LR=({?z!9Ckoj@+WQa|(~qOSnqKz5&+%UzAHGR3+nR)3*d`IL zL1^ex{H;gl*6}iy&&2VtJiEw3V)h#Of5ReC`hy8Az4(5| z`%EZieMrBqj1l>4JR80^V(<~$1pD+185P$2OLMcH$zJob!-?DctOE}YzJ%9u`ad|m zd|a+Z{zH;pJ}!H}7bRYn{pmq`QsPnkP^Y@So_K#)W5p+lkA+pf+Dvjw|6;h`>Jl-u z$715PKbPTCPw~BzUOx8pd}xqk`4sZ3`JC}<*zZB#-7?uPf%mN8{xFsQ#|Q8!N!;c` zU&5NN>YSDg{8KUbhrTdkHW_^%@*khLnl_-BbU-0>#mCOG@ z*yq1mE`Qv5{c8T7JRHZvHDht1JoOh}-WIv?xFxTYH?pZ1o&}wf(y#dlJ~7dsn)vu9 zi`ldAt%(i3VaWDHYZ?{kk80m^wzo+_rwLU(bh~G(` z67d6$b^gyMZ|nc^;V=%nqk?t(n>P)_yC?2|gM2-ooS*WOPlrCl`#Jp|Vbfp0M_9e6 z|DTfmKKIA>bCyZ=XB}S^-q%UZo$2?Q)zPh*^cSP=P2A>V^U)85ZM?lYrSFyOH$Sc_ z_`hE<@rn=d?2-CffBgpgGIcpO)kmzc)AJ$J_t*H?IaS$U@;)=={}8Nq2M$X4$p@Oo z?tKzp!;3IHQmni$DEn{dkKTUW*3I_viKhOoIfX<%(KaM}G!WPQSyf?vpfO7#`x5zk z`=8iu_VS_DnY!qixtD1B%4&!_JK`}8})mR|M)==)bGVJ#W_7Y|o$NL+u%O2yHIW z^W~ce-%RzF54Bg}%@Rw04ROR>!`a>LVXwFT&pGUtod;lRfB8&1hP380P5icF z`DD}aeKh5-iX>aw967{wIA)jtyn{Ud8;F;9xxllWv3+!JN{zmdkiRBaQK=L-9 zU-~`vFw!rd^kW#@{!kmgSJ5W%UTvHCIZnKhY}YeU$?(&vvd5_3ir7e`zht>)y?AAA zmdsv0gkIxj>V{|@?1%Mi*30M6Y3R)7klJq}>TB&M-iPDs`F!f{xsmI+=ey|7#_Ers zlE3edYAfq+>W|;S)*od*hw{C><^$gTkFeQ)flsnqN&i^t?-!DA3cM4Gq;99`;NOeO zY>;(fjTJV&OJ75NUf&8fy`HCx!+vkJNmSlULSNpwu$3qK%V2LmkhI=@McC};;_RXx z`}J8QOXHK-?)8u5Sm(3X|KPamS-Ru!KNt4) ze}!kK^y~5Bmd=HXQ~R!eN_F_HYer(}_oTm?UiU8_(0A?r<-~40&t*K*Ga`xX+qY}B zmyb04o+Q7Z63s7`z<$1w=hG?A>tEsgGM3M%DO_JV$Lz9!1ELS)M_v0IgwF5pez5JY zp4UjPJ|J0gU3Hkd52Z~ct*?*$@$|$RALg*#j}MDr8y}>90bA3H7dzH?@&#=6;x6pJ z@hbQn+lTyqo63_9GCeOi!|?~iJwHc!W2N7Z_VVekhfRO-s?}kxb5{+SBFcY5LesxH zuR8cB9!MIA^bZr7UferZ{>_e+ep~E)`mrwkb?BGHehZiX8ZN!`GjsYooqjuxhsIBa zz##Kqs?Kg=Ulz~?5?w!+r9as9bLXe=!OHcD*q3?Nny&Gco@&Pu6wB^)4<>PA+d<2Um_|zhQ>)&FH zou04D@z;*^yx?8Z+w%imFK**}ydh?v>3Thr{e3#Ie9FDOZ1enA+^Rz}E5BozoLYXW z&xN`AX+G%dw;jjUb369c^K*`8bT4FYQJ0~qKJsDKllUr$<-@EOajFtUjGH#C$uyr^EoPUAH69r+h94t+o76wGzxBEOImGb~*lTX1b5?WmRa3rM z?LcDvjR^UL;X<~B4@w4RrHfcDkPU@l*B$P|ax=@dEInBcV5w*6!J-=k<*)tj)qO%u zukP8eE?Ft7t}NJB;%x6lag~KUypCbDa-XPVUixP=Qjn(RuhL-KN|Pvg5(-(0`1Yx5 zC}ed_EQ?t94WKj23@uCWvHK&-&xNcLT-R_*$Bd;kk#OEE9jjS}YWe#u9m}7ye0NL7 z0<7Zbww3#IRi`#96;&zLrLfMjhElO}*pe+e&tli0#l9}2Dr#L|-M*Bu zj_)pUI%Uh&{>ndT=xzCbD#t{+*dxtKn&$W(kh)*Ze^ZzN{Tqpw->p@wNkJt_sw^T` zmqFyiGRW-~nP-tH7Fm2}vRQ0f;yrwiv^n7#cr&IXjT7^R$H># zSF5A6I!UYXTb`k9tm?OHn9hbEI_B%9cycJ$JK+D+n#?+}XiN&yr1hg(y)D>-OqDFm29~MEkHX^k&N}!+#St zSd_4u|84{RT$Au=w?y2$(Uc0Cw`Sb_1d;y$jUHNtC%*-r<^RC*+{7A#I%B^u$MPc} zd(&Gv{n^fNAD#)xZ$TL@!CK_sp&nKz(y}Dg!}FY+Uj7Wc-paB4sU;uPPktDDeQbYB z|KHu8gUQ$L&xxrVm8Eu^mg8B8m8Oio2`&-W@+!P2vC@x(ZGRfr?#r=!t^Ss;vGVo% zn{Oww569ZC<@1#8vTz zux<+LMOIC=$FU`5kYL9R*j^hH$|sHtMAW*RwAiw)3%?KX*B^;PtQ)H9I(95HRb_Q? zUC5?}F>GR3H^g-;PD%962g&0060CL(f(`$)T@2?o2Xo#xoIq9 zP2rc-3E};-V|a?gi#v6CUtmaGHYEJvVAf<8_fY%OmnBNvRtiBWY%1-npmAhahb{es zwtt8Zj9W5|)ZK$kDXe>h^@N~}D;;-@aU*Vf{@FGS8dbB7E?(#2-bQvUC8qsVn>wu5 zsia`ip3T*t&t$Eu-rNq{#-w!|3u2E9>qUG;M7!80|82sIqmMRl3D!|*6L&XkDY4e` zt1-jcj2RXVOW6EBzOs(lguf{5n--04@8$eQ%}9Q|`lFY>8u^n_+_(-uI&)wx!}04g zi}PnB_0}>KwsIPBex0V}cy7+m)2ncA@+`4voRz;ZU+!?m3tz64vjjV(v2-Wmm&m7^ zmE%_(H?n^kPZpA1OK0lepK?4~Ii+0vn_yqgXK+1vlv(7DN%d+Z-oPTiaWg3QGvZoG zlrw=)_ww&)8}+bqlumtIi>?du*W|~^-Z?J2{iz>FzK(VLCUCsuXIjgg!Oi6~ENR&f zrscR1_T|n^Tt~gsZx+HO)sbZayny{5PF!94J?dfmBfn67f8^K7=UYx}`HY22LN>Vbe-BEO(oGjvog$jakQzfQIep}Ojye<4D?B+enAXTV3R3~21 z8$!Gslud=KCx0_Jtp6U?Y(W-;_>*DHlP7GR59@N!HeDPNhvRi-jJ8~F))Jflf>~v| zYyP;ce?^sb-d_(0enrlslj!;Apw!;i!e#i5P%}bU)0D3gFG$SfC&*vm-HGj%^uNG| z!Q-Pkll~H?*Y}u5!2Wy8lVJZn=5cV_l%KxGoDAFZz60U6;0Mz4;>}?F-mYh^5`7OX zTl*e*2-By5Z0`}Y{4N4-LOk4e5*`3gA=JH_ME*I>A`G)ALVd5lgi!a~64{R;p50tGCwh|@kAl>*NAOM9VAbZd0#?12lc)90CzT1+dY?ERu9H~b)9abzhd~?t7bvgW63c&q`rf3(@;9RX z^-|)==%*6*_UFK6e;ehm2gf@S=0I!5x^JG+*VC}O5x+6jNA~CE?5~5p{Tyfi8TqYF z+VxZWzR3V{H2eWJ68R^%m++=Q+={HqH-p4aNv!t$7<+3!v3!phE4_RX`SkU$rC+Xh zJobZ9{dIiSB<~R^f9W;mdHo=#m;IKGWxtKH|CHM~-HSX{!wOOV#H2<4>;qf>Je$VW z@$vqdHiGTD>JJ(ltv~GAKEB&JOBY?FsWyI# zVdIa=JCyDI{5cG^^Ji)0DJv`QpmHqhwN`9ICYR&9=Jv$Oe_OWu{I`QGf7$DrVD{Hz zuS0i3>Ob#IcCI*(D(k};FdX0Cgzm0d@R*UB!KkEchf1-#M{r6DV`jf`T zKf*RXs{edRTHk-<|HAr@$~zEyU!K~-%2R%ak>2uC`J0ix2R0I2FE@v+e3f@0?8}=C zTX|QZUWSO_X#byrZU41@y~yA1-x{#(pUTtu;>&A*eS7YhYtQva z@5|TNZ{@4JDX=f^TG+}{{YQ|$Prof}>9^lM&X4%nGKg61Z7hFJnon4MD(_I(m#5=z zdhMU4o3?){|0vj(e>806tNk`7y|rH}_)>TtHWHP$dv5>saQmn6_8aVMyw!ZKKzf_+ zY5u6TwfW_{Odd3L=$w@;geY;t1)=5MRUS~vvtYe*BhmhxOKAI}_R#fUo|K5%Q|E_oPmRyk zp0d~6%Ixo;vyF!Tv?41+?b%4^kKeVh9Y39~-C@g5_R8PeGsIQwwLg2pwm-73&)M(m z?5C|6uMLygCMj@!>UzCpAm(MXTbcMviKWj9&3d)Z1+cZx=X+=2Z@~3(_MPb;mf!2U z(|&L{>E&NZ=XVeCkch*0>G&G9n_lgCFFa4ih~|&46Mh&d@{f*{UuW{N^pBnt4ekC& z+>cG3x6Sdm95>|nsvO_r_~X;#zMqrEOO2n0qqp%>`?E6jv;FB!zu1QMxf~nGnT)G? zm*mulney8jw)~V{?;lut^~WyQ_DJ^XKYso)>7dxZc?=%p0468DCH5S3kjS6Yt%MH; ziv3g1@O*#M`|912{-WM7|JEt}K5NAL%i-yIpz}}Xn?L^!hW+_>ENuN%=bz>({`^y0 zSpVAnLDEw9fozi;4r^{?H_Q#N#(TTJy8(Wlw%;(C2m2AQ*-Jl@x_bR;u<8F@d3xVk z<*5%#mR6qLSF!y5U3uD{n`le3SNWg+i~S9H@^8@|x$^ikl`ZyfBe#DCJ{tWaaT*0V z7Ji@Da*3t?p19ZRdk3%APt5;HuWy}9pZ71*<>~lNh~8P2$X|~7qxs8Ob78E{^q`IU zm1rN+E4|KdOMm(+v>iM)*{i&Dh>uP@{<-LzhR+6q+=Kmo#9nV3S^jojBdT|*B+5^H z)AE!3jj*@B9X5NFw>9akyf%M{{&v3&xiL3{-yyy@ai|~Z&Hh=^A4z-7XcY})e=mBo zm;PI)e~TOW&Y1Q{`8B>5|L)z|q>)s=8?Qe${@sV3OJ?Q!INARm_V#zf-hRHb*Y^|0 zlXoY!Nj~Am@>*Dz1&LVS+ZfAU?~{3Z-5YxSRyED~PnqcK%f7D^vkQMSlU;7{J;fVv zcc<6=vF0=q{SDjgDX%_I{QhDG*zEN;ZCAzKSl?fK0{2Vy6OSu|x^+!F2iADh1sjR{ zTMQ>;m&u7eD{xtR? z{d~4bU9HU9cK-j^gV>yPq(u{nKjKuWLgB`+nu zbK+a!14;j4VwI=!tv<2xf7aDk{sz7wzspm7WuL*`etXVGtB?E%Fa&37PvY!@0TL6TZ*!89Bbe@vU#i@%o@tANgb0nzYBJ^g5q3U$XWWYkp`fe-f9Y-z3=w ze-h|@d+Yh5wYTiw&e?APd;7t#*~`Dg*KjBDkSPE2bNNqo`OBUvR_x{fVhy;SMWXX* zGNC`8n9@}A>Yp#bwtw2+^Jy>7>S_3RxWpp) z0A509^KbFVq%|&lQV4x>FUpiizb5rDeFu0gw%4cf*27-hBiT!@XK`My=Q&=_Cuc46 zH^Qb@etU8L887%ejxT(68>H12(SO&~sr)$C? ze~k~OKP8p7kt!W1CTAL})TWZJ-~#2p6fv;sVqCjc{GR^%q*wZJ#4Wwf*Lz_* zAH^q--uOc*Uq$@}a?VPmUjUoFijKBAx*ky-^jo>}JLKE*9rKINOg0`W}r#xs~~entKZIcFuxPv0Y0e&QX_ zdG5ox==mo4j^Q?M)^jFc{wO1G7 z)?UhwE?nVhhZMtmbmyn^VqGhZS9`XQT}1sY{lKe=!T;Ve$zI>{X#5(QSoeDxE9(>M z{;mW0b$9wFV6T7L>2?42JKDqM+YO70ne0cT@m%%)Eo}9X{z&TQ^_#l-K8gPK@Nu-E zB;=Q~ALY)E<>_piFKtvC%(E@wT`6zf#0SFF@VQYP^e^S~I$ynh4Ey8L?+Tk<_0wF_ z>eu_7Vwg|kN`D7z>GyxXnEj3NL41wS7p16?_%{8V_h$1!aK7_bpOOBXqEdX+5eU8W-oswX`27kl53-Ahw z^*#CSY@Zvny!WtkY%lwC=6!ew_8LPZ;?3yG#@!ig)}gL#H`o8-a;%C={>@(Tx{5Jbr$p0-=y;FUa{$^|~eV$eRBc!+TwLc3;@Av0^ z*w_Cbu+?AwG#W`i-|f%OF2CSEgSuG$vVRgbd-O63oQHC|lqm`g;3v$0j7f2Qt|Z3K5GzjV5Dqf`}sD>1!T&p(W1e{arSb2Zb; zeqG8pKH$XgqI`A?b&%Wuw;_H`;&(!Cf`NB<(Dh-;f< zA>Y3qOIz-rj=%cPBG~$u{E6_1bH$&C>`$Zpy#3v<+3R~^-LErk3nG69Gl($_2qOO* zClGrx?Z5mZ+yHNuSpE4e*!ru!&+Ufp>5!V|2o&4{Rv(hQ@>)FqwoLiY(Zd%0kB{ms z&r7q{_1xQgmcI(!Us(To?rr)9{4)D2QGGSuRqD%$Kb7rU1}*2&?%dyD+dZ-B|0Qv& zzx;2ErR|R<4~f2iz7IYkVz$?NoImK)MiSZI&Aytw_zjm{{y)Bi%^ye|6VZn#zcHl7 zzsSRUZx44)?WO#$XXh+``3t!Q+ecG<O|5BArCv8(=?cYX}*FEL0`c%S zSoTxUnf+)gw>If7i^;ReOcwgC-Mqi@&+>koX8$ao(YWP0z6YRA5|wx7a?Sbcd+>2R zntu;e`e$K%11(W|ola=&rS^USzClVv?Y$rS>f3uU+pWE2KM}pzi!aEr=7XkJdkrAH zZ?6rRYuNtl_#cYB9e>%6bL}nvE88-@ng12- !h{n7rvM0;5KUiWcTm>bMZ$4k5; z>5Vo1ZA|_)9?DvzlX^*R37asRQ^;aTeaY?FvDBs4x{_iDXwopBo$M0_T3W6j5Pzhvc0uitCEepA}Q z^qOyIK4tR{jR&icpN$9dmv{%s?%( z{hqYbQ+oL)xt9DcW|91p9{X9GKi*#Bzqilpr!l^mUj89&BwxE;O@<$$Y&-v@e}{cD zz5GjzA^(ypgGm4VvMu$e(;rJg%Q(I{{>VwpB{#@vcSrvc@*yfwdu&78+C%zJ*=~CA z-PFhP2<$!IljB2ZPt(6UuR6RNG>~l)`3KpW@C@>lh(96p{8x0wO8*P_`}E6@m+6)M zC&y}!-;tlSmsrmdjMaVvUHeUHRh=!*_|`ks=REv*e8c&wF-Ri+9v5@|(TqWqUuW0e z;^Am4e_ihzI9_(Wmw%BnnLnBT5a~aneACPS^i0a{5wp)^KbP{&Uj9q=VLr8heUPZU zLkX?CPP41CyD0Clq~8{P0qz^Dxlg*XI{O&jF!2fK@1?(P$u^1d8%KRCKef-d)Tb1* zQ9q2h=~r2S`*ZBo#uDw%pJ@-Tu+PT+o$<8R~N+DGC43tm0xRUi2qvij)yEbi{~4Dl7c#^)N^ z$Hr&bZ$f!yf9#Cv>{+g-x~Gze-(>%dRiEcM-o8FBvAgV+8R|{w$yR%b(%r z;6manu-}*Y{fa4n@e8z<=ZWmEvHZsjVgGJO_PRgcjrh)qb$@;i@fRI`o8$E;+w@BR zDaXU7pF&?X{k$i$>?e5Fl%MRCzu5=>PVBGu?{o}&N3vg&!jFJwCzgLF>1QSm{+-~V z^f}4p-D`qx?0pl-$l-a-=x`4leEUY1_{p&e|;dyhStf5CRVv(0O=TWGJYDgCPORW5%$kJR74 z+6ld$QFmkMRg;zfCznuk!}MatV)<&D%CqO;aM5{B{Q0wkbTOE{IY ztX`|;F^|hQJ4qLXo7QNF?l?DuHmRsJu%SHfYsWRzU`8ow{YqIR3oTu2$T3r>laf()a>P8b=SN7F5&`HJU;{Y6_2MwQfXvd{`eP%Z3SN|KlUoZ29q#s<76pPd`2q^C?cq zYJPmA7Rw(W8FZZ1TuLg>Hi$}G65H8rWHy9qR}HCUH7UeoRhC^^ftoO7!y8%Eh82-?N`-N)hgj0T zSX-xGvg`CpQeC!L53N?$O1MQUty*g(d?&hi%)GH|?iWq@NW37psuIU%5~&yb8;I%UI%C29{S2+huF^ zR_?TvuWi@&;VRR3PL7*$yfDZ5UfZYtEXUIMv#%9QkBmWe3`#M`TGCnS9$DR4HM+ca zjzQhofjUL%AA^q35>kRBy5`&UHSV3h!med$%hHBUUdz&!W!bFIz*6Qct!F8*)X^Gh z5c*TGs(sc_Y)_i@oIvfQJ9`hLD4eJ`)} zk$(XDe%`o_cI=PNSjS0RVwsA)j)P|_w~2gJbvvH#5{tPR;pun33aIurF8sIZEWCZSwb!<@|}rFGfAOGKfa?>hoZjs3tFV?OZhv(=RHhb{I{{W3YWYw6 zZkfIMkxwsw3!ZtrS-D^1NnOLW+x}cwIjj|D%Ve!L2=RNvdV@*Ya!icJ^~7j%x9r1~ z9&w#DvZa{T6qICxkY~IGYc5~Nj<|Vr{jdF>HM$i3XR}8Ci~l(r@Lw2HrpoP=>cdeg z60O%tQYS2hZQ4{CDb$Og;cd`b#cKJfH5(pYY$&jOTg7U_stkr%dZt(d3;Ty?vQF2~ zYE_n&W0x*$wnD~Y3!0J`Ss;a6YbF``g zkt){mZx>>?VMHY*S~R?+_HQHdK}t|i45`){t(`*4QTmmz>L!ujjb%yjkBC_ZN*fKgPnk&1tJy8|cTlR= zS37-g(mw>>lhThU#p{Xvj`|aP7G;%LB&&6gJ{c~LnCUw{4MX!1>$}F4;SUoJ!oCsS zH1XcB8YvyQY*LA5Xz=z)e5_zH>D zK8FyWmssDm>KwD@rg=Xv`VMg|^utrXQU0&PKL0mh%YSU|_?_A0^kD2L_yhE(=t7R@ zJI5ahTc`S}{7s4b@(00s{v|n`uBjpAaoS8GzYeO8_v=uG^{h=IzYb->;}YLOG+Djb*$s9IY18!A|>)2jX8j{dL2Wu*1-5p%jAgJ zityg(PD-rru(yI$rbPSKhyLOBZ!OsN?_3P^yIhZyzuIpHaZDcCZ%5eLFPyJAz2E0f~~&tv!iq2CKgFOl|7m8ltBEx%%hakiQkr3eu>T?J}I%rvx~%O|Fl0G z(#rm*J%+-*JaS12 zR4a(a_dgTsmRS0CiF^HfPOtoxm(QP5vXZ}!x2{Jwu}E~h*CzDGyC3Y2H$!aYc&q&3 zurGfEZ1q$5U0`3nE+w{qDxX8xqI^#A7Ue5HU;ei6Bo>Lv*YWk`9|&9d(rdi)dYyl! zSN#UTzJ5ABRzK;da>Ro>gMFRxp!yaQc% zD*sl;lP1Sw_Xv4N4n7kfCg^)sN1h0u4c9teg37bLv-dnS$MVDC^}2Q&Uv^#``yZqX z$!+kCgm)y?d~SEx=5w;wcd3bFTH*z@%mP< z*YA?k>;A>`o8BMGUsr`8!xCG2j)Ya;fk8_-@G#)pxC!1U>BYkwZ}b>GC)ht-Qzd#Y;4t{b zh}pw%YYzCuiRDK^D%~>+c$5^fLTL(#w7%`Fne@*?)xb zD0oq_SNaQKOMeD>jn{9mNaW{1=iBH&+*`p-#P>_Q4)wi;_$H~o((4@puMhj5^zut_ z0Q#{hz4n(!Se5-9@O8Z3yqs;4rEwQ@UjLu+TGYj-KgjXfKgHv1{ZY)Tc9s4qUKV?= zUzFqOnr8hq*uMnpnki9wy@z4x?}k5Ne>z8X)`s>QMtnLp61D$Mgx3BCu2cwr_wmS} z<$QmJxi;zhw2d2H;yoqtVM#BZK>aMA|dRL(+4{Lik2`OvLP1 z^i$9cNxUigH()y-N5lLWS$U7~9{6oob5zO8JMesxF=AfCO!_%aKl%v#Hjv+5EE0XU za~5%p@sif%$k#^9Hb&o_^y8BKYKQBIV4TCq!8Sf@h5mKyjTfLF$hEAL@>6+h z5x4ThYv)+U((C&=R{a)Ip4CtMN{;`QvZc$K#WzvKAuhC+B& z)Rldb$gjvKLSy+A(fwW*(nvl@_G$ykGbhCUqcKb(*8PCzj~%Q158~LB*d{r8Du34- zw({g>WM8%$%g@L$@b2mS_$t|3`7fQq-}yps<%#v)ujhV_RsMg$CDKT`oL>k&I;=eT z9XX!u#_~JzJJ|e=T$Svt{5Lpp^sLCr6A#a^uC=CD`5OOAI`eb2%Q)v9j?`dR{GU!TOHJ^y~i~KRA@7Yqn%dSo^Pg5{dR_Tem;*TQZya z*n9HQpM;(5&vm@iy@2{(gpEXgNp!vqh#2?;>SKK4o%|g4*Jz*y=l#$^BxuTS~tz_L{49kLH>9497#83c)APzR6zS+39>+ zl303OzfCXJ^~p1z8nj@Yt6u*%+S~Jk93SIbpCNPpf0*j0@A6+FZvFLP^aIf^ar)(8 z)4ziLXjspfB}&hbU(tVr{x-PI>CbWcZRZ!lz1NO0dH7CuTjJf5{XtxuE{E;-e(`Ml zj_+V+ukT>JeJj}PmA(z_<@rR%+W-F|FTek1!?u6g|F>bk|GHk9Ui)97Jiq@O!irw| zKNh{;{|#VEFTXOn*7jnNBGxDY?q&#GR(U`L6)Y!)#;VrE3oCK z{@;(3*8eY|zn=+Tg^lEo@U?`EiS^z67x3Or|AW&{eLnip_?c}Ioi81zn?GOVC&JDb z)#qFKtJUY>d4=$Igf%8gq}MknrWb#g^F(o@i(0c*#YpXiI>1%VZU+WPTVa{Ag%84BU&12-wasi>gtZUB)8!0$=mDC<9Hcg zNBYjxeQwJCBs%8{*xUHADZew9VQ!0pT#0@+_=d!KFMA8>vuon}(9fg&r>FYJ{t)sv z`?-Z;c4jTlHIn{G^dHf;CMQ;Z*7eW&zFzVIF?fALv4zA?uS=lD&>za@Py%G!l( z5|!5gTY2((ax~jDCzgmWCG<>^3hO(Ldr99z#)$G0TYloXP6$ zeVjZbYko_g=6KDHnCZQB@yx_}@BJCrzxO^7z9Z?C{?uH0=`Hf5+$L>`%|}sg8FZRt){UE|o7HLEQ7Uj;EsE4qlc#Bx3a+;|Jjq+@3`u zUY)SQ3^pU-!=yy6+9mo8?7=aR=sPOSH#tRveE&pz-fs7cSLwh|_SmFX`US90|1xap z3#0H8LHj?zBGL6jY}b!>_AG|yJJvtjGI)N0-8r0N5}l8)6WaN>Ci>Ul%adNuYdTZj z&N4>i7eUV#I!4THhfktB^Vf3Kjw+y1V;FMdzj@%PnZ@!@;~I-r1I3{W-ngD)lYs& z^xFIRDgWomk3(L0z9jw0IsGDRFHZKFf2~d2&%f4zefg)tzWlcxEB(3D$ER2S_vv48 z^;P{hbM2@0{R?dUMf`n^^-Y}DFUj#(#v8BK_~W@VeZ})I$MQ?F4f~__wIt)FaJ^!D z`X*xb$p*2%4Na`$`y;k?d^O)vd44{2KWy_c`OTC5*py!TzY}cjsrl?i==^+kXs-RH zp*MS_Z|&Ms>HnNd|7I?|uHQcWjgFt>`fw=e$FoRogLS`AABg+GrRa5hP2ZF8MCr#R z`-|2thHsktCSIEUbJCmsr{xOSAFw@^VsicuiL9hEU-NQ*_uepWU-vlp$?@amCzQ=qGe$=I(MExv%>xJ=JzE!$FtOWNb z-*z2B_Su^7K16N*_54=X2YX&EzsBdn=GR!yGkeHBm8a*Km%(;CPKR%XcW=uId25-f zYy-kO(hWf?Cf7Bj{XB6AoSA_#LcxirRE<%@1eC7Wofx<*R)UA%EY#55m^IS1=g1Vf?W6Rew90 zwzdA&^}?#G7w7uPw5de-eFIy5@?$cDvBc^x`vT{>*>}CPD!ZKg)aNBl7vl$ma6+KS zCF=icJf8IO+om~*lqXlD7zS%Y-e-rvB7!H+64WaW`n;rY(t5d&Yw zz8P17W-Wl>H*odiyD`*~<^l5?FmgB34@)EB*Dk z@_1xkNk5U7A76wu#!1AN(f-EzZhRcuk526;)_7(tKR$g)uRbgJJ9<6u)*M43KRz21 zx8ter+7E%Bi|XLFN6!a!O_eCU>TBuGd#NhCJJKtvvjy;0=$jHtU*_aAeMf%Wc!v6q zcKTs-Zqv(tOZvO9zB50BYt0~Muk@yuU!Qd-&;0s`A0R(t`N7$b@{h+x68r$wH0!m$ zdY-TWBJkPh0goYneOzmpTz!{ zz4%W#*8JG?s?X1`)u%OnS=5*1t3jgUxjE(8@$6b%9sFi|-Y@FwJK)!X{24-m+yy^M zeb!4XzXIaB66<)2?RcMEtj_pf`8`7RvZj|GnhRIp`B%~pr|F!*5ev6%6evWi~{fs(F)IUBYwEm&~F1GVQ{rz3o_jg?{e1AWK{4Kr8+nDpg z>ZANOWdBWn=nm2Eimus`(_tPNhG+KTCvU+oBD{qFc@5V6ZR(EMC$OH++5AuGPa=Ok z^Oro+13zr=h={>{CF*1LU+h>Ne2hJo?Byq5Cbl~zd+EO-?)4fUO@F~o_)&p%&68Yp zDSkx=)u$y&&ne#`z2<|KUVe8*z!#_V;!zw6;~%*G97SI}kvdD{$LCJQkH=GcX?(aF zw(&uJfEKJA-{Fz{DZAmfXO%3Bq2jju_;u-OJP%9#|8W}YO}2lP%9o!U9_dv4D4H%JJ@w zr;aLQ(_oG966L=Uc6(e*}iU%URu&(g-Q{oZgL zewlQCv;}=YBK@BTO}{CBv`D{C-@qb~{G@{I`{UH;G}0ZzHi`0EKv_P& zjp;v@UiG;e_VxMP>HG0u{CKX7HosT-lVD3P?!*2YYdpW2a{YLI3vA=L{18=Bx526$ zB76Ow>Fsr_%wGEYu=jdBYcc)ZIQ83v{ktS)m#II@r2clirg(LZ@c^Gs(}*X31WDZ!REC7D4{E{oc&n zv?e>4_IWRrr}Jq?+Q;|jKD3W#%`ZIb{P6sv<8kZMWUteHf2ItH^8cFlGkf{jxryy7 z25o$PR>kogoml$Mb9(*W=Jm^vw@=><_If=p_xi@9*D1VbD#wD7MF_jQct;o4?}aAb zhWK=wM+}?3StUN$#Vwt}4lMQ@M@+LK4JnMIEg@D)A^R?-%PA}qC}fWm)+xxU8(1Ms zorCm@K}OOb!I;?cEdAmp*2^|1+A6H8!@AX?3~8m?zpT~US{EmW^`x+VKCCAySA7l4 zH-`=NVa+NlG-%yDtUHEvA*8Kd#O5R_zmGvy3b9fMO8o_;{>rta$8TBbv#?$g)<1^z zz_1Pt*khpVi(x%D9G>A}O?*+eY;uS77{!)JAteQ-uUME;#Go@l@8&J)Qo66It7UaXSk)=kIjp#5UQtWVU8D$t zdzjBUOwekiR&~`8zwdCY@aUjz(6*vhWvvQYl~~nj)$;f^giM>lx?HEAA;i<8qplIO zp4=SGLRZWthAoX@JuAhVXwBGi)5_X3Eo^UyZOjO~wBz47w1IS8Z7;K~+V+`_RkO6J z*i{~EWh=(6fYFcYCn3cfl~`9|zl3e8R$@|)ZO&A&=6pjm_N2D_Q>tI_OT6ayQ3BV+(0pxsWPAR2(H9oNU^$vuCHMwwI$aL_0SY z6P25bD>olO`PeW6LOl!OmLN%quzyzK&5{yV;S#@Olo~c6?2|Qyg?PD7Rw}X7t;_Z; zV8W8(>oR7q#j+{!-dTNE2BPnczBj)M^v-&cZ_iqm_T*pJJCs=}^bU2fXHuM`gX>su zFgcis-yyJ;!7&^8;ea3LzO_9V&fj6 z-^IX+i04*W29>cTRU>0~C+k|7{t|tZ{?dFhsvaA#B&m<#F)=trqZsq&6cA;s-#Kiv zV0fgV(WIP$xG}Bwi;T z6=b5RKCs9?EV3v(bcQC`78j~L1~l`*)tBkeA6(s_pm(bf9Gqq45l>bhT!=wU2zp2A z9cfmiQnX}vQUY>Nz(H0(NebASbf`5xMT!R$N`7R-@>exB$L6=j^zvt={$VUXL!Rg6 z*!t42P{ABk}*F zW27bcU4u)B<(I1=v9_sRjm}?`{5UOy%jmSok5eOltQHd2GJ|p^{MhWbsu8YdKgt{v zEpuHxW_{hV9&>ZNAjhxf_&vBpnQC|W)2jWZWqZ!09{tg2QN7=T>xq|H{+F~?0gUXV}mJ*BF zN8LJ9myjAa5R_R;EdS%`&@t_q9tC*m-Ls8H#n<`gP3!*irmW{V_s$+Z{eZojFOP+P z-jvTfvhEkR_Ns;~YueIp2yGKKRBn>W)~$w^;eHk=TBP~YFxx`g#++&J7_n?ZyGJwC zXRxJEs10THv7Ickk428Oh@4*pn+}zTsm>-6L_e0rND6hVqXbo{SDIZY(o*yuwyJSM z%0j+>G{@Z~@qBo7cwA!n{@DiB_xln}J0}t9{ZC2#s_{GZQzB+}Fq}yLRnlL9{_pT> zNq;B&4)LcGuS5gtUYG$a$PmgqpIDE?`d0k{;<`_h=-cxz3Ds~C`QG@7(5KhCfj)gJ z*ry*4`}F!<($cGaHXuLWKI_B2eYSyp`{>wN`)L3F2HXCtz4Tn)x0k-NvG$UFP_d(c=5)N`a*0Fpi>9@vHWsJyo(sr=bFVD(P?{4_~PRsE*jvw7T zUL)R**=LL4w}`6^B$xG%-<5aZxJp*!c>ja2P2#~@;8%qG)B9ACem%JFCH_goz_;i4 zC&x-Z#if^TB0bsQVL_0;!ut|CHt}0Dp5pxEA4I;2UL|H%GWjN&1D_Pt!FQ2(a^gwo zKP7%dV);HALw#)AQ+fLB-O7{in=aV$lT(nBcZkoMPE9Od3%jG47uA`3?;KBj5qU~( z#C`_hW>G(^FnIQd+cB0n3(;<9eFR3G5LA= ztYjMci{V{Te$xN3T}%BT*qQ#~-|!e3K3uafWM2kyjjy*RexJM!g$G1+Ci~fxW%lB? z&>JiLN$7ogonMw-?fG}u+Ee?tA$i;WsecZJt$*tL+Y7eyuiI+8cMtOuVG#A-V~F*L z7<}7YMBMk^yI}P}iLSqQ6Lt#}$De13+xeyO>tWc=r=2Fo>&M5bJ>`2zx{)cp_+!UP zuXiOZz0RLrurFWlB3k*X|L(A_zxtQeU;6Ik@AccjrhjTm{F~v{{vW}*9+cDZ6aVB` z_31?ZzCL{3P^pjfJLdE|IlX)pbs@hy*d~#$BMwOmUq@TPrq}VN3s#P|>`%_wpPjS6 z#@Va97jpW?onHN8Fl_xp?KK?s?KKLv_R{__B(&K76Ja|Z8gFT`N`H|3A9MEi=j<0a z`yXzJ@AaRX+Nbk>#ozB#z3l>D4|yz1qjpt3GNUuUGq+{-B5AGrY~&CJ~=W=$R&I!J5x|{r)+= zHOJrPcq{szPk({qzC#Py)A0GK46+-O@vjK^L??*!V``f9r=g$Qy7^tC>){!-jDgrl z@~rgTxaL{@((l~9+5Xe53fa|lan7mq`qua?!X5%-EiUXDAD9*e(ce&if>`&&M{;wc zv7p2v5o^9_tn@3gFFyTBu%(xNXZoJk>u;c&{>G8fH;#=j;x{PA_#Su#%9{{Mr!T@i z;8PQS4zCLzm$)N09(s3mQsVXDhv5SgE5EN{%Wo(2Me3_DPO|*zh2VQ@n}~t;Vc$LL zJulCf=lHH1FU;}BIc`gRe14kmdtQmUcvfHYyjPBy(zMX)eDn7A<@nVcf1BeKTz!LY z9e6uzB=QxrGHm^S8F(&SAGA@w$mx~7p1$nU9|>Ff>#i?kSGH>QH6y;kv3$>L4G&29 zFW^GMC7|-|znCu9g8SrnK#m9Jc!wNozBAXAcVv!FalFgR(f10|=pb|7BURX8?W@YLN=518nY$hO*wyzN5P-MXGC=-zMA$lKAef-zUXdF zdhua7*8Q>9&&u)Q9QR^>z5Tcx&vbn4J$wt#{ya(^5*?p&39UWlTkCE3S}76nM}(fg z&hgJV*1d|iugh_l9P^WH#lFnLj}rOmeLG19PENIbJvNdDKZ<{YTj#Lx6-11$$6owo z((gfjs&Chn-|nB{n+o0hq*wl$&-(mzZ(#Yo&EUH&>B}q<`39&b94kQNJK!?HBLhV} zCKbKXcObvA)2|Nu^y<$({dlLp@u}$h*`7xzzwOD(=T{H={C*4j{M3I;uk&_)4%5ImHvYqbBa{*lfHMc znICzg5d2W%q9Di)>ld@fu>W%^U%p5*{tRRvCE}NITt)ksUh^kCbG7kV-|DVY+dQ60 z|4`dzz4)qSoB7M(#c=;JJQkPrAHff9)MZBELtx#%>lv`*O864^pornykH_J0jx`@K zK5-j-MNoguF(n@lDTeQ;SBaRd!Q@Q7yE-Hu@Khl@8||5R$bv$6Pk80Tj~!La)+PU` ziA(Tzuw8Ft|2x>*>pL8?SNi=NpAKIEPfYoZ=Oe(YV4bs)W$TOC-w7uL;(5=gVs;Gq zKR}%&EAb$lBEuLX?t?u|RJoqd*dE^{9Lt6DNr~EjJK}b{!tu%R&8=JNyR>O$?e8*_ z=l56hL)+gD)V~4!TA?()t)p`NVbd#pJL>1t&vyDf(bFX>-;%3+^n89|%1`ZcB5duW z`X5YN*#7*9#(RwY-7MK_ez_g})6Xxrhr2typ2>RsAJ~7dzm5I(`ungq{dMI31^Rv| zzdF8+>P&p6#PYpz9Pzyial z+ZW^u^mO5DX0l(E^c?bVPbUM}V^Xm{?c-uLgZ4Q;CeIo^p*_iO!&ILK;6sUP&L?>< z@f{JvyX!ii9!~ble;WI{{7XsXd*NWpv-Vec`kTjA-XQExQBe2Licy`JcB7M6CI{@e?>s5tq{d@^gW2k;(t96{7w0 zANY2H_Gr^Fvda4!y_MGw{Xq1ilm5-0;{CLZfBJU+MUtKulV_t^SA}oK)=YdLtodas zF6b{Kf3LqBHvIw|^WH~!kJE=G`nK&2j*rGr;~m*oV||OiDvD&zg}Ey9b&^DZPatM2 z`%7SNKga2nep$-$_G`i3ez?=iUgN3R>u+ZNZn@_3Py7LG*FDxI3;OoW{2q>obbUV{ z9lyY2=J_7_j%S_Uo;%SOJnQ;ptZ$oE!~W@1e&cm~d&zjP3S~+bqTe6hKk*j(R%Nr` zeH_d0ow4l2-u_yr*SF-CP~UDb`|xe~>5eb@M^$zz?KLd*Z+&~Kv1R?l((7+-n_j#l z>5cX6uKtF%|91Cf+RM_beP?!QZr_uRr9NCtm#0igp7kvtLu89@{mvo(nW;YdHm^W? zc)pAFHrBV>_rY^x_TgK;p`2@8KLYmptC^gdUimLie=!cv|2}CK6xZ zc!*wW_wfr z=Yp1bNh|6D_hug@`qu0mSYv=>6FTx69AD)jk^ZH2&3fhcGi>?Ez8(Ej_8JnmP@-QE ziV0HPm_quMq&l^=+C2#62T43NVKNW%V{ICqwp+5g#Kn}~N^qaFt#2?&>#(h_TSu!> z*b>(vTDhx_q;<6X@2!=7d6tb8X(1iT{G!;aMuP-nhb~P7D`onFtl_J?6tKNS4v;bm zL9kr5J_I`+oTyQ{W#YzV_6r-A**663;>Po0&@OINMu)SE8PitREhnxuetx!9dW;gv4(92FCEiotR* zUB?*6vZ0Ef*TVjbxOgOCShLsVZIg95I7Vl!6;wTzDQf{94Ymkq5Aj7_}H*T z%Iw~-WrJ|)vTovSpKvA6md`pcP$O}jE|6i%ogLHVBK%zrZJO|9%lAMVU=^Tc0`Gy& z$nhMwf-@2{~Svh1Nutm>gf?_ukG{Ds7| zbcU^7+Fr*tEvlFPK6Yo~w*Mn@d~l8%ay%o)b8@^O$M*hji89r`np5^-2@-CZiVaLd ziVX*`YErCGt2tWD(rU6+4b0-I!m5#2aT2RZ`oLz0whhTbjE>Z!fmKm+#;}UB$L?U| z^H9Ext({g}t-xyK?zBOtYF6u~@kn#!0kLLUH+GyeIt1YZ+s4i@;B4CVv1(OA0Z9~4 zgaQT|1@u{h2GSBV#elV_90MH6W8@+v9M(xgIGYNYB~N*OP?^M@}=iWi2UFSAUh4pBZTw=W&xfgscOArqJE<_e4RC%hemDdIR82Ck}|DDr6LFc^} zUR)gwWPcN7dHdTb%kmq5{u@l+issoa@X_e?d|YxS`RHAaQzK@7K(8@vu45f{Z#9Bgg2)A#J4)u-)a05zB=i(zp}OZss0bbzW(}c%k;88&hf^*V*QRFPsu*; zZiKf4qFuVj=Sb!!rO+cj%h&yZMClh0`t&Q4zopl^f_m1*?N5-SvFGQp4EG8_RNhS5 z+w8^iDP#P~n(?{8WYS2MUpqcm8k+cX<|2o&{iMYEp`Q+4C1Yd&`YD8(`$^72e+S{E zfuepUanmck`may_N2gbQPde7S(Ph~8SF!J}Z^PDKhhWd`S>?BEz00@;%wZ0qcVT#( zRCzX~cd5p~c5kic+9$$au}JiHSM@AHzvoNz?zQ^nDS_gBpnD^wOV}v-d1}vDsfeDE6-*Y?IszZ%?>aAf8cn zr+*ONI`JU*dE%QUUWonsPOtnvfGt1izs>2FIKAwP?7P{E^;@g4j+g4wgGHj_wF99Y zue)fdJ>Wy7M0ETvA+%?UI(}!tcKno|t~5Ts+hL#IgRsv}`{VQb5VrhQA05y2E=4vX z;^~CO`n$%uHv7M8yan8reUwPQ4WZYMf=&Mx#@fFFll^Xk9$nZ9MxL*0aZ>lD*Ck{gz?pM^kMaU+s8^)t@~x!>F*@NBQ~o(Qm8PKKi@SdY8@r z-Dr(R{_jTjgIlvm)PCcM`}R8mw)U$(KE8YVel*XHhjo4rOf3CN*qc7QyA4}?^mi*~ z!aZ0d`n$AW5N8$@MCtXrw56B*6xi%lzl&gBKl%N&`l&sJkW-JCT{wTYB5vg?{X?)% z-vnFwNt2nvaohI@+aw2{8OP(E)sZK{XHi%CJC@4t8rbLed)V@m{Q&A`_N|$?(1o(C zI1eTAyL=d-_q%*0taDnjADw*xq4&G|1nm7T{{^1jiWMTi%Wn}fECe|m{*KsI1gJ4{BW%Y?wzq@nwJAt;f`l&w0=IV17X)S-XUje_e=R1^b-Rg_g(L_rM88Zj~`n6sd`?z*U;f)OLG>G%0o)w%cFUfuP1-sgGW-yd(m zovu%xQ>Q{#SEtj}lt<@28>jN9eI&R1RlfGFJtdzCn_T5Pn)JTC?#`9(Q`nd98T5Vm z-iJG-{MA0Q$-gnN@}J|{Q{_K1mws}teCNCE`+s}+RG*J2ueFEDdo6YM?fElo?W66j z@zb}b_GL@2_A0vmB>u#)^5bz|g}!{J%)Ykof$aOXeQ(;eDvW<4()M@&R^G!BOMW2s zO)fqid&bglg1!Dn*!S`;VJ~mu80F=T|U$HjSs)#nt%@+~nwayrkQ z;H{!K_zFCjW9{!IpGNxbw2#I(g*?BSqBIM#M$-iUpz5pB)v^h49$G4Su zV`BLdP9|>oOMgAmd;LDJ*WVpB{r5?~4(;D3*%PmqeRtOIGgr1ZbU7w6=j z)xO%ltvvdUg?u?$s0|4EuGmmm&ubNaN&c>r%U&y2Kl##)C*4dXCWxo7^n72AKg@9# z?0fyeIoA1umoLci8F+x z3OfG&ouwUrABH8bPV(s;s=}Q6H`YpSUU2~H10g2cKm7cK=cKo*da)M z0s3CP7&iII$iJh$r#StoHD!IJf5)-(YblHA-|-gTk%i}_^zy|XMA_>TpZi`_xNmCt ztAC6^=KD_(w*I5jHX=2wMzrdNv?xG!>J={F-QCb{@|#{)^P{$SUGvUi0` zukT9TguXo+?aImX53u^6g1##yz9kU%KG5$%`pXhe<;GWgc$LH_^CFM@_WLH*cfHhp zccG&o`A@W$$;GcC^Sm_Up|R!}-jsCea|+@uS$f_!$Nh4=TaMM&e0p8Kc|Ib?C*-)v zv3%9Gf%oI5Am6yBSgH&P@?F#Y9BUu>uKgZfE{cQi-178CjhPDaozwaGh7p7B+=K9u zi8XIB?m8u3Iq{E-1onWVBh~Pg{}YTJC6LX_>SXLxM#Ab?>K%B z*YH!&cPw@9)8zV&<7>$3ocus1mv0+W&zF4Ls)z2*1%|cN6JJ9v%UxF?D&*Tzn_}-&poKGhUd!zJs(Q`JWoi zW#Wz5AB<=3%6IP=`_4%A^j$3VU0sta=(|`0SawS7ukri_cq<7BVqF^>>pNJlvHpr6 zr60gL9(#KYu(zkaV(DeChWZ-I-V4ah-kOIN!n>+pB>Vbq)R}da-;KJI_TMha^_?)? zGqmr7iLY%_$%CoC$EDDc{WVYE%Sij`o`Av}So2yBkC^SnV0jDi^V0c*d>z&QFG=!;;Ue5F zoli)ACD`=ehu475O!_yzS_t#hpO;wM^HS<#+wc3=3Rx@4_fe8-ym^QE*mxsf$@k$y zlU%-q8k^0x@ECR`UF#HEMTKV<6hhmdMx7L9eOw6dZkcb!;R_4l{90|I@D=jkQC=I5 zCo(v7A-@H!qg?vBf8_P=r2M8Y`4nuKeAueh;oZ}Rm#-@UNr;a22SBD?9(-2> zTYpLASqSU+erIC&qH&9?^gKz|hwsAvdh$KE6F&vn)A8Edn+=;iT|a7kTtBJ@ecAH* z6Ofy}=Gj;Ovgbor>|Gu1H@)i0w=(i+$)3tPi}c1y{~T=TCEtnmGr4$?<4f_~yBGaO zo&DWtU(=Vpfw0-rcX2w9_w1CvzU$LSd}d;ON9RT2y63JSUXJn_EB&XiPk$op(|?`Q z=MYh$uX7R8zwOrQ><{qbm|f^!w-UGhrSC3n1D}}Wc~*bile(LJp7q_OFX&%eQYM9_ zYpb&Z>0cT%6(nB_d%4);{r2NKFw1lQHtFj-B|}Jea$hRsoCXPu8`tHZNY|rDJJ+c3;h~B+?C8`Hsy}e+wr}Wd=zLtJ!`b^&OOK*HSFlb&ydmZH z{08Om+=u>Wtn#eK_-Ez0p7N+|9uL-{y;hXZ^!0Af=H$0|l8aBuF}rkye41mGuM>4Q zd-A2-hVnh7HX!6#`WLzKYyZ0+J*&UkZ&~EN{dE7#yn>uc=QeD8Ccf7ADtsRX!&#o#UIlzpIb*Kcf9j zUwk(^i|0MC@A=B*%PimO%V|&hj*7MXV{uOgWE-Dl|4j;F_EbKdpIQ0TK08xh z-##}}UTe?3oLsZZmClD`?;O{k#Otn5wlChYeVJ9B#Rp=;HvQ-9TWL#`w~ zF|oe$@pt0qI@a;i^EuSVSl<=VySo0nBK=^Ke}H@;+>0~{vj44Ee&*Zc}fuk$fWullNgSbde>^{~&6A-kln^zsF_^!iTR z+Suz7&1a{-Rg-ZDE*-DM&5qxh%Xf)Lzgp6N2)X7$SeRJbXLagt+ei9)!Ct=u+t2is ze%Bl?$GN)6XFN+<%C}FlUv*Gb_zoSHDIv&L{T1?mCCL~6y(aMFbbyoZ`uE7~_$l9c z@ixw0Z}u0nr*}uhFF5)8POkjhFg}>R_IG{v%=UM&j^D=GpV}k0{YiX@=eZ#Tvp%TM_q%y{GZq_$-~b!<&`0Q>hL$)3K0c?5AA54C+-(ss6eG`_9_ z+j#QR54_98_R>8Ag;qcE{0@FPVz|Gs2JKiJlEg+jHdNLUtkj-|p|6i(Kbh`y}~T_$=B_`-H-D_%&G9u*OHSeT}6rHvJFb zk<{ndq%VGj?PdI@p0!y=+Vca-z-9?^=tZCTX#cFLNc~R!!#TV0R?q(g#XX37ioqs@ z2_aH~B&#I(L9M~6Zniotx&6WoI_}%VKaA#WvQ_nmb;ruH<1GC-TYm;>-N2UV&w%Z+ ztf@c&_`_kCSRH@rs+tPhNu?(IiAKqx25tUG5E@f|hVzS|W<1H{=*hdztg-!{B2%6M zcm4GXkC_U!SpgTwLd&(|Z`D?KB*EOXDYWd!60T#ZII@_<(yU*)kzcXUVRR>cy$c4%6v%J0YzXOrcqXJR?Ea7&Ifj%uz#^z z5gOaZW$`~P>ylm_yDOpiUtWe}{Q0fv)t(A<_`@rWe)8+@mg50%+!FCUfuV2_UH#^v zKgzNE)F;E;km)ySQ|2RwdlJ{LTQBa6;pc8F|NfqEFJ$^n+hXNRe)MCB>-Qn^QJ2cO zsL~(52zNlo%H1o+O>hypekxaokILm5M7bIqPloG0E0;^<9LoC*DwFaUK>7yWLl{PU z5WhO+!4CN<&QI?LSUEfJohP3IMoVa^-j_M_u9m=*Oj>0(_EarVLPAI`x$q^ z+NKJPocK&(`TIaTci1xaXWfHVm<;bk-0aD|?iU-&{<^T)e-8ayVY|N5T&9y?t8f2} zcqR?&*r=fP+li%bKW%GkKh^&N*w_C;*y^wJi*o5z7N1`CqkQ_-u%(y3{;Kd-{1oos zUIdRYOV6vdzv)=y_qRsam-i^x@|(hi#dLTX%B3LtOF8@6pPN~4`?toAd9aNi8ZX2) zUa0=sKYjUi@7Kz&{d;@Z_V1r*ypE)w#!o@pN9DKeqwUuLo*^MY?Y9FTz z=HwSRxym;d_T{?{w(?1SOHO{PlOH`WKHGYUIw%Z>&tf?uP~1PxCT`{3cbm9>n*X}^ zaOB4FcOME5N%qEJ??PBM6z+w`usk;q&zTZ8CH@(Hl=wM`JMOJ7T~WtmPwm+sw)X5z z#b1J3GlnQ=?&A3@xl9j1?LCLsjEF&g6t=v4f7s-*w|}A1p6(BNeJ(3X`pWO8ocuE< z|MQV?doyf>p#Dr3sp!vp!u3%c{I3rrZrfk}^J>4%l3d&Ka^e&-1dT^(&ovUOKi)vx z`lIx9|Iq9IHK)JC>1%Fd^-moG6!gBG;!fUkG=`8nd z88DmIEzY%jCN>qu4T|qO^=KPe?ejBH-#!_-)}EUj8Rw!tAeBek<8tJ-J@meV#@Ax9 zFMC}npSRZyHhbEiY2u3Qy&7!WTkl)+#g@HqA$#BF%J&0o_VhlI^xLscAFe`3Z1vIm6)H+EehTUzY_d}S(D{TPKP4aU zR)h?(*~ zp19?&@vc4kHr|Q<;#m4yu)R!w_w(rQ@F!{fll`+{voF5LvFvHQGW(j_zb9!&v)?O7 zuIEE0*IeE=vA!Y6R~QlR{XHJEIe&oXXSj1pFa5Qg{`qVio&T=n z`A|Wj#WR)Px3!G-kg)UwaJfe8p8I8>k|)vk05USKUkBd|+x{rN)A0ltm&ejO{<6o-tkV52l~?`Omsf1%Rrx)uyn~SY@~ZDy zd1PN~<$Va=59Ste2yejJzt%`B{Rzaq{^PLe&qMwuyj;?6oE67k^;reoPnNHY-A|TW z*Ka1j1il5{l%K*U@Ruwf4a7awC-EI2-Y2p2HzscSnBS zofhY&HJ%EejjSViDo9`3-{jJ-rhLZIUk*0?PtiXKUN5AkTsS)ofqOc>Ajjh!A32@& zhPO)kD~ycqn{1Hyh{W3_z63s>_Pyg*SoYpSZuXSEJMH1qe+655$;Y%P%a#6d*wTxC z$nj=6rlkB&9#z@Cqj90b4O)h<1&lpR87ufW_LjMui+IJ2o z3p(Cd`-`~IP`gBR4VV^cyRfHE1$TpE1y``cD}rCy7Jz7Pi!BZlPip3a2brfpCV>$kWYoX zCtm;VsxZ%Q$HYp%EB1W)VX#ks6YSID5?PvqL+StK(u*%*Uom^)sqCx9OSsV2c&l>| zh4ubG{aN-%{3Xsj^5;1zNZEI3`?s7s4i&zGuySt?e-@=^qPsAl@!m=Q=TQm&8{lE+(Fwc(ueGxtS^ZeG+$r^?uu~ zi8pFh$j+xO2PW>H*wW|a;)#rXUSI6>y($A*yXoz%YS zFB;#rN^3d2`CCpd-T|5EH=-|pOP!M_$bLK6+g~SF zo}+Ty-5u|g{$lJ{`g@Ov?RKi}yq{bsH_df#Fe ztT9w!m7@w7)7ysmdcU1H^T_EMGkEr2ckwdl`cyjYahI^?ZAdSEhZve2Qbe zFR>|k+xrrFU*RFx-d9+_^~i;k-;N)WKM9*$+>81c>wSw`VgJ6xUtoLR;t$AQgYB!k zdLQF$C!da-S1z(?I*1Zv{|DIY>wSaASa0WFdSCq-xRaC#l7B(@yj=I|y!>M9d3h_? z%k@5+mtUQeU!9Zl3Pvft-e z{&Cp!m41dxzdZSgwT%@dpTquW`g*@%E!Ll$+Ur7`J$Hmpcf1~P&oe2nvC{V^f1mz% z*yMU&;#Bgt_Z##+#D}oG4=}A zu6?zCS$iEw{Wd25iRdV(zF#A^`rZPc$F=m)Yy*=orazfnbA9XCXuD+pKk;xn;}VW< z8zy_2Yy1J~_vgg@&ZfVxJy+x$SwZsisISSzn^7KPy&v+#^5yqK#D}%3eSzYt#o6^nT1NPCh$D z4DaV$Nd0X4s6J2AepVl~PyN#5m)b-2UR+kQZ$<;kzY8}@Er0p3lgr=xA$X$GKal=n`jS_X*5pbr|5!^e z*8LIBJLcrWsH@4>ez7LJ|Fj-`THz%48J3p@V(yGBs=|C-I)_t`d>-v*^7G*@uy5C! zhjG2T2W>MTs%NsV^E0#mG`tc0ap#nu0Z-A=ones^2cKm0$k)-DoTC zufL&dPwDG;>-BL#uF(HECx4RqczegX_L98?u04P0eSt5XzTUUml=9x2+C%Bjcjedl zrP}uKw7n(gkXI`2BWqM;Rg~{|mwqQ#UiF9dDUa_D=ezQ$zsXst+WxkZ3 z-Y+#~Zy*a0=~d z?-NM>wVb|u7ffGr>3e&VV3X_p1MxN~e;wb}ap_Ompf+5;U&lIyeep-v^W~couY-IL z{6b>s%iqoGUrqf@{|e+E!@7o3kp51L?_Pf(`>WS~2lo1H*dI+_>2?3g`1ed?s_|ES zLSX`|Yq|3SasM7}BJV8|e+sL;R!O|vCbhv9Luv@(e^5VTrPuY2Pu~gl>ASH7QF!9enlRVG7ZI~>VO_s=PCVm)nsEKiWk(2`^IN#hKDS09$(Lx2L>bACndOcf-=xdAixLE4G=z?(+@G{*w4N ztQi^qa-@;wK>p4Qaea4j@AmqeW!r_n2U8lpFB|?Iyq)aq7XI!Y{ZnI z=(&kqHfzwIqW*-@H*7mjed6HPr0&t6KSlki(;vOxk=5u=L4T_F( z)SvKjNkK8@_ePCB4f<0|N_D7#^pd)a{iO~y{)E8kR0!jfU%yt%zr8uf^KvY|{vx`j zU(9hsjvI5_l;iO^ZqD(%99y|nPPJ%gS;{>($Dil8C3d`iF~|Sg^Zr}8GxAm2S^L%H zSmp9^y*J^xA;$x9+?eANbKC^09rWu*yXkucMdH?u)8Kw^FMcoceuVPglb;XLO(FDn z-cq73#;7`Yix3?zm8C+IefL*`8Jog8X;EpwltRB0&88Gux~LsM(6un7(9@#aAdkDh zR%pNM!f)4IdiQVpf5{(}D~5kxAl3LJQ*}#?k>z0C-f7LquKk+I!t7qKZRZAC^F`+} zHvOEPm_t*G%f?Fl_w>bD6_&OAckn5ScAK$t1DBi%6YXWI&P5$v3B~kjldQfWjE%U6 z*u#nXFeswaxm!~1ympBEP~ExC*4Uu7u_DcV=y-g>XEF_xwV4k{lA{&v_SDY2saY9^X~TOKMC){ z0YX9Z@;}GYR{yh@yFTdxfp!Xgm|B5mw z$gg`bOKum0@Duj;CO#%&CSKrJ`Hdwn%TIp19nq~%`tqY?7cBYl%I|ec_>d%*U%H<8 zt&#Xx#t9v(Z&o5gGso7;Sn6F61=+uarMG`8++IS$6vmu;Sl*S=%g^{(*!+x@zxE%W z{|B(;|6|Jy9JcNGo&Jgj?53VJW-bC%r##rJSlMOS@Pp%M8WEcLE~ zg6toP-0Y7pckBo|pIn`0vDV#|c62ku(#N@0Y^9 z+eAO(F^S)75&h!#O|1UYojBDBLH$$rO|1W%N9Q~NzB%dZI|4c-OYSX_x=Pqhs>mcm5IV^Oql!<$v*Z(NAT))W5~|k=9uGO@e)XlVQtG`rBjA^u?bzR{i@? z7oWeLt6Bb%pOur#Z`;dn%*o{^XYv!a<@iQLu@>BugyUpTw zp<{?b_g-g?h2KEdH_2shd1Pi!=|4ec>1AJR_V?bLK8yZU zDZR!Y`F+e!tnsG+`|+n0Y~#=R_0gy9)1C(&WX@7bEw*9FKJIVqq^;t36ll|4n zzdmAk?_~|x>`Q-h*z`B-5!?5K4l#j_Um8#B_$3~e;|mcJo`kPaJEofi)jm#j8g3707&*WW^kAbh`r=a&Fo?>b5J#>VhhHajA>DOY<>+4wS_2olh z`ft9-SPHM*TGsKO$?=iXZtu|NDXVvu*jo|lVFz8U&Ez+WeQ z@dG*T!nX8s`IUK=&z0vP)s?L0R3?|7Pd)l4rTqHC>VHEL4}mu&fAuK^`3Y?WcZwLk z%W@aoH?iz>clM-zCT#j*rkX18HR$u`I(+wCCY1gl`jVAL`nvOP>E##1qmq(ekiJ`T zF!?v8{H5OmHvOa5t;*)YKT-w-+3%PupZr2iU-r9_pN`oIvVR)+H3o|H-wrl?*&D|( z&X>1On@ag-u$OPZ80pi?C(Gn|F8Vvldwj}I_T@Kaa@9{h)js`Nl;6v{y80-+-W&Gv z4z4|A@2`%fzYF#A`n$UNs(pTht$jYfpYIG&R_$X7VvTp6-^{W4o|o(V#q)YO*7<~& z56gFB*%Jh;R?#LCqD(To)H@BJ&V23|0#;YdlqZK-4p9Qiyh#O ziIx6H*wTxSV|y6O-aWLp*;D!SPLq{a?{SQTz5R)>*_ZwsPXCzq$e+9$Q~sJ)|2E>i z6YIMUD^nl&mMQ4FAX8XgoA_27K-yw29iB6Nr{Q6^C}o29e#iPw!)$o9C=TC!z?Gqb zd30T3rGJO~i%DPnEd9q=^S0F^)0m^6dD}K(Y1{jkoV^@<ax>QLxz;zvx){=Qw?_o;zE5@!}kxP5&|Z z{fnx?`TskyxS3e(ZLIwM3j6%KQ+{Ll^&btlb?J5fYw2ZA#|vZW?+1H*y(eLE>3@*p z4XB@&5kUvGi|o`ua}B+whVkm;Qsqy}tT~ z+1Gb7wuWo?DM(-U1597v&CqyQ=j5k4d25`w29xe0wu!>#h4|fq*CS?Kk?%?T+9cO| zxW9+@Nb);qPx*y)O*{gAhxp2g_1z6!&uENQkX+YeCf7Xn;{H*b>AM``;7t=N{e7^d zmwqGdZ~E$A-=b^%>Bkj#ZwUQUQ+f3r3>{Bql14%Ap~|nt-b2-U8MnZr`6>KkWFdQ> zcwfq_pzma8-bcIszi&t(+aBA0j^a$??-VK`CYSx+A+!36|CZx7(D(Aqsh_dze-3;5@0 zFZ&Z6t9?EtKWiVc`k&|Ba(qUP$LE+XTao^2$I4&tsrmAJlH<+T9$r2o$9iwT%5U>|cv`YAzpfhk&nt=Lx77}wlUVZvXkT3^aW<$r%-c;CG5i9b zM0vfOQ@#>!ioUp|ORw{9uYV}@`**DSBVJxlTX^2zvF3$-jl8ZPje_Q()_YQVMxY?M z<{&n?_+i?|Sm)bUP*^+Pmfzw(*uTtgQSZr#pP~+C@B7x}^lLF8#TLtQO^uGp4~EUY z+QV4(^&YR+f5^$DukVPNzWUc}%If=<#$)SWn)mk_%5yU76i#`!CR>fR(me|W z%{%-pW@h zmsjsm`TQs4@|WD~sk}dMz325`BtM_O!~ zoOmx-gV9@wN5PN6XCxkil@lJ_#{iOTH8emme`kAGdg-4< z{-!VcdT-I>x}UH*<+1w-`TTS}_#FGs)5*Sg+r%UbbGRf?eqmiEx4u~Be(zm1f2qa| zsb0y)Pf@>GtkC(QxJ-Z3-FA`JZdX?FtIKOEVm%Upk0Ytt#cMH|=icUcn^N|ClH6@E`K6w|VF zEt56an#`0-1+>J{U^oqPO_sD3X--sAij~&26K!IVo6#` z(XOI^99Vt;>W3q>L>qH%{%RRT8^L2vHU{4{)ahU zl4JRadi@SL?gn?GEZS*Kq&)J!97J5dr}3AZoMY*2&d)-z(PD8~RAz+wxL_H#X0aiz zD5mwcDC)y2grW><8UC_loD88cEemORSS8mbc}-e2B)KiK!=wI1l6PA>J1;F8z~%Wh zZ~R~W->`9}|DCgjV*3Bzv-97``d^b2$$K4sDHOx9TSL>iS#zV}&5cc^-Kn`amUwgL zG5TB7-kY+)eb&@m->#M@wtf*YFBBxDR!%*ehFl-zB z9jd=|VNGKwPeWsnHg2o3&5I?}-+p1e(kl%5qO!jZh1E6mQ~zwr@mRR%!*3lhkX_2Eth;0@-bgm&O82jjt6}6^Uo)uJCt7s&8N;h=bsbT zZyNKlTRmPzua0$Aj(Lf-PW%1mu+>X`%Pqex`=K|$-4YjN7oH6FR9b#2_gu&0;g(Cv za&fO5YyS2Dq}A{9tya#aQtt7@^=sIg{hs;P2e57R8wKk*>n8jxjEei8szbOWQmSln z`Ro=%g?P85uwJ0nky>+BLMX%q?;baC$_r_cWRFML1?LCT!_y)q=n|5XPJv5)rAtsMVh>Ws2f7g?kgkzJL0E0?LbdH$PEJx!O2|P4z zF~x_L6^<@PyOl@vZso?CEQNSbbH=i=F&n0(S7@r%A_NzWD=LnR;qaF<<2O+%PvJ_U ze5A_f7lc*KoN-nJdN85$gFE%aj0TV$g5&avR7VI+5TQy6?4zz zJ3Ek-k0pV8m(|+S63h4Yc;Y$+DadzuEX#dT1tq@$Ho1J4?}MM?r?4IT6w4<9@dx`4 zuy{GK((7KKr5AJisl=y~z5zZZl~?jJo%|2TC&Q;FxqKNqVy`~g&--%9*JTG}-q+<& zxOGb3+%neR^Jz{l-$3<&{`?fAKZ&L3%U9tp*zN`BK7;PlrgQX6bG$zd4^R0?|DQSi z@14HpH0=ayJX8?tIOS;7hoxO; zPsYy&;d_(5((7Klr5AT&H#C-S+p^d{il0KB^$mdCS^vjmZv%Gs(ePL)6WWqqW%-kn z&xK7c{m&e4i@xp!>v@KPeAjfZ^{R;3@$mYvY$&L{Jz=Zw6!zMq;o(u7$-c^F`K{h5 z?jP4CxqOGTJ!T}<9JBq1f0S6h&@^F%Z<^SA)6^f-p1%L6J+1$!f4>d;{{0WQeX_6g z@6z5r{d=%aFF#kG{%6?IKe27R?|nzwzMZ#@zE{>?)gHHz*YK2I|6;7Go{uX?|3u2; z^>we;^ySMp5xuWiry#zLxUqbRb@um8vM1j@`L%lAKDE!_B$qF_*xFCNu(imPMq$!n z@xI34NxvE1ne~4OQs!5M)!(kA917y!u{8b|9tR&)kd*l=;a6B5k=jSwL(ggIgA`lv zcCfXle4F=x+a|gC*HN(bukLgfwUzaEZNFz=zx|$tZTrbL5fdff#LJF}=L|=t^2m4i zBINs$MnQZtOXCj)GY=uWnS=!Gzv@5tCVlO%-w?O`b(8MgH>d8$M)gd-czX8WeerZ} zxmQXrUp(#a-0}`VzIeKqyJBLEm-3yq@lw8*+n_lw$yL97U~VynAm6(?iP^IW?O(UT zGomLcIC2HN6-l>TqKa=(qZ9q0AU2%Q$pN$E#$9J>kmS&7x2>RY}&<%?-k=cl0lHH4-0uMyZg5x&2Jq|rD1 zB$i91`tO7MVB(XLTOjY-@xzxjeI%uO}?1MY0LKSK^+v-pI)gg_oq!y ziE}vH_^tk~{oVTe)RTE1gS4lH)EqC+$Nj4`XM^N-Ir(!i?l#%Tq%XOiRap8nNq-9E zv*XRpFw-!V`kV6KpFU{$w_Att0oE9zAYXpXSH6YgF^<(=wLN@)y%+ZV^+m_)pUJf= z`LE1RLG7*n;oJLE*xIut`e(y!lK#vy@RfwOpiT-6$Y;YJB$j-RlZ!PToBm$t>)CG$ zXHPPd>zf@bV^{vQ3d3P_-4THpi{Vbh&rYmwZZJe;=O)%SH^fbe_05evh@X>K_ElGJ z|5DiOt3O@_&q(^pZya%--)*qZPu#>$LHWJL((-%i1)dYI&uzngr68`QZpQDygW)*S zK%7(i7})02Zo$UenYQZ9Hdk2uJoQ6vl8ll>=MezN~p*z9YL?gJ^W9ltbZ z_D!%IfAcK;%_xu87kmBbj-}t3{Jg%{^fd?g9k9-M6qMfzl;7myqaACG@CRUx!3vrq zd?s8-yoi&*5v5Vo~p(`h3h7;Jt@y75wky_FF!}RNeI#x zoBr46Pb2^JlfKgHn#R(L2e7|*?!oxw`Dmvmj2t=GJV-w12%io*YU>EOa7hg@>96!#zOF=-zj4DcjUL#mai|BzOUO~ z#8){UKxa_f*!le|4$gmri^<+Yj}*c;AJ$F$CHx8HyEt*LM+?~ol<%^{|0I1k`p2P( zM@k?0af#oXUI^b9U(2O`mHuMsFC_iv@C8Z!(tU+&73y=fOMeXGnNNQ*Z0T?Nx)A)* zm#&KmUV}d-I&PWBUrJ8-+a~$S-?05C-)_rA`HnD6l)bcc8b3nhr zh0>ky1`-lF;p?-Q<$ypO2jD8|w`pSe0v!!^O)Oubad7*@r*pGY=azPVW(4wD^42+n zg64SEu~hF9Dcp>FHuXCzVm1*+-LK%!6F-7{4t#~>}{`SDlh3x2#D4g2wO z2JFY*$6*_P_3oS;G3;GB+20BF_H{k$?cV@<`>(;?{%qLWZ$`zxDmhaXPte+jEQLeV|@`*Y52RZqYoP1Tv=hJtEy?vdJd-=mTx$5KP zyTg`VzP|^NpItA?_jeRLji16#N&ZO0FsG~fqsgUzuVeXgJ_Wy$^yMqeCMw-;lf9Q< zZ*LLo?JagJ{mrS5*WV5H`ujSTZ|?P^xB80Z3vDc4#(CPeTk|8xcX1#1acuk=PjvEM zO20h&k58ZHW1L*&(Yt_F9`Q5UUsC@O>z!&G zF4>d(E&8v?Ro~;-x2?RgcROtMB%k2wtMas<{Fc9X9mY4$7ch2uK6%+neqs4CYYuVU zPkAAgSN%oDbKhT1g6BB-u$+7o>Sl8J{w`o!nlG#D?Ld9ap5zC?CRcwv5VrK1v-oc8 znJ=yM`!b%HzT~@7Uz02S5wwS;-_?#d*Ic1op6A$E zR)eeA<_g;0?N==KhwVQ_K-t?zaroxRiZCWa(44S0lmFy&K7BU&7a$+YHdlBIK7;y9 zO04Zshe_KWYCo~HpVB`KTY9nXzZ)z4hUDkd9|v1{%_%G1CT1VzOux^`N4KgC&$p*0 zd5@)-bCvj`i627#G38%7v3!ZwqCCeYmM`%#^luw)f_}-DZk0p-!{emM3>)gl;7)L0Gqzb zqxyKcz6U6|`gHGPCoZTcGv+phJHAa-BTLIw!}^h70=uTF3&Y(BEmsTcFKkN7=Cqub zmY=8PlC=CGE{nmfqp7M`i1~Fhu8Q1fjCGZ#XId81GAvkM40}pgX40dX!o2|&|GiKb zj!eIjR%QFuP{$_u)u8*GzZ$eN{%WWT5P9vd*FG zvlcov$C$1es~)$t#Amqp%yPVBv$=IvY%Z^NCd(^{t<7((@|qFzh>w=-apU>(@Vojm zk3Zw|XO;2%c}st?BL4`XI|SQd3~bW6X8j4ijMqvXgZ%c;x~!>tScEbt zR_Z7+tnFd<#vBjJ@t7P>&T%tb zO!fv~Zywwe)=z$#b@*d@Zg4C=%@g59boE<;zxB(o+DX5j_+bvk|JpOB7^U|)iRMG8 z7xE;qBx_o|99^RvE%lLXCgb;jJ%i-Q%4pKoT7}7-gKmn3!$Mr!)K6OzF`YEn4bk(; zSv0lOu_lC?@`i7ywUt`x+-MiSB5umChV9o>q0Cy=rBJpw##Uu@+QcC=rDfRa$;zOT zy+Ji*xkD+|%f*t5XVzh0Nw1y7Rxia?ZkOCVRjQ`-G!(`$r<8Y`udoMPpVrCeU^C)& zPN?gXqhaq;@H@D5s@^f2AN>I?q_I%??bza8zZ2~BkAzKMJ{0;+!XemDkPqEuu=NS~ zOk4+>55)-hA=rEvl%7wQRHWDZFqU3EC$q6TFO|1971K54IUzUBZ5U$5!{(DC)-!(3 zy2duv`Hs#ZKj5dZGxl^3Z$t7_XoS}yuIFgRdM0Z;nq5H8TXBJ~VqN1I%g1vRd`e0$`6Es)AJ0Xw zJ(Kyrv3{Lhc~ySZ#ntrw5ucHSi)jl*fnNvS;>8RfM9**#qO zaGeb6IZg;&$cxCvi6xh=m!IY2@@X9n_vfb|pRYR79vd+`Q{{n=pk4}ZVShFHx31e2 zu0t;WyrD@hJ~zkmQ82lDie%faDIe?_{bzVI7X$WhA!g-&1G#u)l79_Pfz^i;T8x><$!@8#wXS1tHko@RDIt`<&{t8a9DjtVHP}|rLOxG^!#%?%hOCBd(*LH_T*#w zA#C;4{y-Nf?GN%%T_`#06prm1eHKql{Xz4Ku8r-Zqd1gT@A{j49UpXEYR3n)-|=vL z(%1IX@y^;$?e!Gw+v{oA+Dqf}Yp{*apHd$6om$c8; zKaaU9^1lZ5`QHLt{_?40$SK|PZ9)0eelt`Ug5;O8ytz7HCi#w}H@W)Pjj;7EaXq@8 z{rtKOf_Yu+M*K*z#BTZp_IqcXIh$4y!(4rzJ3RUvA48rBviF*kYdrW2RvRdU_Mv~7eWhO+_USKi za_P&5+w@ib)oHI8(Oj5MI)8q)J~Hc%BkBMB;JcE(_J{t&hbNYO^)Iup{&O(w`|lyJ z^&ib&s&k!@DZP$I@4}N3YyZ=}V#g!xFQ3BoNv{1x?P2AU{D++UM<+k+jCk(QoYL$3 z>oDSWzNPeYU~m6**zAvNi1%Us!hWTo`mKq5Uq2nMt$y17RA1ZwWdBjv+kXc(`?B{9 z?CmXEDBD{!4F3~YZLT2R*YV&ZlB8=>#%H-_=ugkWQAWL4+WJ+w(0{#AK;yc zTX|&fRM^`)2KM&U7tP)?BiJ9|^;3Q|Y*>xg-=_Rjzj3gy-ydOXFUhCnnM2;wUo9|_CH_uV8H@hVZD-EyfXWUvGS{dDOL#Ly&TVfH1gVOFz$TYH-N7(>`;mSL+{@WJ88&^%AH}|xZCH$hE) zIvllTb{v+3yTor4=`Q-yn8jpvIW&_@(xUvjgr^k+~WOD~?q_A-8gis>2As%gB^ zGv_a1d*&>AVsGys)W_0GzB~3zzT&v5><04h8H) zRt4#cOrpSt^GmI|E#>?ybss!Xm680#fj)f=s%AQ1?g``c}>0$ zxxQK35gmm#0}I&%Slf z#^9v-T%Pn-rvHr2`)6Azy{mo}g`sxp+zud`% z@IFQNlwSJkAEvMTSEN2Zf4%=<<&(YPu-WU6J#9NK>q3xR$0L)gz4t@n+k1c5+Dq;8 z2<+RtquYLJ@B3lj-VeY&{YsSIr}3!>ImqKJ~Nyv-(TS z7w!7Hd?s{kJ)WOJp65MZ2tF*FriQTW3z2V3EV+&!Chvn>J}jptx%ha;N-up&e+;bi z;cJq9o|S$cGH;JVWQnEUmHPYip5;@f_S=A;f_%!V$ZtTz;8P|aD{c#fa0eG=C%~_! z6O{dF&joOOlFQy2Y#*~H{l2j2fA>At8kA=!ZLXl>xxUNGVJ-xnPxOS}NUZaTePE3N z3NK+#*M}oIL=HZ2j3<^~%cc3w^-|o2Nb-KCREH09_Qr<7)9|Lq@1o2K`VQ|%uBq;g z804pN>^8ad?^(W*+qWyTzAJv!O5D><_N2cF?9(5xVwt7ibCpW{s@2PKrC+{tB@gdZ z$=5r6a9nlpfBYbo|GX=sPt6*M-?^UebQ5o#SpBz|vRZ#$lk}g#^OIcLQ*7IFZ{%&+ zehZvjZ1M|{%LnIuCl{N1pBwm&INR&3B>xC~okPz{EcqI2KQBKTHhCk1&nf7(N&5G~ zw-C4Ot?eha?f1?>asFDJV=Ab<Fi6c2^g$ADnF-SrSeOEd-C$-c>%Wkl)rp1 zJzqunjFtWc>|1(qE&Hmm(q9UjzW8d&U%|_jS?Ood|9$%Ewq?1}w_Ksjs*mmo+V=Qj zH@^EzyFE#tP>_$ejy1anV*YC6?BW%2jelOgHSOcm|K#MC?p_n_1vAWsFpl%bZP6bb zF_T=^?_RERH80ok)XQh&!RM}nn zFPvQI^L$u!IlX-LKBz7G?8zr@L;AxNvPlqM$M*KTu&&IS-*f`oQ};Ygf4@#;x#s5_ zi{RW;AF=NLc~<**o~Ra`>WF)p6|=?3G7cM|LK{U@I9k?_9=z_&(?(Ri)@rw-;FI_ zVXi*fUVi(id@ne;SkF!@f9W^E)*mGQhm*@kTh|M0<`5(oTYAl}s<~i$k%xlh=fEak zyFK42C++R2!PH+iqx?@Ldxs(KNZMPId>p(r?fIv~N`EJ8>BSdf-&pf89>92UQp`Ti z*9dn?EcqvlA71`7nFWWn@=;#;S^0RGgOev$M#VY&gwXJArQgema1n`q^YBv{<5=^Ho%mj* zpGv>^ab7g_3;DG)<#<|-Pkg^TZ(w5s^Q?VPIgeVu597RPgRob}ylHb6#remYR37Fd z8}f%AqCpBn!5tm!FfA^dI7->gA@vW9N_=~)bGidvBswPxe0uqO2_PI{8-*ciq5 zij#B-q4yL*d4hJphuu`Rxf?ev*HilP_^{`CN>| z(qqY<<_S}qPfPp>@;?&aLt`XC=lgfEwET5&e;0mPLW1P~U}p}VJQ+>3*u209!(%RN~>iqEF88iLXKbZsIc%PlKlue>Jhb8Qe_V z?CBe>^WjsI{401d@p}@heZM7c?XC2+)W_0Gz8mc2I>$Hp2<%bBQhCMvFR{My`W3tf zX%zI0*JhSy2nhPdYcosrVFl^mfUfCFJ_Yu29luO2dpf>(dt%eyaeJOwqJKj)AM%$y z(^r09)KuErq_!+q{$jJI{cjYu==LFK|NR3o+kZ6A*PpOIC&{%x>l)qfPpiVVKgpha zqP)FbV6zv-gIxL{F1_-*0Ji*O?{(PQdjt0N7Q?n_KEIP-%TMy*Ir#`DUpyq95A>i;3d-+J zmcD$=u$52xkHeHJFbW~fdI+MZv-b0TJoPQ$0H700JSTp=Dzni3QL8v~9%|5^wyZ|RX= z0C@T3u*ub)YolAA^wpoc6Zh@SE>a<9mng|sY8mgJTYEl4Mb@FcR!#j!K0g{S+a~+k z9(u;&w?_xq(o3%MBQIYoC;wwkenU<^B`3e#$rm3SpSO2O<=sh9@1w8tXFVrY_-rcgFc8<=Hwr4>_2~QZ z-HptbPd@0reCyDDzI^M#R=&nr@%iHM(R`+Fhyy{cb1)iCB6Zjr@%fzy$z30D)+9%mNlEPn1d>Um?kWa?@ERP8keMscbe?nr(Yst^ckA+RX6c;K>;J$5Q z0?k{)W44NU4b=CqO!hPn+j+2`*I+no^BSmpcfwXa`Jl{Wds%+s1&&odeUHzVuVag{ zzIg&s|{^{ps(D_V7`QeK4!&ZLz$UH!K%tvPXmGL2gALOUd z2#;a;RAS|?XMR5a$&}yc|0(SAUk81k|GKc{e+nlP>bt{~8A0<9sqYR7#J%kCv={Nl z#PSIlPh97a3QFIR?dj9&JzAf>Kin9!qfbdAZ0VKX&y>gOw_<$s`ki3Y??HY|OP8;A zRG!7Km+zgEkD{-c{LcARS&_2n98*Ex)Z3n=oxdJAJ?`J8f9vs8;h6?QZV38@>_eor z{Z0D1gJSynCg^-LTTn*@eN*;fkaN#?0Jc<5na^-(7Z23!H-=sCU zSo6+#Zg4#R8Rpg@uLgb!)7AGPa&jt za(yH6D(YwBvGO~P`uO~sV6!KE-u^1-S8;K#dAA-xN1+#kx%go6P>}xC^bfPIZ;-Cd zdJcIZtTdQ;ZHQf$c(cS;B)+|8A^22vOuQ%ZcZt81_;9#8d1;JSI2ESJv+9(;zHwPg z{p8oAp#E?;aqAD_sX6{E$33W<*H`;^zAMK&G8ULz&p_HEe=3zn`DuJKx%fQV%UJqr zliuqe$^K_@=|7j_NpAm>eCbwY{Wss?o93C89zuCNFS}eNe_mH+&C4m?hddQDFXt!lEfKRjx>RR} z5Z{G5D-@UIn`kUK%?x2UC+bUx+4;84M|ccZIv>&TT;r1+&tE-|Z_vW+Qu>*l<2*E% zr}{rje!4f&oaFDrr%<-19KYsx;g9$;P`1%YE|!m-@tjrh*?{{bxqNbN=lC=rvF3T2 z4%_)m=MSsHyw=*s6t- zq9C6DJ=a(>V$ffg@|gaFPpY$_^j|x_cx8Tdrg z(cAyY$>pQ51M(+Xryw7Wt*R@1G*GFKYdqaOs%I*n-Y50;n~_`o8n51?zZ;)>JM#*W zc0JlyVHT|VpPpFTw;OERSMq^5`QACXe2#tk3v==*IXNaP?8_(Fr`P={pTFM0_43}Z z$yMIpJC={u7&-y-YrRF7v>Ve+MU@<>aHexjhSc z7bm}yeb3S>zb75b-rca-Q+lyae?9%xr|-kIFy8U?>a58AzD3GU^TKFev5AhiXY4Ru zZL8XFe#I^kg8I{~#H_za-j@Br%XPhA@(lTP@Tw`j^q-c1xmaiGHHplHKU=9)#6w^;{&a zaEm4v57DBn_=lAz_I??lPkgf9DmlF6oyw5&zfqt&!VLx-CsVE%RKm_X~Q` z&HsK)zqFn~xm;c=-+x-BI<=<04_aIN(ozb)6c|f>DJ;b?^OwT4zp`HE48If(|CRMi zFJ1g4^{o0=*0=nXaxRywyv%p@)cd6-KaP1h)_3^4Jj;DwuP*m}y<(30!9{G#hQ6;i zG_lsn|7EEAUY_P{dD^k&X&L%mr9aI09M|!Eyr;3tw? z_4$;z)kpfe<~04W*c0o#TtW7A>^J+h+pcyVi!aNu{6tOu|JVQj`|W=y+wb3Pf88_n+yBMf_J2RO{kypBtL^`X9B<`V+h6y` zeg9WpzW=v&OxBeylmGlKcLzXYRiKAHrr| z{l7Ey@%?`bS3lKX&u~m%ths`XwZCis_w`kKSb0?b@vyJ&`>?O?!?4-Y{@N;6Uf&+_ zf#Weog-_TDu0ATC!_x;yf`Eh<`;H6*RBTpIE-bHdD~NF_T#Cm00uYG{f4a3Yu4^ndNDTZ(kjs zd~E3$s<1QpT?3Den4Pjqtnbvsnui3HQhl`jb^TwTu~U-Mwx0KY<+6r^9EtX^NoL(^A&XCe3HxdgWIG*F)_;Y*^qU~duZ?R^BBy@^M~ zbHZKNFG8UIcOzo`X+bBB&+vswUR57`Z0sJb%5w^GR)?VWIhB}|r$0Vk`%r$_R8ak9 zvGnD661MV4{!UK*u9M%v{llKv>&-d^=^p@ldk4ba-k6;H3Mbb*duw6m=Cpr~fK@k} zXRrSFI8VfoB-j3V1aiN>>RirP`WkDz{zXo%^y3|?{ceSQ`%Qwa{iduN@3-BR^4IwC z9C909B>w>Ray^eSx!Py#T>ZPd`fDB__3zP)lM0#_>Nu77Lzl4pC=kaA}!8C`7SF}`XpES)`iOS-yrkp zbw1$JuL4{8%juYE+NF}cuaA!7*#)V;>sz2xko#|e-URnb`uY~=?eGSP^)1l5;T02W zd*2UR|IqeshW+-Q0o(SzpY$)n$E?U7f{qt2vGm6awWryW{Utfp_BXk<|MIZkKXeb$ z_79bZEGo*Qeap)8-q!dZ!9z%+AU>F-@%mTuP8K{tLW0K6CYCb<1n~tdjkUdWJh1IO zkM_R?a& z;zpLnxBWTx{})pEda-d|M}Ax4E$)oxGLNM6J<(VHmEVqn_(8{mNiSQvhEd4#Xyj*N zYfG2@tLjR74?9-+W!QJUJ*8ir& z`u5^n^zE7CK=f7rxk)Zo{f*Zmz3TtBB+v7=uf_V?{;KqDnL`g(hwWl#0@ z_EdjMznFvT6O{inehRO_YqL+;`J&_}!CqdV{9dl>dy_A}M^%_pXLvN1i7z6(vFzX0 zx-$J@*r#u`bftd(HkJBUz+V40*xT>FY)&7p(1%T5^T=#NSx=`93VD`~jmD3iqd3e1 zvw-+kiRBa2rV#s#R>=ovDEcNB>-@xckBL>;NVeZYtW!{W`D-)=is@f~O@Bkmr}tiU zj8fB*Izs&KSl;7ktvG*kX&CX{(h6lsSQ{ll#GitHc^Z6~x;9#)TCN;aXAq zfP(lrEfXI(ojizJ`%AtCY;tiw+RIq>?}p93SU!oy(rI zd3D&n2PFHl_Z@6<@c{b2@g~pnEy*hGA*B2?ug)UkT&9Px*-*a4hTQfq$v1?({21!v za+Xl3?eT(hK zZwukusrxS3@V(zut-0|GtoY z4G&EA#j8;tW95Gc{nhdxgk0Z_S~(5S3)mm^d~Da$KdwZ+;WFG`NcL2pEnr`t&tS7B z``>Z=GuF4?F2I%@&rjzG><#deWMA^`Y;TjxXXy!eK$6R6X(nv_Ti=S?0KOv0#dP5c zz7(04|JBKr-`=#3&yT5PD)RdyZ28^Vf_Z3QE}KGl2z~~p${{HKV_~1)r?j{61Cy%5 z^$({}A$$Yt*fBG)~7v51FjtA@0rxe7xziJ%Plb=t&GUYM*XHSkkS_@NUi+(0f4@ur75Z<&k0t%vZmrIW|A)Lcf!Av~|GxKq&WW55oDf7!cOpn) zNMa0%I}s$*zlkv@4kf55#>Ut?5ri6oAUXy?P=spb-)fy0V~(OI)u^VXYEeo{>;3-L zUf15&UP-ji|MR?`=lQ(vO3uC4cU{98_PqAmYm?vm&i-df{)fPp|Nb@R$rwt1B0dx} zhKpfg#q%KXGwe_Hd`LW>Zo$R-X&`c&CTqLcjwvX`L9*V zW&hK@Ro;5ND)$~(@>P`Qt&O>!M@K>BJ8qM*d>S+MFnuzwvQ8Bya&o5n#XE$WN9k4g zI0*@w$3tVf?~nT8g$aAP>hl`9Rv+z#0u zi@(YBwC76_zSZ%elk<6cM(5SdmT$I&dB(>^);u%1ez}Y~D2P8Mf8!rue_MOmzGv*q zx8&dkItp8Vt1Ua8?PGY3!TvGW?B(zK9M3$T$Ik0{SL*M1e6NyK-cH!cd;7(V$)b;} zcP#JY@MyT^%KtcQ{)TZf(edrsSU$}&RD%zXe0Y@Wo>yTy%xe_I{k80OOzbyK>?Qa1 z+a&gEl9l{-N$e%}_IoAv-%RWeN$e%}_Qxgm>~59()&Jq^zb5SM{|kPHKLyo)9hScR z4uQSBj?LcwSlHY5P3%ui?CY?%pA38Zbzz_Xw_%@uzr_A(XTJuWBOSDd&Up$o8e7L_ zE;~Xv>Gy5f7HrSE<(TQ)fkQd|P3)E@=-YvkTmP{1FJ$}n`sX3{`jVTz^1Gh>(dYLJ z_p{#qw&hBD`9B$bFCV%>DVM*mvOjo#@3Osn{Rg<%S9x>~IXc$M7F3-uD$ANhtgDF4 zEMn7&SeD0R6=HQ7v%QFoDq=m07&HA5q*n_upjpJaidemfNj(pnFClGsaj()+#QGMo za&%auC~12U%iG|q<~}TI6Iopfjhb#W6+&!bi1jGaF8-Dh2#qJdH8VuA#>FlcTd=YG zVYx7CbSq-DLoIE1r`gtA%%rtO5z8;QzFBMZDq=&6n5F%5$CYE+KXQnFYPL^OyJpEQ+Et`>l+o@^p^&qq zm+?}e-9<}zR<5tXeTw7_W>=%($lQN}3rUU9sb%y67iA-h3O%M3(F;hjRC+z~XpupP z=vM9AYEmRSUYT&Q!%>e^9Q^lY`E~yG-s$pt`J2Uc=zGije*mab5y~S_krX3U ziTaPK*9{{IgCmPrqloQQ#P%*?jphD)cOpHNpW- zDkHKsUC4)+z2abH9<{=V;;r8iVf<{=W6}JB4w&Y!rORT{$iq1-xFpTSw)FZx_)mxO zUM(HPzq~9tD^83f*pmO{^;nWDm+1FDty^xP=hAl&T{bqC#tF=Y7e>}|bGpup=jM`s zl*m7Ga*Yd+ueGAR=K9!Py+-;=ZL{{{4zAbM-JzVF0JLH=@1jr)L1_3slhDQ5&(exuZ1K z(HMBNgbM5B<0`DYlAleo$;H3_Utsxr6MgSb;~>1hFJjqCZuU#!pE&srwC7pW*Y30Q z-2DppV9KDNanRFY-7721IWeCr_2eA0$Kef$PjRgFGX5j-LGZ;qwDsK1p@e6?eh_e$8x zdph>JQ2#5U|K%yzhiz;Rku{e?Km7Z-94ag|?o6Dic z)49LP;|;``u*OyHm8)kzkMh_k4x$@QF3?_zHk z+e55z?Z%pW;7!=(9+>mBmhAhq=M&v>1I>-FB5^%ySI}GtyK#)VCdW*3A&4)Ftho@r z0o!wS&4ut?_~j_qTnO*Le~zrV5Vm60tiMP5s~JSAxl;N@mV7$(H@V95DeTKLmiqegh|RysBewF$ew7ug_Tyo1 zFZT9gvp=F<3-gF|#`0afMn0E`l~?j_ux`BkXxPgK(LP?jA?)SHvh8@e=6CnhoRL^d&!rW0#j73!7Zq&sVUs?deKB zrYPN~Fce`qwA=vl9IW6a8N%`c$D( zp5G<p?Eq-6Pjb@S4{o?|^iIs9{{9cVAlS2yLa%vRt=bPEc0TbL}+b`{!Uq4%;e)IYX7 z$B4yqA7$EyRJ`=9cyV^K`}gSkDK?`n5A72QQ2AlkDb77!(BYvRRv1%lZ;q%A=Q1>_ z*j2^Q`&cR$`%#`$x6MDtAyrJ2%ifHjZA}xM*BUXBFN#*pkwe-ShBc7tyjzA^-Qu-{ zMXbwWaZ?qNHajm%B_}6b$`mzx<9Sh%v)|*w)>Ms z?9n0?EF^7pF}YJ(ZGJT->KoD&t99`+n+w{kmtrB*l9Kj{>F*`|lKLq*rhd$N z!ow0ClkkxV>$?cv-;9LkB&_~sufH&1^)GvQ2mQmI)t~HH-&OEDF5w9YTf2< zxP*^Pcw)j+6P}Uq?1bk=);_C#{rPa6xc)Q`!JF_9;`&qnaG$?cc~ruEKCFIcV zTmd84vQ`aKg`l=`Q2ST#(-`5Q!LhEeSsXg^tQ!q^Gw5RQO#uxLdi+{S*fRhdYiL`hlhV-q3HQ*Rfrj)9XR0AN_3fGIAk%k+ zMp*RJVpQK1^2GKICDwZK)78?te0z<>`L@Uc^~`F`2T5$pWi48qyL?t#sjKCj<*{QL zXPGl%bd>hzY*KqizR+*(nne(?$2UW2PI>c^OK}q!gyDzI7m0i1bKlnMVT8eixEKItDa#bVhxWpvV%VzMHl7Ha2OEbo6D4o=@| z;OxEDWlj9w7AcGRe=OF*!CU>7x*t{091Yj7oEwNa36bAG+`kk4C-{LV*E`l-#O=7g z7y9bUFNQ+kPh(1T98{3L-pMk3@%fHV#r{V4B>oh{pE#EO=4=^ee4}0 z&+i7OuXn`1%)ViLz0yAt_WCnm^RIX2Hl`f?LTPvo2J8A*$7_Yxx5~c@&(PHnH1GdG z#Ky+*>pKDu!KdZo@LdA2ZL!-US6}VdD3`*4u=;kjP88I)u6Ga)&N1|@b9-F$txrb( z6xgoWrLQskUSDI_*NOJ3&%v}ur9QCLN9CUdTlwYhA=vwS4mN*pjmhsR4VfWM)@0u<>#^|NK;UGw`4gl5Kk^?Z(XDIi>&Q!Z{n*& z)|@ZXh~FMr^ZZ{%d~)QCH_rFhn<9784|6^7Ga}1gGHc{i-XOk)F zFMEx5HTx}&$k&g)Ppk0$___K0Wj2D6{*7 z;)XdSbiCFvLqQiL_p|ixw7&)Wchvs|n|>GPUOoFV);sN5pI)Et*g`J-p^mk_wt{_o z41=vb^v?QDuzzP=@9f(<>yl4QxV;Dv3~TG`jM-YFbRd0)#h%zM5X z+lbZYi2K;r6aFmWt?=*l=Q~z@2U8!P-)z|OQ~nDaE5DDapZ7PI`guMg;q$1km*1E0 z$BtE=uXL2}2eExxe$v<246nZvW%c@+55)9WXM&|ySl=`9>_UDUv;CUA z{C^CazMdUVVSCUukAm`h-EH3*>%b*cWvqjaFMh1UZSdv%DQK+2=PdnLhm88$Scj*d z=2``wK^YV@)r`JuFj$veNqvqj{OP$vbI=Rx9r?1jE5^T3{=W-eDY0x$GUriM-SI8_N3v`-H-Wf8w1^mO}!u9U}i4 z>(k4(C4Vpf68U@ibLe~dAIRU!uSMVFU*`p`M_GR_#qD`kx7JMWFzI{o3X&hs(&Q@N z9>~pJ?*6^J`dk1s&q4JokE5t!oMe&4d36+&jli^VI7d zuN@-G{ztTr*$-ZydGXo|LU%{IAx*{^R^_M0uAgNB<>OMxhU{w~Ax( z6BqXI{v2#P|2GdJJioF|$r|gi7VUGl8jGNBi*Lfx`X}`5@yFm{aeI>dIVTryMqNz* zI`nUYw|Dxw9x=JTwZ0+kKP%Q>_9w$8SALq8-sh(dK9fuT2*=WY1NQpwJGt}^X8oGI z^cTTi|1VB1eI4JVuj@eD4~fRm%$LoqLz`GL>ys~f=Zj2>F0KoMtUWARbwJBz=8IY0(PfKhqy5X~tkL7kbngdh^eDOqgTm~P+EwcATt*Kqqvnjy z!;ddhbN|*KGBG|6)b0C3o;yuTcy_{F3BQ=IJzq3`_I%OUo-Z2P^F?EOzG!UE7me-t zqOm<+G`8o9#`b*C*q$#M+w(!UG(~dCyQKA%BuS zW{(?Y?s0JxXoN#nNeSzwlA=;nLr4G7N&aINOUV{XsV|n&zIe)dspqNHtd~f2Qg^CI z)->v{y|k!BM|{np!#3+77MWm?-e>A)N9bLqbmfi)Sjs?)w452UXt9*Zd1TEjMmUt3 z!#rgI$8Ae#npKE|TsmUz;kt^;BQCItlp>;J1uiGn)No%Whaj^3ZYukY z+CzVO{yQUK?RQ>2H{tmSYd`e*Z${R!Nze5^N#xouy?&pB2gK*@+Al_7-+=4H^|ui2 zbgbvq+AmEm)_yktUHwgE9(=v$HH5hS7Vtc~neZHV3^M)AWxvxk(tq){q|j_EA+^)e zhEK3qk0Pzdk(O2~V}-QQVbY8=^^Oth7AtqNmImn|v?!0+xA4<4q=?B&NDC`9k2Ofk z!$^x{4U0`FVcKMSJNl z$91Fmmp;?uRQ#p#wb8fyj=`VgyG4I5ak<2;PZ)QqB>5kg_}5$(X0N$5w?fa)t+^4b zzG4NvL!-8~epJn^se7_jqg?&YJHpFGR=@M^FvSW%&q=iXa;p%+df1;rY=`(yK9%%(@Upyw*u*6etu`YSJA|K(t-zx>Z>srtVYHvjs*GPm*t z>$#5J7qI6#nj7_F*ycu6e!8#r`RxE#@`HVS?u0ErJ!culHe=6Owx)hJz-x0ar=aIJ zC&2a`N87{Yux$@|E^;+okL!OQ?4N_Ti}q(Po4?cg2z64>+|m27^m9ia2Ol2gnmbyo zeMsRd>}RvQF#12`wESDWT@n)Jlh=zZPYOi;2mBK8eWU*8@SE_lQLgstgUq*=o^ks2 zQopiquU%nlFZCJeIg;K>QINmC5cmF8rtIF|0NDE*2%EpRCvpOYN9XRsJ39{$KRUAB z0jeY4(#c1)m2$navm@)o?uYKBUu^@{ubzb|=$#*}U-KvVKVg&0{{ghI_kRp*`m(=@ zea^Gy!Zg-9Kk66q@7%1wK4I_F$X;^OS9w1{Zsir9yF$s|qkQkKNPD^Re+Zkse`aUy8(H$x68R$7 zDK z>r={ApTX>lUjJtD^8UubUf!)%l`jLET;+QPw(`mUubh0*-nHz>)_m*$ZnKnC-i?v_ z{BK};_Wti;`}O{R414*diCo7YFJFay(%bJ1n_T&8E?A%cb+E~`KF(x&D%Qt+oZpaJ zKl>5z#RmlT}eLc+! zygDE1nn&Tc_q2p_=`J~D=kwtVz0-JJPw<72hy8+Y z!%@FWB0q$`{V7j9vh2T2dA$9Nu(w|Xo4xWso$cw^Xs_~aPu$8Y`DC^SlmCPKegz-m z^dIGTZ~BrC=Xh>%+0TZ(eZ5yH*Ib0Bu)RDN{b{bmPl-Pm`SI~Q*Fe50ZJ?mJ4K?@R zTRDcg4OgQ*7DbjnUGsZ?KS$sEX>P;Sk^eI4%ik>6`K?P~ivjy6$vmQL%}SYFFEprG&h z>U!tIC>QG;TjK>x?6?Ko73F#d>;~3n-`qUY_jm6@Zr|U1n*4P=`%IK?%|oFd!_PbY ztvG&p{ULCn|5j_pCqFa$9(jmm{0uK_>UwSacz_je%kkNBo&C%6Q!AD%|3BmU#{BCY*iE=Tcr~tH@mh5H z8cYA?da18>c5m#@{aDnOd>~~tf8uu>>-)yrp{rxQg5I&!wKGKyLGKKo3=fSgd$IXb zdBj#8+22ijdwU*zSM0^!UTpR%kM75N<5NNT{m$u&b^mSl((ldsGkvkX&uT3F{ny^+bNbu_BZqQ z5ZsIM*!8>0FE;%hUu_F-R}9aqo6UPH%l^jo@jj7Hp20h(l;7^JesFzj;3uP8$D;=I z@yCmSl&9GLIUY!Eto5hornWwHygLc*8~sWCh?DD`T3#Cs^QK5e-#dPK749*e{;AyT zd4E^K-rqY;uJ3c-z82%LqP_MvvF&fF@5>vP^;P)>ZdUp`gNgaaWBaXWKYNRAp)I$F z{Ac9fC%#7H6_NjdI8_Qk{4KU8W7%sQl-Y~7r@o$#V|^N5hyOY3oaaV=%1_U^eSW*b z=3n{MX@6tsFCss$|3}#5(*J3XlBKWXx7R-fHhq=nz2(dD$o|q^xt!ak?9f=wVo{sY zEaEM-GM)+Eqh&&9>E6Oz+)th=&sjplm}QG&O;j-07iI!`ski%$^0;?);uqCM+$+8g`*pMch<^nr*3} zS(S7-9Q{GIu!;++IKPTB9TIJ3Yn%79TGy*38PZ;7mUavvnVuZI>D z>3x9F@EeZLaICrBe+wVSpMtoKu4hiw1@DSnecBsRP=$kGT?gKpBZJR5X0SRoCrv@m z8E%1XFF6spt^+x}g>WIf6W4ikcZM(rz6E|h$Ls<4J(yueA*gA9M&BR${j zSkJxgfe+?SLC@9ZvedCkVQU1>vCJptrvHxmFM_T9+P;1R&*M))@}sDWm+udo{N>{r z3yt14xmQro`!ge0`uAtlUcS6)4`bP%348mq6Z?yuzUqISV?DQf3SNscDX6_)W$D}d zPq4MO zX8u*)17R!gF-`haDF2$#|0FssRd(Y!FuPdz&X!dE9Q8LA5T5#GEnCQPh=3se2TRZD zgYeAtLWRdVR{lrBK7YLrrSE(xyntMD->FOrQ%|mi^M@V3R-IJK9!Gv=E)L~Uzn0H` z8Pzy7f0r{^dW;O(M6vCd7#Cr;(LnQOnPZ0v`iYyR$mRhIo|bA=D1zO~=; zXXLNzTY1D8sz;^p*efuKkq%OR(ktDy+E_t^F>Ym_N6$_FMA;<~Boa z?I-`|!scImyJO|2etlox=U~fE?KPC`(b`LVmgCjg`5$rZcj;O5W6)0K@0ajQ_^qD& z5WXArt^HnMAo6;yeZ*f+_{xNraodCRcW|uy>Ds8|e+q2*FG5aNPtkr?F?6g>eXRW+ zpnSt&Yd`tl54QFbU+!4>>3tGk-}$iRr}om^U%vg+?`5pHJCCJZG}b{u?~fe9a<4#) zG2lQV`M_oK1hLL{#(Ll7PT1ZrdHCntmC;_WQD+6|?+cs0-iOiqZ;wz$g_K9)Z&hS1 zF+a)Yvi+I9{E5B4RIX!_$>r~?<*WXV#=rNcf##;K{GNtQ-ug2p-e%jeekrx*%lNbQ z6L(S%&o4Tje{f571ohQe7KNUBwPdSMe!6!I!)QPKHlJwn1#)8L+OkUX1$fYvtbn(>AD}_j48^zclh9_;74(+W&vS z&%(dX)w47E<whZlYaAf%#1)IO-pIfqLVY}bC7ydK+ z-%{fzaTZXmXAMSFeI>>T2YBI~(dllXIy^&Ii*#2<{T=YHoB z|7B$9>-x*<|K90;iMbR9AwMSSYi`5y;rnCz?aPI^SjS`q<)`Z*%TKKPH)G9}SY!J< zpFaip*Zybz#W%8j8gF(p>w|01S90}CG*NYwIJ-Md{jC{ArJ}{=@M13H$Rg_)t)LJqp<*y9Ksy z?&-PfLhO!<_Ii%lO58v9)b-pm{3+iOV@~7(wFXz!qA(y|ww2%1{f5!G_Ec@$dFK@5+jm^LG{|tNm3DnQ) zpF(??zS?^(`>(b4YcDeQEBUXb#vzDjQa;a{Q6A44SK;{}_7CIm%{tC#wSd6uQ zif#YYbGB{a26=kXkCJ%640c;0WtD);Otc^4jfckfkx6IuRurdQY7 z|Fw6?DxcWOC!WFOhgaE+~G>2Jw})c|vnFSLnhnL|iFd zG^=L~r`PG?WwhaRnl7Hz8>LdLPDrQ})akUic$6kBg&{7md_gzE`5xP z=g&Npp!Y4L~bknq%mXC^#1;ROl5nQ+GY7e0S| zx5x94ghwUZnefDfr@?jC9(vzHtktIXUlzba6z5O#9qPGex-Hh$WXI1#Tg`58*c6FR zu=Gi57F$}|B&RcJ%`OuZ>7Qf!Xw*^s0%v=Hv(4in3$q<0{Tp(f5WmUAV;Kffrb54n zcMq>Tv{_+7`r4uNLH{xrpR{(+%KeZ|7I}P~ps$~{s1xHpop@g5Hl?cHa8s7ow~BJ! zou#q*8Fz-~Nl3VO6Z*(mo*Jxq>acO%M}Cupgia37_p#Ko00sHqxTWf^A8h_^!ru+# zJtS8A3HSqi?;iPm_;chlgE#v72lH+&@_)wsw}js${$At*VLhMGcPtddJ0*OYT8~~ ziL}pgjz>D)6aVkRKaA_^=*V|O);w>LbNLX0^dF!tOn(x5BRoC&m;Qm&&-CT*0oeRW z{~D(+f45_6{$wxq_F}XDezcz)^OJqwWvljLZ!b1`&C{cOe>`oZpnlr_VtH_&yx;t* z#BI}8zwrrhzbM!HHYXCdeq;I5wrT!8z*uduy7}LY=OFMik=GoPe?Oug`EumiNneeu zdD~VYZu105zM+$A-nH%E)1!VUKXG6F17Rz_%5yO6%hL&4dCnrg!{MH+V+GAKr@EN@ z7Ub$@zMMY=l}Fca0Y7c+iC${T8$!DT#@+)YFE_icv6g0kfI%Vk$ z#PMMbzU7R(Z)APT`R}ZQS0n4X@(<{n|HtX{naQ@=$~LB;{JsHOej1;?3No!z1^Is+ zx%rp;RoKhFhrXBZ!}jdu`@$yI_~RbSl;e+8-XFtOUitq$?Clr9X0Lfswx(P*FUs}Y z*H4AdrOpa}`eRF&m#P~!3MK(IF`Nco6TPSHP4p!f3TCEfn48UIV+Y|{x+xmy#Mbw*1RX(;8R?AcPH-i z)4UBnKk1rW{ujXB{|MT~SmU)c=HOd-b+a(uit=s|IgE#b*NCj~OMir8^JL;(@NX>p zJMi!AAB4UAL$KFBo&3H2wXoN}4mN$2_j}7#%R3A9_D{mz{wdh(H6H6F_}o|@@mky` zd47xhj8(snS1Rqr_0_68i3>FOUxmN3qhG&Z_384m2qP2TDdCaLM88?D*cXms1bzw(O=g38;$(wO>;3WE3(xGO4?CT>YM>)N?6VfByl zjDF=#DsZ8lS5C+H|18Yh<3CpY_YU=l=HCajnxCyVdi;+D{iOfiqxX2AV~JM(kygil zq}BQ#X{GJ>MHSI}zPF(;){NN3FNPOHqm{em@4)qneBJ8#d#{H@{Vw>o$PS3S3jUse z)u*GN`Gfz?a&92{N%8kOar3t+`Z~`)?&QnBCYL^^ih|{DOW6GNC;waE(^UPlJ z1%CvqPftPqy0OWcT;-iix|R18{OyQbeS8Wn$lrl~nPaHWXRzfj{qs03n!e^A*7ITO zU($8bhS>It_PS2u(zduxdSF17HQ-mGT+i2s6MsIk=9k@___kJl_`8mE-7_2Z*F8Uh z{dLbzVY}|>F)*KhcrVfvR6gbH%cu3JW151lqdsEk{rwF#f3ojR*}T1`EBE%pU~j)Q zZ1(T3pSRT^q$%{+AfLbO;T*$!lM|86i>&!3?}Fcn{F8syviZcXjr=lQy}Q&>FF}y+@YT zvm(qA%hD&YFWfM8L16>0-Vk)^XM%o?l=VmslKG(MMvWL3id=2$XM}#jwehZs?XRCb z^|PaXhV#=rL_eMUEY#0?`uU{J&%gBZUO#@`=clQkF8wUjPkkZM`obZ#Y>0jabasH9 zeQH^M#Rha{wQP`L13Pi9pN5LuP?7oR$Qm8|bcUaR?Fhz5%1=i&MuKtrA=W1w)2>)e zQr(j5rG9IEIxKd-M8z#lObvTYmqO_I{Uj`@gb%--N#9r|sbQLeej{+sx<(ZA&H zJGt`T7@5z1Q~0!KuXi5AQz9#W-Cz0q)jmFdjj{3h-ws>;diEkdF8Wh>UUd5M|2b^_ z4@0goHBJ5$&WArFzI~3_jqpme_mPoxPdbozzsS1h9z@)(GbE?V6*)yJ4u0;N1BG>WT>_3~#a|OzOCS_Jw`5flMhVRcYu-eyH`Z`{C z{o4}x-A=v_<^4UZdE6EB4$pA%qB}DLm4AQOm;V6R$|t$5DZKnBC)Ybhx@WWXH+Nn7 zdGKuawAvrFt=RtfH1gq;XBdA9v)C~H$ntxUCGT`{*&hab`zeY1QYV+c`(X3;=WFsl z9>2bqp}hSIzO5GU+D9CeO8Zh)&CUO*Z)-5+Na|?JiCIm4=KoA?>yB5<$Wf% zCiV=|s@Q9;B5(gjV$U$9O8!h2QP>}GU;h5Ub}>JVXhJkX>g#zowo%VVQGd^Wr+&too8~Ljub7(#|6-FXzty;r^ZZ7_ zqgSZPFXWiw^&jGj+Vhwdt9+s3+j&s-6g&5wv3=fx=fbx|R(W{*Soj+T9{}GN<>HsA zud(#M;o4u{13!oMydt*m$8+1V>2Tfo|7y~{rzP$Cjii0YyY~G#JO3cs_senrQ2rOW z_Wl7CIfwS$A?Dw_nlY1b!|4xU`||CzQ_|k6C+&NC!aF4E}{GF?@vAnmzH`AWaMb`J&&!OzI9BaI^=h2SU$HyU{(g&vFZ{KL&oqN#xSQq0W zs}D-!5c)*cv*#|@^yTj)*53(Eell!w`O`ZC-k;vF_x^gprZ0bUVejw1om~F*V10Xk zBVg}uPuTlwXZ?GBJz$fo&+iI&Fy-e|m0cR^QC;*ZM_1*7MlS{&RYIQ9RVx!4y}047 z1X3!@W*1V}o{P}vr7n5}+ayWJ6UvlsmJ$U>+KX{sd74?92L8q_R_4|5!^U5RMqhGQ zN|SA3uR%me$#u$T1~XS(?iqi>6|PPmdHAfgX;GHi$R;~3qj>b2BZHzt zLSt7`X=$0+f<~DzV)2B;WCXSqlNPE~O&F6VEM}7DUuHY={N=LVIxJ+F)L~-4SE&7AVIk(6ec+)zpnY|J;bTs5JEz3@DS(f*fJqO_xn2& zJ1Y9q{kZtrXfOHcPOkeIvE9$epROgWbedax1h%1#NY~up>i@Ir9nIyvEqpOD1?eB} z^d&#q$uH`c%P-2+gZ}J9f4b9`zf}HnCqD*%lJ6G%>3QjcFhkHnxN~Th{ew7>q;F_HXj1@N(qcqd%4BT;jewy0`M>`7Z4JJqCM! zV)Li`G!D|_x?lEV8dSbZkeffT#ts^*zB6E}ulR?KRsZW@U;kNfQGetNzpKdKb8^*p zL)xKVXpQ`SdrRV0UwvcpGWe1x*VyN)h|i0x{C`2*=dbY>mcQ&*raip9E`z+i_6Kjj z4Q%%M2IN=aclcA#946}D=AlLilAn^uHJ-!dDzDbpyj(rgn1qd_A6ehD`~bGGsu~OX zQ+Pao3i}Rc3=HvUk>zhy+HYPi4*qT@?)_du5muYrAj_b2xA6MJp1X0P_23S0YLJc;dx z>;F&qQ_!3iTM%Ch9}3#OH1@Jzj^P{Jd%~+k*7kEW?AQM>u&sZ!$28d2k6W~&evL2n}YIpH!|;!Iim`HTR+S@-stNpT0!rOzXY=xhOhzl$D!}@yB7BOT?hO8 z)}uZ?Kh34*%YQ!X{mp~DzlUJ&@8=w&yuYns^S3AESALtg^1loF@}Gjf&u=#D^HYC` zqM`s*FsPl+#ztamm)CjMMxy#qUg_=A!44(>mR>zJb;``c+xvzPxjVeem$ zUrjFm4cPmC3w`fjV~m#OU-myv?Dv7qJ}r;*yU|{i{G7hzuam!*4@2MlsXkL+U!S*O zU!On1-u_(p!Mu4gwU_38R(@waw&Eju1N}V?+Gz$GU_i*tsjZersgg3+E>KG4s<+t8% zx_qbR@ov(J@kTt1<%Z#Rcv<(hMj6i`-mdm(cW3coz8}s4Ue|@qMeJD zkTb>5(LD_2RkylE4L2vnNF$F7FlDSvRL{-Zo4KC`qAXhV36U^bIi@TVlsnMLt!SA% zLdxWzgLRS831lsD7{apsVx+xpk=Xk}7eoxpwq(r^EmDX~v6L=F+6z(7kwHLG!y@_X zE?If!+q127I5ldO%FPg^?s>rTdy0h`Saq_z?u?YkQ`&1prs+d_R@$icYe{ z48uw*Di9S&u!-YhN}2E(dpyAsx^^&)A-PGJkkz{Gio&pHZ?D}?LUbS>N+|S|z*K#6 zDhbQrw35IkRZYky#cA(iR_)mdwK*{!7VQjTOcIVt5*n#VXfM>SKK%vNodi;RVjWu4&C)<)z!QQeKVnF}dm|x#yP?R(-u(eYju5 zCnxgnCHz>z=O+FSVv9BZ|2x))+RCqwmtem>bd78IX?=8~{(gPv8JfxePppqWxcs%g z()FQhMk}A>DQn!Pm#1THG@rMZr|U!WaG6~5*=r63jRR5;U!3r{_%pfQCmW6Z{Z9W0 z*yOT*$MIhuY|Z}FR?dSad%e5m?JuD)WvW&LK#C zvy;pIv))zvM`3UO32gS7m*WXK)6S=z6;%F9U@MQf#x`Uu|9^u|kM&pnzl6R24`A~z z{r6U{>OTZ~{XfB`zZoyv4Wk@?2&G|8sK|>VUmE$1$iIyIX5@F_uM*cjpm6wi+rk)! zU+0)jhq-Mi?un#72KM^r!(LyW_i-jNGniFB#F2T@R~`6wX3^Ic(R&KY|y) ze?&HvzwM+{h6#$YI}C`+{&6`%mk6Y@404vsNNd(L*|cR_OQZ2~Oi_3>6<$lhK{+e-FkLBpds$p5Kt@V6I zjlFMG1a-AoQoW20DWe0*X#XeVqsx}j<%(!qdlAjb zXh-`@%ecd(I=`9BK3DCUp_(DuFUvUJhG@MKHC+_CZYdNjs??TS%*>)(cbXZwSaE7) zv{8wolZL(|9FQbVa;#&Ch4Wi2#yAca|2&O%<$59gfg;{v7fGbA>Edg<_&R00>Ec~3 zzR<Z;dU3f9%daPCS*>|av7@xrnq`w4Ft7lRtrdxL(pH=7Y$l!KyiGc%B5BRc zN87btQh`{4<{)KSn-U!4FxEq_96~uvEkavS9bIs#^Bf0Pc)>xeCi>s9v{I{)}< z+M$$ZZuFveH@AcB-A&yyG~oxLT-S)|GwtQ{)lX~sGgiy{ZMTd0=^o}5~!`8l6BHxm_*)^BsY6~y_#L3^{Y^iAp%~ zAiOrqF_G2pukCnzWZCPOX!d$(>1(j=^AzOo5SHHGp|JTIi5!<<{%ICjZ#sDwX2<|CpuOOMXA>}2!;GH9@J+>t;-yZ6h_Vv+o32P7O*C@N`i`Q}7=LMc) z;D357zn*(M3j2Qif5Fy|FZ~hNd;Lz>^d;9ALN8wkn_SOPG>4J-6JL(pSoU`${ues` z(*MlazYZVMjpr1kDf|OI0sczlwV&en2p^k^Gx0iHJR3{@7i=@8FVHprM_N&--Itq z`0<3h(H`Dj<19U&mhe3Zzn}1iD^~3fPx#|rRrzQd-{+@34`a=3IhS=~b6aX|&-YdfAIEVZ~uMR+y4+Y`yLFcewY1a)R4S_D({_aFTOro!oEH)uzh&>uCU2f zo~f*VUmme9kG?7D%QFS`QI;0>aDJgn=Z zRU+>J-$;9T`Gc^@HK)^K)c+CZ?=7xjy#BIWpqRe={qajxdD|LQ`L7fCI^0m3z3Ou_ zVD-6sCgYsx1KZG*_n~^#|Ld^XEC1X2R^^YwUVeJNs(kNttMWDaSLM@TZ{J{l@%4XX z{ZfAKI<;&e7huOxUWy&Ag;=CPyHpZ}B@7PBUlsL&FMA-~+_mN2BneElV$#B@<~AHB z^RQlAyKXAgB#A>zm?PgT(&g6C*8t8HF>D=|X%ZE6Ni$8oT-M8|#Yk$hRr*k^BkfS$ zM4&d4b*A82wMbeRB>J(W{2KbGB7MmbYb2zdd}+8;3e;9IF-lX0YS9~|fLPsAjdzN( zX~7nsHK0O$9Q8?L(ap3&u`5T(%1hQ6Wh!-X2N>#5)M!?anO>0f=%{70@)YcP6rBXp z?4^>GGK&Yh5)^BRngc^}%d|YlNbw>)rx6v+;)W~OHN&s}Ifi4Pn&5i<5H6(`bOg)p zu}WQB)69UEb*$@bV~yu~1h#7Fx?0EFe*7tD{GR%PZNDFf|KGt=v{MsKfEThn!{z@0 zZ29XtUiZxhlcu2Ye4E1S0Vqx^?Ql9uitNAUq9V9`1|NY^c6|+rU;om0!>5to+Jf z_mMvT(Xi#O_XTwz*f(X`EFv3%e>$c$8$kXOsgr`9l`Z7D)}ED#$0GNv>srst_byp;*bHJ{Zjg=n zTeMm!*ZV;Sa9tC3w~$|r>lp9vkTt8UZ-RLFT765_`%J?q@2ot#;BVUjrCjB|a$uGB zW}i2IYL6R-l~tqzhPF2QZGO>~{TiMX{VP9>&-3|dE??7E zeO6+7^5xaH;7zXb+zk8j%unPu=@{h7^Du1oXH(t-+5S#+@^fL6tGv5$O!4Kt8TRFU z9X5Tn*F{_tdETG<1Y^yO+C^Tiar@K$rTZ4!zrMqqM9;%p%{kZeZEWwJ*G}{soY74l=7NQN zeNTgZeSZS`@;vA4Rh|R6FExMS@AazkH1>BdUyJ?S^IsfmPNyb2_qKU+Wa8)9pN;kH z?ISoC?-S+!lld#U(H?W7z50=-5~s)^h<}jq^^P@GAp0Lhs=3irX z_9OoVq$x;$G;DJ5*AqT0;mZ=%yCL5Gn_s}{m;XER zjr}6*be>bB2Y;AIQa_KHp=1@a4JIvHIDs#oq3_M;wtK%eSXp6b^^AZV$t! z!esaimcC#5O!%2to<)7}2ix&@SGnM}8Ly7*wPGA21lF0r09Y1|L zA5r*PET34{+s5ig>`ndb`tgYScz+RW=82wQ%)4q=1_%x)Ee z?4NORwZ~k}2i6`-;+~uzyxg<=or&D?6Tgt~YMf6bXHzY z)+}Q6N=zl|-lxt%DaP1c7mINOifL=*vEV-ZU>nnj#a8G(t~16~>tnI*Wo($Gtyre@ z>5RKAUdos*VyWVy^-ElM_~pNm?@NH%8EGIdjz+G@_m z+!Z>4RJ1X7mAZq<=!hbkS0MZjZ7EV;>{hfHyOFh7(9(OH+O@8TmYSD|OVMIpCe4d< zC$f{HTs+6I-XpyOJ}Sz^w>#FnQs=>^MY-m6635k@)pyDBv;J`9e~imt_PfL0UhM6q z@9l3(>@RlqDxc1qR$i4ya`UJ9$=>R_E#(uduR&p7_`iwom}B?`h{nW@jdJ^kPUop|;McSd{FPx@9r)&EDZ`IGz#CzpS*`B(c%-|DY#V~)kQealkc_S^`$ z|F-9P@Ln;0eH*hE$Ez0YTZEUpYJvBR^^tr!TcXK7MK0F0q=Mu(;Lqf%&8r1I(8(Wj za+U8Nu$51I3Vw|BEzv7DuiCdnUxUwV%incWe*3}Cz-vVR$H4k_+l~Aw=-Zu(h(F?3 z->Ea+obri>MtkYM6`B*J%DWWO)@zl!`JC%<8ZQa%m+M`&N&i*JrTtG5in24NPBB`KoxuZZ&yYY)_E zY=WIfWo?1gPB005A%XRyI~77+=LRt|%X5=SOsNx%mU&7eB;;Q6l$b$)JSG3l74=)! zPo5Z}LPBivJkO?5a-9$rW_jJpHYjW)h`Hq12hBVs8U^opO3Wx^7_HnQMjOg7FKbL` zhJ-9GGDV{ATrg6LdLHN3WKBy^AMMV7j<*WOkI3(rR?ji?*`7eWUu4|_oJ8F20d&oL zEqrj4tB?6Q;_F1d5P!?!d+S)g5y<<)-k**$-XEJ^#oxWK`BQ#_TdHy{GYh${`E@@v zI_BS<3qSFGk#*0qAAD0}-Lo75+dYdeHopOHPM#sadZ*lYG&fhDA=7=C!Ug1a6LKAY zm&EE*?!&%k_XPjF0rzaM`rSjozs4Gv{}+&pr$qTju%1ny5Lxr$?+tGoS^mERoBu5a zF^&s9Cc59}NBQ+quUI~D1DWxVALq{yMn}0=ecr~>?}WX6D&NJ)m%EcexbUf#AO0>N zeq7|g%*oqd&vzB}S%UmTbWJ`H`RyD@R>G%3$~Pd_cc@23x%eu_^WhO3TXkQkp!zI? ztv+ud-xNO2$vd4qwO{^jp4cJ(LDb*&HjbO{y^&Qv$*ug-U#WXlzYcqS$xVMK`a1S& zo3rxX09$!arG2~Lo1kO=K0M*^2_KR0kqPTM$CvLL zju&xZa0k2>e+s&XTa9(8do~5}7{`Cuko~Jl`88I=$}b+pG0Rx~KjvI!{v{WiT)ao`lJ(u%R!$bW-d2!&`Bkg(D`7AH zkh@*;r?Er#akJsay4(prle^1i^sQyP!6PGUEYXkQ=ObTDhvudI%Q?`ZtgUE`{se;>Ff$7uzPFaIx=&%|Te%I9#rfbW-(pljZ@SsomS>u>lS;?^dT zZ;h>&Zv%VzjftGD*Fyf;WR7=K=}apR{-zQ4{w{;fpUQU&e19y@k?^f>f6gNcli&q# zdt|l8Ciw4{i^I5{yL+QZAQqy0^O zDRPZlu;-$(A4d7Tyo+mEFFy}`FV{7sm;V-hFF%9>m6s1j-^=gf9PZ_3qwnRl<*M?h z(Kq=Wly`09ce(lxf=&J;@|(E^_(haU{}-^=e+D-Fp~#P+KVprj{|-DK?pDha)SlOO zRNM286-#^NcU7-4Klxjc8zl3WmPhg)D_7<3!B$?$f6fum?4RNSk=wvG7317zY zQ~_Zy7mPn-sck?(a{2OdT@!k_?vYI{{a%jcZ!_5I>$$1d|Au4fe?QTmmB=4XYOfLPq9LxW+iT<)||6aeBh(`> zEPc(f?Dg+X}*6(ucUqiI=2%k*PzhP_l=;G^1_q@RI##eF;3vWU*Du@RXHFb-X-v1L$F8x-HUuG};En%;JxRXm?_xxV}(M11KCzt-Z+~atC zjgvF~nkRV->n)z|!#9D)!hN+e3Hm0nj+LE(=(}Ho=dQ5HW#6QIz5UIJ{OLrl^QE`H zfcEtEm%%1i{u600pZ{sF$(4Tx_4W2^!6uje&eYf2?*f}#_6s>bn7zKq{I=RF)_3o9 zxaUH?O=Rg0bNXtJtzq*ge$BD+@6P$d=l?wC8`GD+PUM!q?9YNtF8it6V|x2>u*qfr zBJAxyaB|H{{TI$pgJb!xKC&g-jQF0Br#w^(b?sZr6OOnqf7apqB;H44Ec@B$di$`x zo&CqeO<(@hCuuDE^;@g<8^AvQZ^EW8dv0S3mc6b|eEwH!dvN*x0rvJ|*&d8#zcTCB z+xOP?;Oq~BO<(yxzDe+RxSwx9ex!ut09=4<^sfBLqF_cz6{{Ot~Vf0}F2`#V+J zgY)+w?EMX8eH+W)KaiWh!8G;=%6c-_914>;c#dM(D-eBE$i)+#e4LZ3kL4rswmz2U z*KEypWPR)q?d9(W$j#r;_13`iV|k@7x#^2F@1N%n9n1b6)|c5o*uOQ5)40_6yOj1f zd*%NN*z(sr_v2{)v9Wx&!9Rnai+nuw{WaW09Tb$`%e0r}cO~+bXwToo{3P!On_Tb9 zOoWH#=Gh$dd$E714HcySOWM-(RsK`y1G4gqw{fiY*p%xztIvb@dlc3+j)L^J>!{jq z>g*p|uQhuH{jQ+R^M`qDVg8go+2<5A&hruCoCZRWd>nC;r>t?5J!u;oH!0qO^<%7Y zpUbj-{J2hy!#26bZ9W9+8cadsNVR|I8ec*FG!EMIRlb*DE1%@IuzpOg{N}TN`22ni zn_T7J3AXwu|6^I7KL5L6pZ~+K*(?7stWV2d`TY|1`8@%fzWjfa_3i!Z8|2>qE3oOy z|KV&8=3n)@4K}%WKh~$Q^w;A0-|OEDn_T(_vA&IWyS^-u2u3w&$EBj+25nR>T_$~vOdy(y`L^qqa`CAflq~&E z2UPWU7?jJ`p-jzKF25)To`h5`$2!6s5mBdEJetiDnr+3=GS@GUo)vEH`p^}usjS(w zN4wEJ_19GlzRB&orm#ZG(Clg^d~U+$CEU;zT@jjH;R>(91rTX2Nc|`E>&n<*%Fyhp zFUGWZ5t>~?R?b`jn)4HX3lpA~aA(4lzi>`uvGz#Yx0%#O#ykC-@t`c(ltM`PI^-WC zVb=}eH26tkY^ot#1Gm)5@ul0qo5Gt!xp+jvqa4eAUuVDSz1)MsY`P&FjQmNMT|I;& z;b&pnZ&V(!mFFY)30NDL!V9qa2(^tXNMFyMP5)=IM{ei&hhWVYZ|C`SD391$TIE@p z>=^%Z;nx{oyfs_)0JukRa9 ze{GT81<9XJpN(S z{}Zh1WL@hjNIrz~oXKVX2>NC({S9H$?+JgCmCvC$gsFFP9EaD5{w04bk&8_}nDYM_ zR^Pe8uIR7A&d@inxHKSatbFAm4<5fnsWCK}0D@A>=o+W$M{^42c-?QE~ z^E@=+;R)}Pu{w{kDXAP+l+B`-Gl#9VcFczsvbsQs_yYlCZ)TCdC6#+Y+=A zKVaL6_!^U^o1sgJ25rmNvPL!2wv87{nu1mmWSE8}Bwf6iR%7wfH&iYQpRr{VTv9Ck z2yd8cbuOMX+$ZHe$2ebkO6HTI`${2lwRSU%Dx|g#jzuk#rkYmtEv?0qNFB`IKBdxP zF)qC=xTu|F*`Dl#LX^X)g)&v0;TGB~k~Pa{aZ1V>$b(AG*Ml)p1Qnxm|cq*8cQBv)sqG${?9c%MYbK7~I z@(MSDTM``-HJ0N<@F4M1BX0-)iueR4*R`O@rQhaQ`WhqY^>=l0>5p|R{bLh-y}Rc9 zU+-A@_a*v&a&r0qt7GY}O#OX%)VSWi#&{b`e|(~^=e=I8ag5&I?TK7tsJ(nqB43ds zjF+zpd;j{DiI?w|$WKY+XD0GH6Zzak{(_Th{cpyGIV7%My<2n(@%1AA{fD*iUZP#Q zEI*SzZe*QNzBa7wVLPY)8vadR_PbMmW7!`Cd;3YS*-QRc?7dvim`twnO=lnT<+}^^ z{-1!o{hP4at301`t!Mh7d>m7ZL-}BDKM6K_$@T3ahktvLq04ZqtzPY{o8t@1sSt9&8t@AbRRsWfWZ^3R8r za`ACnmn{Ecum6yfOMgWk_*i+C#2X~?Zzp`07e_-?SzqJ{1 z$mRF-fApfgZ@6mKpwZvx)2~^3>EGHcu3%#$7ndwO<+-JcmMZz5v_Z#Gy)9j^I-;AF zF3uYL*pZVkZt=u=wqKIip^eNE_tIvUhkCYjbEk&#;yy|2SNM$nv{<6gzDv$%3Au-I zj=sS;RJ6kiUrAq@dEQEmct!{&NrU8WmXO$9TVi5XU%cfjMahBhxGZko_UKEyR#zOW zW6F{ev-x>78%6cQiVJh8(FL~D(76=JNlQsTqxX^pCoL@<^{yoxr>ws(^|rM1{E9x+ zW(?p`@@*_FeQ_6Gm~!Y6$}WRLmtsXaXT-%r(4W0{dVTSvkWw%6ZCrlqhbOf}J*Qty zFB`d%z7+S_`Us9)g3uSfqf(Xj3eE1a9#1(LP?1gT?!8Pse@(7AEFh~AuTz`M-BXcN zrOKTvM~XJ*CCd^rhl?%SDTGM;;ecGpeP)q)o2T|l-P>KC2E8Ti zjlxI~8}}R%>y@%JDuhDYnYHZOEKd!}^x4Cg5x1Q}@>>!)k3lN(zdE_}|KV8vR%eBK ze_O#mzatX)af$rGM1HT6E58REE5E-b`u|MiYtrJrJbL%smuI&`?)xc}-#LlCzTxZr zJ>lfi*E2Hj|F4ODy|t7}Ut_Pl{(-Rfe^?@)naFuXsbaq{k?Wb3_g`m=^!_)1O|G$u zI)81>pMrQ)!V?{9tmI61lc+D&xE*8JuSWgNpXBN%^76BtT>5uAmj2s`KErVef70)C zEd8rs?_d2imcR5nsIRf~cZR+G8BQ+!A32u(9~1p`IiH!oP#(vjJh1owf|G~xaAYz2 zP#)OppW)=8JdQ(o68$weN}E6F@0jq>316M?eU9b-udtOz_sQD-tsh~JS6j0#+C%fZ zD@d+6=)C+2`iZ=}!}UYR{u$WITe$u+`!(D69#=<}y+1hjKl!(<*{Un^+&t!Y+R3fi zXkP5-9k)O6bqTN8rz$@x;TZ`(MgHcmbH%o7)i3c}JkLJ68$J;p8d?1k;=3cOpF#Yp zE6+|mJTiYO-{Jp;uW)kt7n^_aO^($*>c_G6k^g(vD)WVW&4SLwSLK3 zAAR~&*T?Yn%Jm`t*9<8A@BVwf#|G=2W`&>g;{7!0erJw>HFnDLN$iitnp>Rz#oXcI z#~kbZ)3;!I|5X0hX8$q!l%;>8)BoC=v^Qm&<;tV6q~6}M^gna@dS7%?wtstHRQa6% zd;1A&-=5!hyx^tQYymfsc8M?h9l2C7eaXcpSAO4vEkD&qZ1q?BsNeI!xP3{!4s3Fj z|7Wn(SG)_)xIJsGbz|i}4YvHHuYOdMhxSOgLBFWUW&auM?LT6FHM#5$@0Bx~VRk`W z5C49_N=(AajaX?*?@Ch`H)YNj%F>Rj0X3nlg3qlzq#qW71$c#M5(iJ_&vzQpt_2;$MHq9FlC{>4K}d*|YbN@?k_bV1t^OOo|AoXoErkhX8`& ze2m~c&$I0S;;cB2ArU8x28~8z9F7Cdb0o%S3?@NEVXOoym$^-3Pu_87#bgCe;J zeQH+sY$f5tSm^D~N;u-UkcIaJJ{cl^gJgUyHXp{D;(%^->@%(r{ZPyZ)9HU6=9Tg_ z*ybA3e+;&%=Fj^&e+_=dB}D%#u?;nQUa$WFm$j-P8W?c@E^mli`fVcXrRz{v?b? z=f2oRx=l3i^ZaoCbeqq7{|L7D9KWLnq~k~Zw}Vohyl_a$jNfr+8lU<$o2B|QCpAQ; z4#Ra~Zh3Ni9|ha^Qg6SxukQ>t{Y@Ou{~CQmigDrfzO7hRcHJQFgWGvvdW{G5ahN}* zzp|h{dJ*&I=dOKTKRj;LD9TH`3vopW#y)bH^S=N$K|UN` z3gECSF1+vW^Ejr&VO?Bk{}OhlYQH*`r`hv9$L+DaFeGuI|3+Z*KNG(vzY}a{0jd9? zSE`eLfna9O{P*eO=f42U-}0w^-Nva-|3z4y=1<-a%TswLY&Mh|k*qQAL%u1Nmu;Ns zKLu<$dEN-0?;Yv$)GdAPy@k)OY?U&{a|XT}wDDy89k)sK`BQK_hLP;)<~#4fG!e^Q z@4-}y4-V{W@mYa=H6DPmTnF|iN`Ai#{P}x7&38o==0w^F>%(UF7Z>ojfR995rgJ== z18e+RjE@bTeaOoL{o8=o#kNx0+a%x}0^TFwg9AQ8nEjvDnD#Gbtnb!eGCwmIv;Vx$ ztmd;D_9w>t%m$OvXE^>|rUkq+mH`X-2D~cs^R_X6Z?YO}&v45l{yh$OYm5mC_1}rk z-^c6@O@AMAJ9vcH{|fId9)It$Kl*=#i_druflX(7d~SobcLLaSw#Vx%wY`a8ZEq^r z?AhLL!P;IQjGyUjkN2h5_6`A?&hgq1_BK9jpZ5gP_ICwq`}>2-$z_ID(7?Js}TVLI(6WB;JMF7^-PURb`T z#Y@@$v(}N3TUtr|TF3glE_f|*S@(FKuL^kGV+)O*{jmklzn#RJinw*hHhcQ2As-d! zlLOu@;L$!$4E!gC{srHD)xsn%f3TNdU7^%}rXQ`9G7;R)vnR)b`?EIe%NTRY%FsZ^ z?#{Ev>ghOc-rP#BYqLFx7jsEvehq%Sg58}WFU^iMi*Gt|j;PZuf zAA<+LN8%sL1!v;iCthd7l-ze>1>UR9gLKt52b=!pak*%3@WIZX@s1LE@+HEwza_AL zMD+MR4q%H-fzGbkL|w!w)ScNk=Rpj#CBSB{4})`kNOs(Gd>;}PDdS@&TZEq8><;Q%ci%!O6XeIkIF<))~Auy^kz!>iY!xk)pqQQZD|Ty!Ds%_lP}tu`umF1gkxNFQV;lAj^;W3=(F%v0_i= z@8{J21hHp(+`d?QWNu%K>Cf$p`IBD@_=AACeKC8+>n6*a`3?u``0gn7)OGv9_GSnA zb>h$X3&EBz{TGQ&|E1zj{!)1HDY%bELps060|K5X%xl+c9`EcTM+O`ZEI)fWZ&TcR&L4Y!?><->TJ%J`FK3e*0?!2VLv+5W9yYoE;Rg)!st zJ}Sp3B?p+1`d=TOMQ{(;Cx%vW!3Z;DBcZe3LNaJpi_NZ2wiTwa<9`ZpZSa z{#~H=#`07hU!Rox8K3t>(D(<6&iJ#zGq^E8A@e>!#=K_#Zt##qj>t;`-T>Pt>Nx!t z|F+ke)_nQFCO>|v>7ve?{P>)47k1v{iO!phyRhSa4eoa?c>F-7+_T%prpHm-5B?dNZKt@M{1kkov!~uZ=j%TJt3E|^+V3XJc-S?2_PiH^wMYAVg=zoW zzreAW_XK10D8uSInB_W)tq zb3dl`zZ9MJ4++!$lfeG-K_wtb&)Cl31F1wZTZAukuE{i?atp3Ki(=Kmh-`CB}s5SP}=>ZAFXFSh=) zh5KXqsQpd>pAhi#E6L4ReionkP6BJb*JFH4XTDDd{B^*6aDLG28Sh)1543naudk18 zY{os<+<5Gc56$Erj;BFi1YRmS+4OUve+YhGbh7EchW;<`2To`E7k5hA{}}qg;3ZCH zJ~P+x^C4S2<}(MZ`H)R#K6ipOAF}Dp=P@wz!Ata^Yq#P{D<)6H!cVjnODk4`ilutk z_bU3OSHonQG->UmJCtg?$2QJNfjdaARP84ZyDOGSUPgi0q<}q~6ya;QN(D2ja(S&< zLY3X1Sih(C&oDDFLlW0)HU4ehMcEoYnbaz|a+|i)lufc?nO8$uO@uQqe#w=^i3+|2 zPC%F2VF@Ov)UA{WeDx5tKq?tU(PD4Ij5{9_Sk)oT=Xxzv+vf)JO^padn;~-b!W1R z&wDFA2!6vc?Y{w={o+xL5uYi2v*>q%O=rAwu%VqMXB-r2sWMZ z9>zvh<8{W4OylhYHhadKiG88Qn+rBQ&JX)WjkgS}@%rJrIkRUx-m^#Jod!0Y@n&G( zs__b#WEzjRLNj~D`>LZKuRp#hGoA5xZ#<2660Ew&*7bQK zh^qI;g%QS#_sjMDcuT>iGrw(dps4xX2iE-l05*F*o9-yg6?-<_i4P^eueiZ&S?>b# z9N`mgK0Ob94x0wM-kJAmeE~em=^sMJ;bUYgK>Od|JAy_$55-OYjllPSdHl!1_U^&* zwf6XIx{g@B&%lO-?eiW@);^#0wUWq$)=u#kD*2xI1R66S;D!|U%a!}7P^ zGcdpLSpJ&d7GTY9E3oB9`+LXx_IHBKK7M}C*z}%eydHZ6=Fj{jy@)&z>%Z~PC-8hB zaA%Am3&(Q`es5so$?N~$>6c#rPyT85lxhDe=8xI4zo$aC{@wyUxi8Myy76KE?*Lo> znNQ;YKcC5187!YwaG}t+fl>4~j5!N`ukgg+^!EznlQvD6_TBKoRqeOMwO*y)n_zjL zi}AAYWd7|Z`uX3ueVYICxKL<0+I2@2(O1XeUbGx5?9*6yE#m87yVfv^H^=-lo!2(< z+{R^YylKz-wwO+iFt?RoMc=KkMD{W`7>!_S>ybwCBBO&7S(Z*#3Gt)*sV(-;kHUeVsqAt@;b% z-xrU5axHKttY2nNeJIu!)n|ZBXZsIfz8iCYc~F;he@XogY+p?$--P+Cyn2t6S1;mP z$6l#FudO|^vzQK{Py|?t7G)2>;Hq`1$e*I@dNlm z|5m(z!||8kZSnpo(T8I!Rli?!#@`0I#cz)jq1#}74sy%$H0b>e_kK$k8Km5|H~5RkM&jCdmOs@?+V@gX@3INXSM$! z*zE7XkFDx(e8z1e3){aOO#j~acRnl2N>k)k-;&Z){&}%bX2TlKuBkP&=}_hs*SOv% z%{9TMbE##%X?it`(=@59X74jGE?Sy)XU!694XiZnS?2XlSTkp@vYK+QGMlD7v6J&k z(_Udsd{cSPCca$8%Mdj!zDZ)^)s=sKZ3=Ua;u`IH=>j(|ln;gJVVqo9O`&sWQ{b0Z zY3bW9YALG;dI6iLi{}OZ>1A^x3CiaeOvYR6R^oE@C_E1e@332l%k|K&!MhtApR@(O zH%IUZj_-laW6;MOH|$Us<*`lM-0_>xyEfqY0&X8q{Y0?o^rvqAwC{i!tM+Gt)tyGu!N`zmIiZ^$oC&o6h`C!am%X_N_Pu zHv3My)kVvjqv&-RucctKr~kCIe7+yY0IKshzRGv3>oY$ysXiUYxXQD!FqN0#nAVuf z_aN-!ZTT{v(cMy=eAI?M-=FvSi|#(p>X|Z^=e523V5I=EH{q+OA#MR+ypBLt#z&2lpu%2?Nv19n!}2sRvfpngiL#$U$XX22lM;J-LMU037PgELO1)%!1&2fw2zA)GVQ;F zZuVRMIkA5s2_NkV-U7aF32!fa3;b^e+h^2}8NU^}#$ONn1C7u9gU0VF%zX9;>?euN z{Pq>*@^}=-w6^?s&WEh$nAX7b(sMqez;j*yc#i8Bu$|-KIk02Fb`Gd5@%fom<9BNB z$KMgG@pl4S{OvGa{Jlq=TfQN4JX@gIc)kK&i2dC)7y}mGE3=6AS0xzpWyr^vpE3D- zoBKqc41d$V!A04tuZeS;SY|BW;RYmEV1KuRo6j4r(-6Ih{S}{K#=>~BHcaCk4!vRH z^!s<}zrxPL+T&+pvVJDsYDB8@9L?=G2hz#47xJC|sE>M&NuP7T_~&e!`jbbEOPTk$ zn6rC&4wd@m*brJijQ_w1QJHQNr{;cAoD)@;2Z91Ta4n zu`s{e?@IF{FBInT_|-${^5A%G^N8QSaf?%bF8_VNw){I^fbY-21JFNAtLRU0tJVJ0 zRTguVwYn-=l*0zIQpvd$D?=~vK(|5}T}7KwbSqD$Z{?UxQDrT{y;CZd?W$a1`pD<@ znLFd@1yi=4a%Hb!9Xb|w^|!3W|L7|@KK>pp9KWdW->XN#@`(z;0{`#UqyOpo!Ti_8 zc6fih+Bvg(umRr-jKjjXkf|F#4BngUc2(qkglW%hyxJcmI@>!RZ0)@P`_sU?;2#T_ zy78aDI0THQxc10r2-E(;z#fN$C408_OR%-K0``Z2C*vPW$jtvM)NB4-(YEzBOYbH+ zS8}@ZB!{0`N)TvmCQObHLi4 z^S~QQK8CK!3D744N z_>w)x`xvl}_X4nuH<#DL;2w#4JfHYIr{&A>c^<6egO8=9@!19KF9F}~+Hb}2_-A0w z0TwQwMtqjg@xsTz(s=Qn5?jI!KWU2#?^*FK-tqT+EYv^5tLbE}zs9`B#)n|L#|H12 zaVo}VYwUX*TYiXl3E1@bo*7u@wEe5Wp589i2S3#iZGvTbvb47i*zB3_ z?XWjyeq%8vn%_*Y>YXu$st*F2&iwg28qNPkY#dBy{!^iA{*5?iWIFTVZ!nCR&qdI+ zy{pBZ?QMrSpzU1&Hh;D^9CJY18wWO>@$Us|{D(znKEIRkV!T_|@Z&86YrL^IN2T%h z0IR+Vwy~;r1e?zGxKA}^en((sG<)`U5WdsV{+84fubXpARv82li>hfVF>RK}D!YY0`J~FHf>aM%y=()X6ccR#p>Vov5ref(St|fES zVIzja0!(8oh!@ux^A&ZQp~q+VbqyRfuQU}h`inZO#a?OJF3YYt?->D_@)0&TerXy~ zEN^#6VZLt#-yui5$GMK} zhGUvl*RDM0V(FW`QbSF1GV0js+>(j+X8k1|0_xWP6bm{jOMVc)qRMI_tyZ|ftSys+*jZ*mT@1?P>n|KS3uIsv=S*nVPNmcI5d8N8)RVAa6qeJ0FY}yxU9Mo+OO+F&QdMKYs_YexQPLZ$iRwm|tme7Oy4)ChYp-y$ zxAt0BUx9ini=NYmB!i*y8aRkk_V7NX#Sh(E;=LLiMu({z<^N9Llrb z2DzF4^N4>lc#><6yf9$w21`1R5&sJA;p}-#yA*84i19HV`sy9yf$f-hIpXsmEfs2D@79X9V_qKD5~nMtt6jp1&7i;dpL< zHmv{TgKF?5qVoc=lX1+mnaiJit?)KzZ*3gYY@ak2AM^GD>v;4B+jww1dCa8aIRdQX zd1>I!duf~hK4_o6ExFURNB*bqY~;Qg#_$8ncX=|uH*og79RJfXFN*s!-m6YleKKOH zPFDT#Kqsrty_x!xRsU(AlT~lVd{%$5>BEu#Fz^?yKV)93tlSOrRr%_GS8Me3GXh=_ z@FAF68t+d5?}}xt`U?SXgKebh4+Ok1mZ9oD33xpmFR0G@0xEwO@Clf&s(&2tKA1nM zzZ~#L%qP`v3Ah=XR@F}l`2B!)#WB0uFA8`_v#(ztaJ!DF&iglw#Rp5KNPI_ zOcb5=Gld!Nbg;!EUm;9;o};k%2E0nfAUEI<7@Yl z&ihd{%KRd8K3n_rp9Qvf)Nc}<_rH1=Z2hCYSakB2!i+aS=2zUF%pb;^3D$V0h)(-! zgc*HBiO%@*z!snW{H=hE zC;3%j##;uq_Q||olrimbDTe32alm5(-dmXQ_*(;u$NVk@TYls_1AbbV?en^@8E*d3 ze!1w3zY6A`#_tN&_(O#mZ!*~8@xCqxfQPvFCgFU`BMM8=)50S2bn+Ad&~SHj}vCRE5I7>F3}n91+a}5{g;YP=Jr$b8wb{S zdy39@C&+wZ`xl8l^=Cw9{6C35`3qs%^O@S3AGe2^PXVm?;8y%4o$-zoX1w#j7LWWB zVcOp>_GJFnc7~e|WZfQ;|1CP>aeHX-*?)ePvi!)r4pDi3Va7WhZ0*I%Pjtq=3#{>< z7M=F*2s7S4!4{AAUu(wk-VoOx@-6{iC_Dm#F&N7OKS7DhX<%+&4#ON_A&)@+mH!m* zF=*fP`!U!%BmU)yd+h%f*mTCb1IL@n$K&`?xhIY%mG2LD+N!>O9gY{(p1-A2?u_F_ z<;4NtjpIetH^cFs@@yO*D!&xyH#GbDi8%gK``-94t^85If5JIj)$hPLTjkAg(S!1> z>-hX`px?BfukX^?=cDl@oyHsa1E0SLcu`>ghc3STEPU^#@tV4&%=z_P_jG=dufc~! zop0ZQ)&I-9&#UzC`L{iN-mkaMm-I^bK+Hj$)s1?0UuT`@$kpSQ=zsFX&3XT&cX$4l z63uqPYSNIrzyiyd#l0j@`!C!vxf)9^{O%QGFW8Zg@Pbv8FD%tw5{qhoGZSQ25Z1j! z3E4}fCWBUzk!W9fp*zT;_%VG-TgZ%w1U=*>EA3noUtilS4OsSW^HL4A_(9n$A5;jYF*E#1c1^+e z6v@h;$R+LdI~LR}n>sBQZy3xK`xBO0T5N<|uscYK_*K%(6zz=&{Y-1v3_Fktr6KKm znZ*@Vv>mEwQ99OTEI=)Nlig=TF@Lf{JH$|E2{z8gHny?h&zx7XbhWzXJIjKT zvR#ud(W9J7DR zz}ml0!PYNruNT@o2Yi-eUN<(2oR~*k-ZSyfmN(;F2DW(Lf+LJk0WT~Z z-#N(7#+Ux@Kv(~IENk;;|9H+*`}ZwAV_E;$U**xrcYEa6(dEneaWKZf=10hT!9IdL z$B>2oYl%PS>*{ssd}aRMK)3uk-DtLe9=Xto1>C)DCm{5y`(tH{X9J=;qJ(eFD8N*mUOeDC{jC=06OdVKslU>5SJk z@3;2|*y3@#$8DO9H}mK7=q!JZ|3EBk8-LEvb%&+%^Yg(tCj>qh+YlBq`%4}QJ|nIz z`{QPpt1l#nEM}E+hcG^OF{H8Q?-*-=mAt)iuX)|&p)S zvV!_baW=`cFGN-9y(Jd6RcNVT&wA`K!cr*2M`mGlR46p@h^?$3K9B6m3hKA4P;W=A zo=>5rSfPGih5Gr~^l;h;UMQDmM*Mo_Umgd$^=N3iq4k1g zL9scjw!E&5X624qHH9`sYZ#KTf|Q2~wp--}NlhEg;!Q=R7*gN1+$Ig-j<05UbqJ1T zYnN9yX_HxQNSpfFuWgO?+pJBE_S*{6v3BXVb(_rU^R+|KBHy-|-o|K*xYzY{@%79& ze2q)UJeIr@iXQvo<4x&U@&Kf?4*J-VxJUf#vo5&1WBPv`_}?cw+v9UstbN-57g*bC z!t%9vd~W#>IL@5!;5TB(qpTohL z53g>v_>6ZG;%oc7K27xrIC4>aXRzsP?{0jy()NA^*7p7>_H6H1Y$r6{N3gee9KVyG ztN+Ph)A`x&IDG$TpZ#b*5G$?P^IqI$&-OmRXE$wcIM{Uh{|&7E?XkHto&GaB`u^{W zJ_7yU4hM)xDK6J^$Mrej?Hn`yR$z^PKUm{mgYPq2oIRKSwP4jxguUw9b@KHGz^cC` zI@_Oxos72sGce3;jrVzsa$S61;<5EK^3 zV;(kxr4cKgY$`1VtT<8td8|fhVTEt;#5sQFa!=e^RuN2x*1)B)smXU~Y#JX{ME;l} zhk5QiK$2XkqSd9Blc|j_!mu_-g|mrWpZpTPmF$Om=+!5Yeh2=f4}Jsfc=s>xn{jM= zmpG>nsAF6Ex@-TV&+%JOY`e~O_S84Rx~w|c^nXHs2Iq+`cmC~GARZQU4|hC4eSMtQ zFrE2*jq@^^UnAJ^qrM#HiBx|MCuK}$e{#@`X}=FP{A#}`&MTQt`-6pP{|n@&_GiFf z?H>yGCFF1VTIk<1I8StMGQ3eA@UOuO9J9Th^Qrv^=tqNJcKQzB^T2O9rvIhk!yw{JgeBcJb;`Aq*Ug869^pDYmS#|}t!-e>u{%!#D$xSux`X( zFgpAGSpUqP{?B0jGvUrMICe09>KEYH!1Q-; zV0bt95B-yX)R$u4ZaR4l?2DC`3-dVu?bl161HgNBJ&g77K9?Ww!+!wQN4;o_Tr6A;^i?WzjxzO z=_S`%N#U=gDwXb)1bm@VS;{S}sCm*P&n)+IK~HMP-7YL|aiTPLdnK=YWhu(d3B8_k z%PqhT*zLNKn`iIJUIR%J$^F!` z7O5#14PO%S0)$>Fwi;mD-uAL@p;*bdrI0H5^ex^MMi)F5C>BbREq7CMVTB3FEALnbQ}F&N$9&$vcX+?lG4017q}p!;HhX^G#RJcmoIUT)zZdvX@#i)0>W|B! zOa6>s7wCh)7N7YvU|rRGxbAAatHhq|b02T*^LYbbgO|B{81IikJUp_-i+2dv+Gjjo z^KS9zKdr&fXEIpx;cqa^Kg)hzU|$5AJ=^2GaIHO#&%xNoSbRQT-~#B&U4OXzTEON% z_}=>XoQ-WysUHA;)49AJ0_*a60&MNE{T-W9X8TWot$oJZ8*K5oU)v4GDYjo@etdSS z<;QsQaNJ_?A6r--ZM{YmKVO(#*m~dk=y>ox7&8{e=Wil3KH1`rfZnwk_b|pBV&V6r zUtu4{??+jf@A{qme18D8c+^|g_4PllzXELb)b9xN zcQLPoh2ORgS{m(o5_6u>qp!P4~xZUh|4))@1={Z=g@BEG88?HTW zUpB*gTc5eU-Uzn!mG(T4Q~SHbp4;;S5N|2!SZF^Zh(8{z@fU(EKDUp{z{?Z&h};+J zvoZHq%~=1IIi2kt2=>|oTYmJPBmUezeF@g>)5T!Rhw-Uv{0Z0|XngKJEk4JqAK3gk zUi^)t_NNZ{SpKx{FYVF(VCZJg_W2t?ZGSOX+kXwL?eqGsr`&ij-kV^H7mt6VZ@)TN z?fJYqv*&mX0$aY!XDV3pxdW{E+yd5o_+^*IzY}cnxxCiF_D%geg4O>w;-6)|dthGx zYkQ}Htv%*H53Kor0oL}HgSCC0v(R`ez!s1BaQmzNyMon!6|nmA`Az1}<jm=e{_7+QAbR z%$+~Gd!0Ye{+DVwU02%P2Y+<4=xRI|iJz4>$9{_?6}+ zVLa*@k8J+bKW+4Nvg(tuk5GTI={#n7AAFQ+kDm!X0C#sxeOqjERo@P*`pwt|t3DsB z`oDu?X5Qz;boPGyGm$Yjj2D6r1Fw%c&XQ&S1?ts) zm0WfEScGAp>!az+hu5(fGoQX-&4>3vFrD_d3Df@9fqifEMeRoj)1LQ<(fGd- zo$;R&rakZbqV_+;`m6DG7pDE8V733f=#2ldFzvq$><_~FuklY6rv1fWjnDf8sQv0# z|BY$CAz1A%5S{tlBux8-fqfSo6Iwjl4;H5VXt2h=OLW?|3e*1ez)GJ$-sEF;ycF^a9mRynnzK3Df^4*x%dw%K1KJb-(??h1vdjU~8ZD?clHZ_7JB1 zaIo1kpRc5S@{`at-=)Iq<0fpAu^w9dOYnup>B5hK?*#MSi7Z+6{Eo!@Y0uvuRru}|kwSQN1+INukgZA+=sbzWHCpztQeWLxE zSU)uW`Lh1d{y|~dFAeNlWc{K2#lp1z4OruEF8dqW&k&~lWni`MfWGK_*g}~02Y}7~ zddz43rqI?m-e+jE%y;r}0pBT1|K^UVKj-_YI3Cyb7YMWcH^J6E?WZ*R_WUh@`O|&@ z*zB24U-;YlN!|hNE1xbr1(W**oFlg9NAme`=VEzu!aB#&vL+@k#?LMO=sxf!;7t-a zem))fKF56CANgJ9&v^d^TRigl2&Vj?Ft3$q#rDeL(Y_bPQ|)I6KZ^$|@U{|nyY_a( zwI>VEKdv(@e4gJqIEUXe!HD)_@p;7T8Gj%?e`x$20zL?zKUD94Yjc!8#VgN@yJsLrOf_! z-Zbq$$9Ku*X}qgbLCa>tF4a z>PP*hKDy^<+*{hs589u0Tx!4K$olAa$KqbdNjmZTIUkH6j|=S|JU+GOcwBm7Iv(U< zC;R-DQ+!@JA!X)s_*rQ_@q9cdoln$voRjEStkKObkE|Cr#3Etc&8X~5vgHpU27%&IJ$l~tQrnPr$}S$fx0 z_e6P*`bHU*O}UK9&Y70^jBYk%jb~HzczNq{JWH1;jxNM9tt@q<^rk5*rB$;kn+h2{ zYAR+`HiwmyrbOc_RLTry%CKxIvqU{A1IxGzT%T``-&OdNxnQ#@SIw&Ar9)*Uvodp5 z=Ca(&EAwcg%(6#TWg)8)v%lOuiVEcoVJDwuna`@sjG0;4THa7G%BaK>x5_Ou^F)uz zEgQ0WgspQ{@>)3`CUI$(W!bJ+Hu5;~$gs?1j3@5b64h}~wKQ>YlviRv!pf+aVHt7g z$}9^RmRQL%8XAI1O^5Ge%dj$sJjaBUoJ(Hi6*$lfD*NJC38f*hWF3znJ@>d0$Btzw z(XyC1{{Qjk@%{Sn^x1>dd7pY5V#Z|%Zdh~+&Zp-c zQ-25DF#RFiGKFG6BpX=xI?OwugCGd?@qow z*>u{ky0gzS1D?HWsx#hTd>*iTIo@Z1ZN4(zL->4P@u_#))7Ou|=LOSgKW`tOFK$Ws zm ze}ldS=Jz&<9JPNXiuml@NfFi?Q9u#SfYGCqXy+Tfn@Bot z^@-PwvxGY1{S@{VFU$TdtWVZH{gvr|B6RhixJKF@<0*5#E{AUO^*!j**TfBe+X13-}iBGmg2w%tPOFeVGfkd>5~ii=GD`688?jkp%PmU}LU7Iq0@NasAi|>yNE3 zod4H@ZGGVU{sye`o!2}Yb3Shl*7?1&F#CTz*!suibqCm%7xN=qe&l=6SLIHaYsU2d zJy`w8rgJ`hB*b!W`ePu|DYd?kn?|@rHpd9`l*GTAI(D zzl)-0!MGJ>T)4bH0Ne5=cg6n2nDdjY^OeteGiLlotPj>-`u|eq5A&yP{bBzb*GShd z>ij;{bowvC=QC@c{i$0s?GO20VXhyKf^B=veBK9JK8#Pc`1HRH>&Fo?-iKlRP<`9A zQ=Rcn0BgKY!D`Qk;8{GzKPupX=#T1~3Nybwad58j8u9tl>^a{TgKfTZ{qK#>qq;tw zh|e?X|6Z5WpZRp^>htXZf9n_@`zk&QI2z;zOkc3v%F3Fhnh~XUmtX}COKO)YrMe}h zx>jx+g3_ANZh2j?zPt|m;z7}*AY25yvbtw8?4HfAd+Or4GGF9eURUP3268D*F3+V6 zbr{*!L04q>)~;KE23yzg?26cYMo$d7!fg@KjGkDdyzcRfuPU=^&8o}rMZ4-7FU8i2 z*G(IA?^@Tu4k{?EgUah(&8o}reYIvA$yC)-^VWRp`Q^85q+P2SxL2=kNmAL0?RHp} zNL_y?YMt3@UA%xO^fgspC0?o4>Pn6!#e2h5`WIeJ0QrCu9Fkd^m0R+7@pAJXaAo)sn9}_C(vuX>OwfT%%Y-zGI=yP<_+rd6 zS}Sj#HS1>fc)iTpKAE*iW(dWT5~b3vIV%U8na{(7m#0a=!CYR@y~Sz8?AnZ30^5u= z0KY8Ds%ara9EyL{N+Wni`E^W@E* z{^th#rZD@zYLlPu`e4oXT(HKg!=ZpOp9^8k@m?D{B^~cup=*8%pqo9%yKc3#y$R@F zZ!o@wiwpDL3~ct~Cxn^*Qm~Hq=U~g9Ip%0kbzMK77r+*e%V#~D12Fr;kRRE0IQ0J!&H-qD_}mNg=X~Xj zX?4Cn4$*YxI{>=n%lN~=7JpaVP~rpdGr6S0{LXhg-r_VxT*yC%W*mPiSgFikapgN@Vg#CgrYY6H@12DZoj@D2fA?#7?bA-S9E+9NLt_!(j5 z$MLZI*dE!wgJ(XMfGyw6@a5xM;2Ydg)dg?hJN2RX&L)>M$audTp2nj;?~7pm?C+LX zxvjsn|Hla5e)W;5J@elMto>1@f8!Rue^0QrNBw=YXZ>S76Gx@`v<>lWWL(n#m$=Y= zDZUU>`_I4{@3b+#elpnfV=z8*CZ^jbKKJGFvFUSPs4tx0>o@-})p?&I>gT%grTwfO zeftBj@w4X~U5)MGX~=wMm;X77lHaIwcgus{5&j+;x*QksaA?N#$1cnB$00|g{(P3T z+0%cHF#Y+PFm1mNSp8>#)&E0b`tv(A^*;@){%?ZSpWjIv(|<8o{eK5m|KT`3Fni|D z`xqI&4*#9Nm$~s_Jl?lRiZyA4p{2zrrLYCKyV$b#_;b2bNy9I3i z%=b7P&l#WGwIS*Q|NF4aSs4Fqw5Rdkm-gwuJ&yOxpZvTq$G;nn?`-@z-baCTyw3oe zKgYXI*L1u$K)ktN`*wu!c|UNoC%=Z{LFLOgOquQ7p7+~(6m0fv@9^$vdyKbE?^I{| zuS3`NyY)zQ+J7X>@p}=h<2S9RKYsgwt$q5x8t^W?eEm(A52~Y2@vlb7VU4R?a#%Ub zO7RR=RiEWsQsaXnY|OnW-q?CcR7^Qp03?&wZ6LQqGkFv)T?S;FSYB`BV*q(b(N~ix3Q|4IXA3@s5I-a z@hB@TrIV4Oeucv{oPF-qr(8{>Y_-(W*te`Huj0t6?Jg--i)U2HDiZa_Wxip~`8boL zzkbg92EKt>u%(dY>yK5j&i9ROQkqotdnx-oe0xp6~h_V z#G?qyOrceU+ZUkhl6Vv<38+s)sRxBpQK5+1xbb-iANMItH%o{^1wx_pYuZvnNhsbd z&`uILsSQFYNb<&coEuczAQsN8usm8SdF=aS913HB&m>7n+SvE(O2SzcgqDgzv69D1 z2yuw0C3(?wlbS*$A*qkbJ)BVff+4)Uyf&#>X`xuQKwRhwLLrZ1QNJY1qqUN-T_vGV z{`fjKef;=B;fBDZNqsA1Rj4G4uOt*kR0xH(xY_un`x5%ZDcAsBtl)T4O@mG`_6r=*K-$6yXC6+{U;pUxkoYA zT*o_veZRtc=HjEScaPoa;HO+T-t(BpM~^z@J%8WF`(=)K&))5j^-{--R{+1^nD=D< z0Pi*4IOrCS&y=47eggkk$gRSA-B%y|72LNz(b@hvm~Gnr46wG}0@n5$!P@@*U~8ZG z{w}cR?>)?(`4rH$=EuwAj33@G7tIGBo}?Es-;Ep6eCdBpV`@+Rw_xiJ$G1H`ep){4 zUq7(+?;No9uL#!u^#@zNj5iys@zz?!kM~6okH6>8c)UNK##<4@D+cin1Z#dXz#6X; zSmPZG*8Khn*8aW))_9A-8gCX@iYD;4-Ik{hANf{O5r+ z|EXZhhw*L&TRd_{9F7<>{!p;SKM$<&XMr{TW?+qf0odX(erKE;G-mt}U@tz{ix1ZL zy#JFIA8hgXtS6o)KHO~|_-v`q!1in|>i9`+NhkBHirJIfVg4$=f$=eBys4wL|3#or3-l|&=Fj#! z?3K39^>Oxosm}Pl4))_u1e-tgyASd8mqh0?0XiI?KI4achcNrQ!HH>q$p@dDGV^=m z)HJ_=nCqB6(QR&f(1LZZfcK|3-mqJ8;W~F4EMu^5>4^6|5{!7A*jiwIPGsS}bR>A6 z1fyfXTY#|&$E96+JQ)}KxZ{}zM$xt4YaL&)I=)*5f9#m;ZCdBIHx#Vx?FrWQcc;aoN*Gf*E{9^@aXa*zv5jL{g!~=>cS^8~k4JyjsK@hk z@sH($nYgMO?{PUtTt0?>AMj$wOS|J*0PwkuNyR|4|1j+_1}wQA_&yQ5d4kb|q400O z{@F3d=XNm6;=<*@-}Bk{aQQv~zRl@ezO7(ezFb~>rihN;@4z;G9G~yNHa_fMFXXEI z8vxe+jRIT$7=Hp-<4*)zeCl%o{XEe*elLM7KHFat`$uh`_ir|xW5H-mNg z{}gQfVgINb&qaLlzHYpp-zfRL<0QuiAwGXEjIXETLj4G^>0~~0#F+EvLa@yrE-(JR zSeMr?!M40O9=tX}$LsfC8!yJIZ%X5FJb3?G9giMh9gm@48;`T${|NY3Za!bq7soE( zRdPvx7;hHFMB`lv)_AvqHD2?oe!Pxgi^uU_3-d?E{~G8v-dx{q0Z(w_$^I_|YyaN| zTmOHK?_rNz4ci!J&-{M_w)RF`my3$f_ICaGY$x152K+SES(b~()J6B;6}ybMH2(4U(3gEC5V+~U^LdEJ2OZwGoY(6>ZvjlU$&c|53k0j%-A3G{iQvwyo|`=I@c zz}7$N4+Z+(fxZEjkNQ6%=)bj@!FSo1qI&`%5WM+5ya(U~9b->&U%1=jpO3G}l? z=kgxgE?wTtm-nO9eD4QqzRLprBhinB|GAjouVai^E&_MO{Cm;y^;hPikD$*?p>wmZuMakz^WhY*&WFWdoezHm+w$x(8_#UR=QHk;S@>-6UBUMz7?0O! zV9SrokM=s=t6=A1<9)zm_-!_PEuR55)s8{25*mjYf-)+gG(iEXyp_r$@I@?il#5O6(qj%vT(dOqJ3@QQ%9 z#lBAcFADfxN8~FYg1^i~fJ@NTi+dC}a2Li6|>f7%a z@YTYcKa0RNe>gur!!f?jkB`7QKX%yAkH0^hN6GyAD&RM}`+CnFJ|7nF0|D3f^zC;H z_-f&}KVa(*=i8t@sXyqOQ~Wws_Q6!}d_y1^pvz@9~p?xQyQo=SRVuQ!LE?B5cn!zl*_^AN@yQ`>p;X z!Ro&Pto~nt)&C}J&(;4YVD;Y>+iUfo4mN-G=R2_VmwY0&-^R@ER~!2A9{_9onR!3{ z{$Ptw|Nh;5|Bb=w{}Nd9dl_v0@%+H{UG=NLsvn2#x9Z1(O=tVldim}1+DdJIz23fm zXR!J|2G;Ry1*`uF_zbG;p9nU8=AXyLSM}~-(>dOM0^4|J@d#|+P3L@E3by%3ZpHSz z67ziBKQIrE&fyOV&*zosz`|?k z$AVu=Fygh_KLjs!{OViyJ^Q1I?<&l93~5}*Ut&HRbNP(J@r{iqm(QtST|S3{b@?0#*5xx8^IMnCiC~Mz{D$H9 zMDx1{#~aGW;dnxMkHJ2VAL8?%O?+NwQ=h*H_`{*T{_zLcC zeJA?ct50`G=LhFsuN_lnf6fFmKkUY$LtH;yxVF8l+~p_ysd(GVlPhCgTq*0;m9k#4 z64n^Rl^B!8=9RMUvQpMvSK1m|+qRWP#6DytteaQLy7Nj|cUuW-TxF$8=dXh&Y`WjH zJ9^(SaqbUhW7iy%m9wsQu@@#$YQ#2c*JKUrvvawX$h$5VJ=OMg2i6)p7=sY=D`nmJ zW|udP18SGfH@i&QWZl$rW%7pgN|f;{W!<#jN`zi%)2Z;7jen00|Al|~-+wCpw~j~I z9Qeiu2{;V2-(XX}8|O(>ABN8ns!zaq1l4!0 zPj&t#_NUP8H?oY!Yh28p`U_yw$^UAXGJo?s90xc08{=_cv*&Mq8{4P9`Q>k%r-Jo2 z&ijMSp6&05^Ay%T`+FtW`V%tqITVK@=FfaO;XH=s(+zAo^SK2)-+dloymN7$!{Rf) zarn%l`F#O4f3`PMnD+eMQSE1e&7S?~i}M`TANu#gc?#9rXE`D~3N9JL=0Hhbz1qkYw%5Aqp{^CXrJ<6i_;|J`wHuKugwJgn)oKMA@q z+q;P8X))(ms9!DiTwXikyo)ZcJ;3JA<<$}AVQhIZ-gL0W+aGN9jNcdMX^a_vU7V-U z_yfSEGyb2z7N7q2c29LKzu`EqqvLTl*!-E#dOS}n{p$f%{lP$=nNM}L_hw-K33QFO zBCtOh=Z!2r{U`KHne*q-Ug`Xyp4%wZ*`H-#?ax4*N78s(^i7%LcOcFa>G&NFHhYfW z(EjQ8aXhX7YyP)_&7SSwu(99%=U~(6|Na2q|4N)^GM)Wt6sG+KIPawG^#-f`--X$q zPX_z_`37wE?9V+oPo?u=O`NAPo$dcgn9u#(9`m}B+n%t04`6#{<4b)bY>!pn3T!&# z@j6F~ANL1y$?Ff;bjE)ftp01u_M842V|%Us_lQpaVZrwOWZAyc{{n2^)xV=`@9BRf zSlj=D==A6BHq`%Uu;tJ3_!z9?F&6s^jdzjkKNyeq6w-Jbfh``#@880Ve-ZW<7JtZb zIL`(~$ha{7ChRY)J+3cP!M42(neive{)6*}&sEp;p$_{G%ZKylBCyRLw#VyUtUX@W zelhkR_qlx79@*Mwe{T);ClAa1g!zoe{>0j&{cB(ypSMNlJ?a)=e`5EDqy78A{^WD8 z#bf+ag8fNdus`V_`xB1$^I#iq_IEYxPqe?sg0;V7>o4tph3&7|Ge3Usr~TzGlU$&L~3;RD1`xEW|)4~4ZonZfQpzJ>we>qt5`9^g1|2gartpD-y3AX32 z1>66(1O3vxAO9w>^^fuT%KnJ?+ymBpej_@^^C0XWY&_|IFWBO7{yvNSh0fo1!KQQm zUWWaL&0qQ-(l6B+e;IU*KfHIU)BeDXQs(%)3*E+t`TrKW=Kn{rr+zv1N2=cnw)_}> zpzNP$|4XpiKO#EqH<$en?|C*G>)y_8{o_5R&c%CPE6T#_EZ)KEsF)Jwb@Il%ht+>U zyUgi~*A?4ujfY2LdGSsJn?K{fDa?33#`av}T>;j3_-fOOhp&FTcspSGZt)qf9a!V> zxlI~xQ?T~;La_NWzh%OVcQaVyz0}T+_cB=H^~LsG z8Siee#^ZBXcb4V%N3g~lj{TSUGv3w0jJFe5Sp8>#)&E0b_U8t$_U9$+A2r^~V2#%o`$vs8N0{-p z0b4xYgOB$^GW++R>h zIDOi|6Bf*!Kf8M!hQ}+#{}{yM@qc6-YR-q61~mt&W`zG3xHYiWs`vk5puCMi7Su|z z=6v`+V(|ZHVR5^@t~>tDT3lXT!`>cdLM@Z#sIIojTD43%MQt#dQaj4dwM~wxZ8Ef$ z$(~V7lP+yB8Ey^Xs3^1C5S2_abyTvUV)Z4CTlMZ!$=%h%#B!-*8TRPAa>K^jQF_-l zX)M;v#hFy=cVn^U(7^<^m9JVFi^F`ANf(9oWhS8k?wB(#h>~HFj0-;gRV=y0q@oT1 zCe`Fbt7+2MS~K0+twh~|H6UZYbgT2%qYRTSwN1i?GIHw{ZCPu2uN!UCc9Tl$YqV~2 z8l{3!Lo}*ZLk+pwCXF>sY;A1G7!a!(jyE3|RC=wpbt%-B&Idbp{#4hMLT;r*bHgh< z@kzfzDU1%oieZ^p#3>#tWnv;E^R6(tTAP!rwW;C=Ys|eO?3|z~MTj`#Vg)A~v=ln3 zs0!Yz=aN8EQM;d*VQg_$rb3ahK{jwG>{czIk{FHvJty!EOchE=T#{i>XkTrqv|%P> zWP@hPr>3-Bc&%ES)2fMXd6thl+jL_2z*3wRT_`E|Zy|PwGGo$n-)c*xdo{7@nmw(d z$|^Xm0cXy#%G7nxm27d+G-ewQ-;yj>h@*Lo@;%kqh`N;KVCR*AJBtc=?z1eSH=urlWx#gv!7B^i~7+FIiHO;TAXt3<__<&}BA zDjB7GSxR{Jd}x@AXR+wl=ZOV;CC67QdAw;TWK`0i%raP(NlMLSDZ#9~67ia&7KTkr z9&elTh4j&Jl=4_YaV5b@9&eiSEr!W!9xoY|Ma00r(lhGuHXos4NLFRvvPzt6E_X*| zuPn8WM@XR+f28F3-mff7=pI)V`8O?jzRkayR>aIv&---=msipktzG%PZ@$D(U_N{myeoZDXk}!k?)>V=CUej zS?-R&WtEtq<%@%rtqh-*cp8;e#`i{AmRePQS64|Y=AZ;>=aO-T+ENmuay71T2Dtlg zS!DGM)pn_f$f1hgft_In#oVQ3kyXXUCg_oQB1*1PRH&-9R8f0bb$Dz!m8?n)l^)xQKj8L^%it7=c_GVzlyn4Y+dl`6QDY;O1rB>3#+O1Rn;2p z%2Lox84?R}){RxH)<-?YWOOF3D&}$x5;-s{=0;b|3LEGu{Z-Xl1aVfPwgkY4L0blgesZ%4!O% zDd2#GCD%aUJFlk2t09apt6@dz6;oSloN=Ml(}k|}Qcdf<O(S8zVQkfUq3QAc`+k2y2*6TH@3E$TKZTP0CTOLQRXLtc%QUGGle!8uEn>qy<^9O02}+x4 z>fofFO}Xrv77dO$+3b07eQzr6C+jk6BCn=3p2=vdw9Ujg6q*>PRO9Z=99wFGEB(G$ z!=vc!rOJ(qQ_AbKrpS8?alcie6sKSqtLc;AU!|LI{0gyIt@_-*mIo?M!CEiv7pG41 zqERnEAK+>$=pCx*Ej9eventP+ll&^`%)d%0PO70#Z;vTjxfG#?2Xkso9alJ3EY!PI zRHKMGu9&S@sIOg8FYSe^eZ4|G%|BaD9kTS~Ta?yqQY(E|OoMB6>3wm}_JyeYxKnj+ zew76GrZ^S;GXKi-J+XDFs@L$J+PFtk(YVnBUcP{DvS1Dp))o4?e1#UIZP_N)du`&003Ao8!6UrEQ;hA3s*x1AT&h+iMa4~C_L@%Fdc_>X|;Hzo5bZ@9ayR;n&W zIM!9&&QP!3LS41p5aSoCWf$SRSoz+ks>gq`SiN^V9xPT%u#lmrpQMp%m4zJlBwdM$ z_=!MyN%e9KHO)2jDAbGXC$PQihOJ*-6I= z2Dveq=YBQs=PG*@l5bcmX($qkuPaZ+;j zDZW&>Ly0C`aTHU)f-KJ&+Pdk<^kF|8m<>rfv)x4W8G#Qh% z+&i=1)>wpLsY`>Gs_hNswBJ@+dd)>UR9~PwWG*r15AWt;X^EAB+8YMXSC^}1jx{vX zyKg_Vkc(Ss-@h@w$N3hnO+J(MNxXj|kt6C0@m}>6VAbEM^YxzCfU5o-SpCN#FV(x_ z+=c1~f>ob^<2}^}fmMGPOI`I#z^d~(bE?0IbyW3n*e$8P9$58DaBl$B_XC^G@p=&J zwDRjXm!>>S#*6mbHv9V19aA30@dgjZ7_l6Wdq%H=GlQGBmB-*?DM2dn*cU>&cY^z!Xr1*`qA-oE|FjZ%B&dsrWz z-{|Y}kp4cezp>AJCa(5>dB7VD^7Z^+pH~^;^YVZ<+SJ#79`L3^ef`0JM{l0$e1`ce z;KP&Y89#&lgb}IE@uNzRZ+1?F1r|r@H7tqyyKO7!t`^y480{*H$Io0P0_%2BG^~Im<{S>;j$Mv)Q z?*96-BiPnA+CQ*oYERw_KSMKr@~`$udFQ^3@z;Xbm){MbQ0w;t^C^N09+)1f{uILzl?pfj3Z@d%%vKicPyj`8`kV|_m4c%P3x!RNhC z^m*_}DRaI(bE?1m{w&P#zWTIuyvetn;d9GbK1b)I%;nJ;y7u>s*$Ef0j5culEw{L; zzO=^br41E~;`$|Ruz9r&HqW-f=BXMs&Cs8$ZBu+Q9)rsLLYzV^n89MT3GJfI`)O_gO4b;!3CX;j&!j_Yy_8w6;J zO;a1aE={e{)jp6EGYv`uMO%;LdT*6zb)dRyZ>0gt#UYrSy4C<#scP8SUzxq z4&x+Pb1S_Vn$^y~T?wbT^%Qaf+Mck5P7sHcM`(LFbFXpuSDLdn7%#YOm6 z9C<2!8;Mv_-o%TT?ORgbBN`FTHI34Jh1~Hjo20$#vuZgpnbmDsJpM6S7KK>G>}>Ds znsSR-MD%USq*~ZIR!gFNYqkp27(^DXn2H*jh#f-|p)olU!*T@0M$B~BO->{tW4)pgOH{>x##A(oN-SY1 zH*}C9V~swexMt=&jgf zStKG{UB8#wTA6vLP}G+C5j8IWaA9{9eFulU;88F;K(c1QRi2+yPpB;wNLWF zj|$j9WZgDUhk*#WGXoi}(Qm?fL+;wxe5_>{kb!BBB1gda)^(sr{Sxc)w$s3oo{x- zfa>HhcYqst^X7Ub3zC){S(jPSsTDcoYv<4pz>U0laXkkD6^qmlZ3FYwkD*|$-fR!9 z&j7>w7?$oEgc3P$JLJ%|ve>wK_F1|!b-RXkXHJP$;SVf%ZSkb&*H|m?nx%6yKR_Qz z*OTO3Y2@oW8PGd${g9EL)NWEc;M$prz#YyFWVl9?n{`2RsVsU9$c)~$Y_8ubf^-At zuaU3H4H^hghK~iXBf?iCN&wtN2Mc$?H`^eqxn+6VyvE9^_pGq-Euw_QB5gL2OS8%L zYbzU!qtdpxazrvHI|(Z~nI#5BC0Aerqmtp1s?o`QUFX#s4yy!Zmc4nA;rn4$!pi0{ zZ*ry8I~VfG=;VG@^XTNBIgwc+x^gaEXXQ*zv8>IrpRFD&VP#R_tz3`E&sc8ciX4<7 z1+O%`GJ`rhVZm#J&E^~{0uv}Ue#_7}QhM=U9q{Z8FER%5A=_EXe&jN{EIPSqF62^! z49|~xVHTb_CvqV}*J(KiDzgzf84~bM1C-N|yN=Sh9t1O+zj8$`BUsMK5tV5oMI~2z z%sNcpXCgVd^@e^;@$U`Dd3?f(nlmStW;z*m0+sj6A?FUZN#=JW-o24c<~ij;t{v%h zuCu+Bb+S{r?`Quhvzgt&ymklm29Wh@w?El74y&+!#;$9_dw^d2m6<)FB$wgNl^lI; zOvvty=Dw33rf8|7Xa_Wqv5C+LEpbU2zB!!2-zE1UBcp-^F~~895w3xZz#mIs$mkrH z2QqL~>%TeN6vh}BqyZ9kaDVV1;XM}4=n#|#ehwu#58l=mK^kI;g!Mm+^g1xg zC>iWrj}0}D6Q+f{wUs{IMW zj##x1gzw9${)kokb%q_Wv}1dp1uWZ(c=x6{zTd!o;kmrZzt+H=;6$O?&o%IR1D_1{ zQY!xo10M=ka@GE}f%j^u+aEXZj`00l)&FJ#cZKiks`g6_+!AhARePO**BSU|_zfSG z|Dl2Rg_FH%Uv1#3wz~a(1NVhDYgGSh4cw`{Za>$+>kWJ|9I>k27Y07Gqi%oOz zi&g)}4UB&)TeaV8;I42wSM8S?xaDTLz0Sbv419DKo&TYM_l1K+jknssRq$?>YQNvW zeYe!@*BZFfR=WLM1Ftvm$z65+7Y07m((P{>c&~1{{c!{D*j=~ZY~Ze2>-I|x+_F-) z*BN-7fsgK?^FK83zCCsOY6DkoqucK{aNl0K{aOQef(wi~e&;H9BAnk^_F?RMxF+C+ zcq;=BQZSwmcLJ>H-Dcn(eRcaa2JQsk=T`mCHSl@^pWI*Pe_`N5x7F=$8+b4Hez+R% zaRcu-P`BS~;I4yo`=thMIas&X8F-z6j~=4)KQ!>Z+v)bz2Cmv(x8HBzzB}mlYYp6K zN8Ns|f!7-tzt67r-xmfx6u!`*+TS+tUPE>J;|AVw7u|ldfxGUi+b=b6OL*g3jbCTr zbp}3qcb)&Cf%k-KXEyxzbk@1gU*Fz}%xbo<)| z9ywCC-(ld*N9pzj23}|2X?yDYH3r_LTDRY5;7&DUzXZ-VOW}WyO`MH9EJ_tD6U?pL ztnj=sD#>PL2XwMYc6ODOUG?9zs88(duCcPK{@YvBCw6w%SlLzo?JepPJG*PF?5h9v z7WIjp-8EKr)qi`7`ozxe8Y{c%zr96$VrO@am0k7U-l9ISv%AL1uKI6pQJ>h^U1Mce z{U7Kp#^4r^y_&s9&F&5V8jn@4KUuRRq$@lq%yE+`-;tvq(1ok=$892Oplc~p|1M50 zuJ~br>Lqc?B|^@e2z5l!LbvG z=sm0_Y{P7fGC11}`lJ%>ZZjJsYXc~O4`MZWk9Xn>{ns#PhFs>02_I8DYL2flf&UtX?te=-F zymOInRQzBKCCoK)c!9yeKk9-B=enUQ4vwFz-F}~O^)SypHgVA9Z;l3Ilc z%MbFZ^%3^TH3Bi4l4y>-l-Gu?36CXP1TpS9J_0eDl4uTpXeVD+xLW1uS`OF9d|eBO zYG-#qv>Keld2R_i0ga7*%~4k{a81wG6|#ky82L)4Ms8!&C=l+{Y*)*tpL!|RF;OVgcw7@^EC}o=h^D%+X1iTdRX97O}crD;h1V%ml`-iID z^MF;o&jCw4^sj{msQwcGtNwo|{uuvmu&eQ#!TMVDF9WRluLZsuzd6`te9ZTfO8@tNDBl7hstW>K_YswLi`@_-6r@d~ELs z_&kQHZv$5KTLD)2OAY=-2LD8bkNGSIEc02gq?D}!e1hn2Z2w$XNUH6B2C&-xpWyQs zYJT4VmieLHrWLLp_W#9zr5)%07Jy~`IR0oqy9p(L`Aq{onIH1!LHrCK?CTUe>UZj( z>vsk$`PiPNfMt77uMf;WX+QgxQZ^Lu0GNZgA^&vve23&C-VRnp661Ur16b{k6@b3S;xOFitL_W`T@)3cl2KivVV?Q05H`eXkL1T6ap>+!b%EcvK+4t)MX?Vo!9OFQ<@*MMby*xn!D^A~db@ceONf4#qF0ao>z0G4`Q z{ItPODSYhDe*%{MiTT_C{UP(g{Ov({yiR~+Jk0k2z%pO-e+fQsA^mawtOcyjpAkd! z_Sk^c_Iw6>sgHW2z^>}O0a(?$-_X0;(AyWVs`nsZRqq|Zs@{&<>G=%-tmgNwp|>;G zr5^TI%HWR%EaRiSYITGx$KM_we@O%R=S1{^-0-qmw1I~T8;ra1Qz-s*D zPP%;$z|xNM;Y8re`GE0{htGq^d{Fq_8pBwp%0=vuy+rPxt z`LBar#>4)q2D|Jp#1jnMbeL;Ly_W#1@m~fk^{_vBLi=QVY|lM_)%IKpSZ&Y6fK|O6 z0jqkK16K7O0<7wFfX|zJBKjZmYYSM_d)UzH0(MpJbik_K+lJojhTidj)%^YmSk*fP zKHsA1jR36XX9HIA`^?ZA1$I^MEJN>YL+^D%uMV)5A7Iq`8~p#P=%?_aSrEly3>FRk z8`#7AU3)r_C6whqQ>9oe%dVQ4RRLFIS6{Osux9$$|DsH+Q-bYmycMX=D!?ApKWGog zkNazO4d9m{gZ*vL?*JUX4ee!qMyNOJTIYk=L02OstkSj;4KeyXU$@TAwl{Wl&5RAF zvB*?4$?VZiwtt4en`YWGR#)ZuMdfjPmN&9nw(ha;Q#G$PuX03 zvYYL9?Y0AM_@<}d=753h-jkc`@RY-6BfF0gs_|R2LGj^xn2z`SkeV>V0`kZ2af<$v z4qE8|Dxm)??r+9-``7LN%)to(O*@WXkRA2C?G>5$svYQZb6|(}?{mg6DhT+!yx{&X zvx57#ETsRz9yGr(Ez{nFxz`W01=;Zc&$f%!@uI>uk58rlfe~)^*T>Uah3#+01bBYh z!K=sTza|)9FURX=fSq4o1MQHXj~xaFHh()egMFrtKewm-&u?T8>L17;WPHNy{`%Y! zGCs^MF%BMMe5ez=Uvc?n>lY@CSius3b_dx3{@iY^AJ9i^4wkCFHc)UCWhJF))h_&G z0rnj8)B6h7=Rxha7KhoN)bp2#iPEYFw8QNdd)WKTW(ax11Y900Z&OfhGww$RPY}*W(qsWx|;&57dYRJJu7o6V^#Vmu=l zK+03O4yyf`P0!T8d}&?MC!*it%FH^e*|4(K4E!<=rh?*m_+=7^?AMCN%iRy>i*NfX z6iY@LcVzoAl|gxCNc^~Mo#>^g=HSQj_1h_icuE_Bc5%MQJR@HmKv40EesSP_uwGL8 zB`7(?#@8?0FRj#u@4`7Xzj)!&o(!*ZxF^x5#5`?vUK@5l$lI5X->|Yx0*)g+oO-+` zng$(zx}SpZI;M?#^y3Kpl-sw+ejW0R*QAv;4w2(Q`_%PrWWN#Gx>dVwD*b2f^8O53 z7nlwLqn|C`zoNRR>(72HpLJ{Vvi$rKWn=P+*96*UE zwawG-U>I!v{NHC{cvj=XuqYcWBYdby(;cW~W}OfAr8>&>k$iy){~~QZ)TD$gc9BHqB=78fccyca+Oj7&S@{2#qLIpQA84i;}DZ z)_VegXG!D(Hk+Evjx1`Rv!ZU2>Vz*)B{dbD%A!!EZfMHzGl3e%Zw3OXgbr{2 zVYQIpG=Y3Qw(MqM4}?hgya!F*Wm4j*&YJw(VlxES)+O#af%pz*X=+w?psJyeBh@%A$5z>+x zaCQ@iVMiTW+;D*1|6t)qyf;r*0??i=RkQ>^tUO`@8ESX}NNpJ{ z0a&b+w=gm*&J{QClyeAIu&z!!9M?byCU;4WQl-|v8> zKiV&XgH75^jQS1myT6i;`1md^UIzZVY!1I=t&C3%V97^&7x>tSY99z#+EK3^d~Zv| zJ+^W&=JQX$YJNL()$v3Hquvje>yP-cZZ5`rPVKJe^LM~%{4ra*82QaBb$)xml8@ta zAz*cUE?4a6U(-YPKNPU^$Nbv&)Nzk(bbO3~zwf2n=k?a{8h8^^)juD;ho$1p`sw%% z18)mwRF!`te2+@Sqqo&@n*lnm9;D;72Cf*Q+mA8uE!(+v9RK}ya>pC{>tgs`kebg> z_+F2Se+Ryb8-}{rOYaMKST6ZEUMt{xKk9tF53p)qy1Q<_8L+fte)FqzJk)kE&X*p; z^!c(2VAcOg1tb6b;X40Hz><&lz4y@Ve*%_v%x8vzk^jI5o&PLgmA}a-9S=2dn>}@V zyJ{Ds{vCkTuKOCr|9;9Q+0gmG#x)^;K!!x_9OqM<8O|1 zF<##X9;IL3ryuRwu|3-#qvJ=9)$zeIb^OS2I=*X$j{C!Bu+;XiRWQ!S#mDRO@e05y z|CJMT{F{LvJkhnI-ft)AdS?Pw^~z7y@iC|9xcR9%o^hIsQGfr_b^R%TRsEM89dCAq zi{D>e#*P3zIK}e~`}@~3T|4Sucb2YyJ786R&pH<)fBt-(e<5I%zr_L_Pg|(tmkj#_ zXY2Nsi*)?JIXb@fTpjOuo{o<{U&oU#(eZi%|8co)Z+V%HJ1Ta(-u1pxzn<*~ShgSg zXZx%4{uu>W+R?xL)w+LAz|xNXzX4Xym*v;Ec08Z`09ZYrwMn^l9N!MtxftV}wM>t9 z9$*;{`R$jx7~{Wuy&nHPz>?4Nzfsrg30T@u?~vW4y{+Tt4DKx4IbpC)}y~9|~BFzxXaa{>gW{cJyBeSdD*)V#j!Yhm*I| zL;TGHI^Op_7o*;m_v?Cn0ZV@z-(KJ^#~1n6JgD<;0WA3#Z~8+nMt<*yb$%6KmH)1R z=Rcy`4}Mg~;~#S|j#rb%_5NxPSkU&tMmI?!(R7yPcd2JC9Q ze<*hBzmuMJ`|s2f;CEV{fp2Xl7~jzUtY>xqm%*;;9r&D%FL++Z2d{E5_IJe#dVg;P zSn8quE5qJ&wQI+GmMa+f(_hr}P5>G^^)FSzXMkJ2P+u$*S(_aH(jIi zXTRoR?9bM3xc!OotKM|&sMj9s>haMNu#AuXE#A`oJG|}M(SI#q)&FP1{>MLbd%J(S z{+Q2juO`XFt zh}5sSQp=*}ngbPn132;)nTp@hjJVkmc{$SHfqc|08q?--kp`9mwTDpBCa-2BQKxAe9rfi6P(#LDh<;YDcGHzuM7M@skl* zRPW52ROCd3XOsFI@K$XWT@|T0s8&Zy0Gl-;A{9H!iPS9Y*WuBr!^|_GcW3b-h^}he z#`)Dp6}~GTaSoJuQJLokJy4QEXAO%!1n{ncKC?XI0|!Pc_%A$5M^0stRz#u;qa?t} z9SjhS3dBM_WQu{jx02|qw-Rp!&st+MP0(k>&t0qpdP5;6+%_I;)MYCN-xrR_3ixZ*@0Z=iAT&PhFTAo0(MJZ9w;~9s%Sorz*sHz5aW`K4A zY>^L`=qF8^IZ^r*69a10r#UtsE&p>0%JB_;F(p^3@C+_cHOd?S6`)3X^!0b(4#iQ( zb+f`893qSl<|QgpM6he>ap&rs_P<##iTQ^TnUn zIgp28D?;+??b(iAz0p^VyV8?~ES=}Ahpf>pOg%WC%6{=}$I81tLRJJ`Bb{(V+KcVL z6LTU0&o}P;`pntNzrD~e3hz3I8>PL-X_vU$;uP(Q_R4yt96u32 zhPM~>pJJE0I?q2pjc5DwxNf(_Y0?kneH)S2$a$8ZUg`#J-&&3v@{+vD^F`x%GN@AW zD*WOKU&$+v$SVus$$8K;BCjMOFEQMA9`KfQTl_C-kzKP`G|jV+`LR%5M$hpS5|xTx z2rr`-BnR`pk?eL&AdfFaIU|HuZX?TKESP6GY2?|^FIf6+8D2UPFUg|uW=7Eito6SZ?;yuZ#`KkkbJU3S_67LCC?J1L~boDY-o;y~V1NAUj!}K^0 z+Y9udt;_+d9jeDTFRC7nFUSUN4p^-SJQS(Gk&Cc(j>rohGdGY0>t`4F@4@4cNW4n; zl_P%@*U~d0uUj;p)6Iz%*J3TA2c}F%2~QF_uyaP_f1Pi zPvsk(25xa-?s+GlfDtce3-gX%Vi)dyULnz26_&i~p7tGLPXkO^Xgjz!^E8K5O80XM za(4=IXXg|Wy$vhRc8Bi}g>KaLJlvhieLwq88M+U1a&xb_?X_3L>MFoJG;<(;I~$g6 z6XgdoyyPY|d@3#^@~ya(D7}pIL3UwnE)27s>S05@y}E)x%q}Lfq|E-tKb2g3~4-x?O1W zlKhijQ*Ccifcv-AcB{GhM@RRPxnbiT&~+mU>AIQru+|kUD7rdP^nI8%Gi|#N_oU4V za!(iL4$*@TSiQX}g0^Gwj0K%8R0n-O~I-OvJMHlKNfl>U75WSF1Chwjua#Bkt>?C$w-tNpQ%pIe*$~$@!IM)?& zvie21rx@RSF3b023Wuci)9j)NBDUTx3Wy|47}nY7ZZmvE-7s7_|}yiN*Fo)r*% zJgjN+o^`zI+&?Chd)uoEUQw55$>%uhE->1jqk9{sM`t-6G6|#Sb8#PSw<*_;IDOUx z&iS^5-N(^gr2EV&$8qo00dGR{cjw8MXVx{jMz5Fv(eu8Gq+Z?}zJK2TQ^uBv<-*WM z;rCu(#c_jz*BE#xWGwCIzY?(O|A}Hpz1i>(T;;C|-L4c(l z^;a4AoUL3t|9z0Iy8d{;(jWDI0<7lW(sJ!Qe*+)Y&9$TdHe2idJ-fSh^xqBaG9Kc$ z4195=Ye&7>p1R)X9u*&~Zu_OPeAv*ug?R5U*fYp5V+up^P&u@TL{jwcgJC4VNfYtH5 zO|fJA$98o2I3EAmNgt1&0L%Dz{=9Ez_xQ*7Er#mxI|G({v>&pIZa)FAv}61&cXctw z-+VVces92%kMW-bEYClv-*b0ee>=dEkNPhf_>3yuzQ3*G3Bz=}$#55AyaxcQ{r#k3 z$9UWC;qvi%G#{=n@_L2ss~w@YZ#rO^FSf7cNVk2cHyg0DWBiVz^!Qx?OFLfA76X>& zd-VTUv19zR_SEB_2Uz+KfcbJ(HDjlh()tSh&jT#&m|t~`n;*uz6tEhv&1jd8{{K)g z=6}&%dj8h}miowFIL5`uUockZF99t1*q-CZ>FucptlAIRTelwrSlY2YqsQy*=>zRm z+w(5iB_HEWo1p8>04(j8|Mv!7HPN+W{|=s{_wOjc(jWEruhsQW0W9s9ZK7RM-4 zaqZaN_W-Nwh0hf``k!#9>yP=a2CN=`{{$@KVf$}Rx)}M>4tM!{z8t22gn|F2X1WN9P|2Sn^T-DB!EO_go$SVc^I9?%J`v<@5FSo;1(3qyDB~SM^sY7~6j@ z@a6dt@#za(jO{t|Y_~nAcP?P5hwU4)&}|>)vj(u*|DOVueDptUk&97(@Hx8vu7D*U z^&0@o^Bd~_4p`N1a<0oqy_JCF`5FC>IM4OR_(z`a@)19;_#?g*_%c4?-WTZjdjo%V zp>A(j>|)G!{6%`c2LM*}UsEve|K@K0BfhZS#n`?pE_U08`Kc4_|E`V z`|Dl6l8^q!Ep;*K_r65e9|BnNQGYpLbv)JqR`p9Rb@`~b011?Wlh%VA*~?|8CUv?guRS*gr2S{)lJY zq}z90q2qQdb^MBgv42i!(EDdDU^U)P2JU@}YsdUY-RkC#`Ah;V{joi*Zgbm%@eTp3 zj>j>8B_Hi4->%!w2Q2NV-{TG!BmWt|s@^M#9rHWsPCdT`fTbSh*X1rfzmou~dJ6zc zKF05Iw~H};17MYZk77rDpL=xvqkvWZbBZ13%h-GM`EoR1HGcE^bo`!yU%g+qU-*EF zG2fjY)Z-5atm@xu;Ljd%?bx49AJO}>17PWo{rMtb_58Ngqk6o4fF&RMXW?Tm#{7Cd zuJZ>1mVAu=5@30}p#Qsy9pnEkt;c^Bu-e~m0G4{_f6x;y#{ORmSbcu-mtseL-IFdK zan(~g9`v-1zfmx@@3Lp~e3k)L^Xd4ki;;gdU^V}n6g$T6`JB#w1hC3~*04`{Ubi0w zSc|{P#Tb7DU{&uf#g6^8(+hfkO$My$eWzf2e(?Ef_kJ74Yu6Xu@xu082w3`K{E;u| z@%IKS?HIq~%X<7FfTbPv)*1NzS9JRUYg~-+UIVPQ_dUgq^Kay9`usZ(uo|z)>pFf| z!RX)PP2GPNz^eae27cr%-G25zbbOwIQNQg!b^We@RsEF;#_>4h9d|sizwQI9^2fjH zV$}cgJzc-)`>q}RuU0VXkNv>a$MIeYSe_q{{|8_--XkCC_`pUTxBAG%I9>|@tK)Tv zV#j=&{9Dg=bHHl6`wV>A$GW}Or#h||coJjm%Tjpxzq^$OH$4R_hazt9)fL7p-vGsr zUcOPIM{axd(ArwxUdqb=Jzo~J?L~<`Z=*)HH)?b~?oNs4z-e>72t8k(-k7tl#YTbO^I)aV^HYV;hgu<@L2tW~wY?VMnI6W8~q zgtA_Xf5a8*Tvvb4@@v~?wMVPSWo=Vv&)fAk|9HH1J&6+C8PmNPrd()rt=Sxu+i8}t z_^#K>|K4#|T0>vSR4T-7l%AJfdG);VjZUfKmLj_4)@XZ0?|CiS1_tE}o`YD9U(}+v z9q!^Szu>Is(cu}#|A^>!WOqT)+pdL7X$bxrgnAE~*AZt3>X6?-i|ZX&Qt*Etg;DhA z7XAdK+)}W!p`-KI>6TDz=;)5cV~dv!9-aDKtf)6q^o`nfYa>NZDKnl@*r0R1Of=iG zDEje^(Jjx=ja@guxvs)D{DwHwVsyW)=soWjIJ>?WR~Z<0pNY32#vMZY^!)~k?iYRo z%sOa$d9Un2rkY~UItRm8@P8ZJ!EHmH>l_Sd!T&~dYiBfUkhWu>%(hY5zHy=_Agq-M z4LcjO?L4}AzS*GB@wWgsUfUU)yYZs4H8AYd@pr(Wk5^|v@sBu+-km~jjOg$_ym#~) zp+|~+w&6Wb1HUoa4m~fX{6>q;r`<-3z7t~`Df-5qb^MSs+P)#?JUpizCT1N^L4PUw z5x23UCz5)D6|@1`p0Jd7`tAmZF3&c4V2<*OUiskYs%<>fvZ~7A9kDVit6Em%7hQUX zmKdESeQCvxUdVfq*>CgsHpAOc4)4R3Ti!OPEq2@SUEt(Ki(dFUq3T>b~mPOV1kT+ml&_ za`+kn>r$FkU$hFkZ7P~P7v2ytniRJQTwTN{YI8)4l43STG$2v@7|sTW!HU~gMQs6% zK-mU}!FUY2m_xoHw2OM|i3a5G=fCrAa_liCb5QA>QfB(%X!7ytPK~VYy-5zJ4QV38&vQy zhtEwEvmHDJ40lmui0QNeVk9;|jA6w)IzSnZ4=eW5m6EcZpfQhp=}~;6?%Ih2wxf9O z8i2Oj4husSXWIaMl}S92*(=(PRWxN+xWe6yf3Jx=U&Sw-QEcMyxtqbo*vYiRDuy~~ z${0lq!DNi$wE~stoCrH`%ol6RjCs*xz$L1zqf7T=bFaw!_NR zH8MXFqj(`8m)yrAv;p4pO8tevP>Ea#)K_pq%yF*d5=V?jQO}7G1KzW>a!D&^E|1|9 zH-?y3Ip-G5Vf;koiSdZ$k~fPVA9;I6bHo_1!SpTOCSnvX04k3tt~^(V_o9j(WrY6^ zy~P$=^p&>Gj!j$$jevs$wj#&iv$x1G_&c3Nj={evT-+GW28fZ~05MVowyz-85p&#Sn8RM5Zo8{FlUQSMYS=sSPS@B6##3xlApHz&eeepG3ufff= zt~9pU?!=ds9iNmHpHxMBQswbUmGNt2uEXxhZyKLeeDC->@iownPs)l<3hwpeItJk) z7?%`$(K9Y7cyJw;RP)%RocQ|6j!(*pPYOR^6;ro&j!(+{j*I6RD3{81@nzLEHYq2* zZnv>B;u*nYd{X1%ld6tSYD9ce!{d`07Mqk~$0o&u zd{S0?QWfz@mB%Ml7N1l}d{T+nq#PET6wJ@Krl=L46s{d(+TcDSt}Vu&{K@=DsKRq= zUATl$aN=vA9iJ553C6Syj8Cdpd{UM1Np+7;s#|PQPJAP1$0udQCsh%jRC#<-Wh}N4 zY#N_blh~x3_!?-(CuPMa1&>4H8o~1Tq~Oh)xUzyr|8YqrV*5t66Q7hFpOh7!R7HGJ z*CMGF-^Cl)KeDfwADgNe7JW_UiBWT4ZRS}<5d3;i3 z@ky1$Cj}R-nC2C(tzweGwN*?~xVDN(3fERKN#WWmCMjH7#UzDmtC*y4Z559cUt7f^ zW%HEarSL0GGCryC@k#Nu70MOfz|4Dsg-h|ZRXkY@i>TapYpXb<%20&1LeE#q zC!q_KQof#0pcFg~&1?lq!Q;@(R-hC-4$W)@N~zxjEl>&`hi0|{rPR-|7bvBE61qSs zv9#iiEKEu+*<+BBOZFI~MJ*$b6Ymh6Q}DXX+XrIaOm zp;F3{y+A2-$zGt8x@0d;+1xOZEb#)Fpd?QtFbuFez=xUYL}& zWG_rgTe24>r7hVDlhT&#g-K~k_QIsJC3|5~+LFB>DSgRakd)26wU>Ms+euA@gM6j* zC3`_q`jWjMDSgRakd(e;FGxyXvKJy{EZGZ@GM4OxNEu7^LZpl(dm&QBlD!ZqW655K zl(A$lM9NsQ7a(OW*$a>|m+S>dnM?Kpq|7CI0aE6Yy#Oh5$zFhzxnwUu%3QMNFO{`q z&tEEQ$)3Md){;GcsjMY?{!&>>_WY%?mhAaUWi8qBm&#hQ=Pl)M&#aexRx;@<6<(2# zR4P8H#qmikj8AG_d{T4clbREol;gxEWydFFc_)?6CsGE+C)F!Hsml1Iy2mHgEjB5~ zicQLnPs)llOx<#W!;bIG2Ul=qT7FDdUOdtOrB zOZL2^yqD~GNqH~X^OEvjvgak`y=2czivG+dcQs#foT3hk?ZC0kR1}b)6Imi##ayW3(0WxUHK`IrWl+WYPOn@A+T9|S2-pN5~p0`4#HV3J>87J?Z z9Hi!WD`aY;OF2%)$$KZdlpUXx6`xc^d{X7{NtLmXEqb>HUj!jcbgAHrU@lT27r|Vl zLN0>2NQGPkbCC+U2<9RcauLi$D&!)Vi&V%(Fc+x=kb}3VQ#AWyd|A3trLsT9m$y{* z$N2J=%KjK%-cs2g0TR*_P0EQcD?2_ZD?X`;_@v6?lZy1$ z?V^ofNqku)Vv};@EDS6oHP8-}kj6+-Ny!c@BS}R$TSZ*fRtIJyjghj7a<+X& zu#A*d&{K9-J&KfLyZnH?C{lKOQdWFY74b<$=>+J*C^X+sFo3_ZMUnFT1cRajyHTWk zKf#c*loKUfw5;s-q^$U){6E2vb6@#?f+1(AsDG+9LO+y5;9!0cXyJE))X;FL2zP=} zr6Sx3MwN2}YHQa3>g5D#D#$M5!ouf)S-`7TavMC}f1! z&;w^+1QDWyN`(?Kp+cDvFM=Q#Dpit+8nzQE73EHlf`my$x)Y2h73oeenpC7a!Dv#E z?gXPrMY zL<^M4;UX9&mBU3aOe%+qV3<@67r`*894>-kQaM}%!=!S!2!=`Ja1jiV%H<*$B4vX; zhb?HfCv(sNYLHYe7r_vz>iDwC%;2q#P^5h`i$?WydFF#V6(aW%+>S`ZTaSzO2duqWhVAvI_ms zv4@_IROp9}BTI#U=s2=e_=k=oOND>vII>juhmIplg@5QcvQ+qojw4Hjf9N=}RLD1P zJanMSbBa3N+>lyNsdR{wx7kxF<;@ML^^{s1;^b}ilv?P`4XO2%nit~aZT6I!>&*?R z^^}?u;^b}il5!kxZb+?{lpUXx6%yXZ?3Gm>Yb#XulIrCXHl*51sxrjK$LuAQ$Jz?j zy`;MNgbk_okaDaLA0M-alpUXx6`xc-Yb$KCM*}^okQusp_?3k^c@sRO@>yG%4==qEtS{W%3CV0wUxJ2UTZ5)DFt3avTK5rE$mD}g70;O{Myj7r7ZlAXbl*;Y%R)JEvecmca z$}x?(VRee8b8|J>s#MA}=7v?N{Fm%JrYf~Cw=7JyDwY3|Ju9pHm+V zmnvv&rArmGw$h~vT3hK-1+A@gse;y4x>U}ew?cPybEjxRt%=nA4*96JiQKx8p-DG7F6C3@W`Zx9A`i9ZBLC*?EY4^?f+98-Pkx)%lcPM!Td+-d zMN6vA{1Sg_f!m0ZSd3K&EPubXt%%naHZ(y~`PNRi#hA1Fb=r=i zzN6SS6?jw8;7#wNXC<9Pz5IdP%>?cu%FRW&g($ZaoM}{E$VxVc)e>5=X<@EFPS(RY`uS3 z!*L(M>mzu5mX2ONapfeduc+@Q%KoClvT16^Qmf&`kQ||zJ%GL-sYpm*f4>IQ8%$+ z?P%nNi~5nWoX}z91ekoI1Rljlld)=ntA&4cJ&l8CCZmI%u^Mpz)rhz?*y*s|BF_WB*gjM@WQYWU` zEP1+{MB(7{x1Ntct7o7pzTH#PD9BKuzRv4h<3@p(!S?Es| ze)|c0fG7_^#_YmnAzb1A6`#8Q$(Iq#ENOkdDMU@=g|y@@>yhJ ziBo*a)13#6Is=%vOM|Z zlQ9)2PR6QJMEz;9JdL(9#PM^Ms6R{KI)UqK+Ho#9kMGP87n(T(=!lw2hZCDCt|#-w z_=_~ze9^!2FQOB{0-?L08|^F-c#-IzMdE;3G`~L|kwxcFLgxtHIYRH8Wxe1ZW9NzE z;rva{i@ZTl+_uh$QxWA!0-+4&z9}@P5VZ*9NV6Ncy=uu;+Y#7A(kB^&O-w*cEB*UJ0 zni6Nsy(#9w+q;p& zKZM`=vaGLcin||({6A>uj>{I-C@##O2;Qdxe+Cy2tb#7&+t=cF`dTbBzZd!ZOlJ0r zSYZApc)tt#AENy8hMt`Hm*D?JmnXU0hSDZ`HzNFXGEbNNMVBkKUigW{J`>e!y*Tl$ z7life$pR&>!EQ;gIqU1-)A*Qr>vYRGbDbt_hFJjAP4pjC&78nbDj7TCH1$Lav59_R zm12{4u{CUNS@U+4aseXmEAU{&P2dy!r0EM4y~X1Y{SI8CN8bqzExXRE%OonHACxa>NmT2bpM*#`ZorSVEYX2 zk@<&|+L4EM{=T10i!;P>>qr6;Qkih=qM~+w!|>Yc8phYI=rgG!oEv7;PN=TGzoEK* z2^_|7>Nuyqa@D+w-rL=r;Z;z~nN5aSbDV_yR!2h%t*J7f_C0mQ&eUzJ z=a}y=t-SoshBxXb^{8pRN7=x4$)lz|1xrjA&WX)?*UYV~X$SW;cuLUwnIpbZd2Gkq z>mRRNbzbfAOK#{>b5!T<$;69`A);=x%{le7m zt4d$_VqIn3#M+x*sFdqu@aO9Vk9Ou%CG+yj$M!SG`h}%~@RSAJ{=fR492c*#ElQp2 zKMU0*@GI@Vj2vXTehzumlcW*ne+9(G{;xau3Sk=L3r&` zSNo=7hF#8RXgFZyjYI;*`Q%^Rf(z*nHFy+3~@nx{`G69}jk=bE$zG?>R6Md^IF}AugW2-ASwz>*qtFw%)&Nj9> zN8i{+%Hv2a4L0WjyRH__$;#x2Ix+t1B75M!JtljC%K!Gq|JDAe8}USWvQD(V%Bh4? zFZ`>s=2d9_>dL#>+P}KtPKEZb4&HCj{=sQIq5Z3?D1o<`lz(+)<=wP@brjuwtuxXn zt25H*R%fKa>WnnH)fs7&*Qq(+J~U2Cqa0FqbHM#Ny*K7n)akv^&4$$VOzQOB=vG#z z_eOaF8mDCfjnmVB)b%v7$K@zKD9Ps+ciUq@=MvVk1v}@JP56zN98)>5eGc*e)E$sn z4~V6Jx>(5AXlElcmNy(#Tf6*5SjF_k8@hkFcXf662uoEW?usc1AzgJ&A>$VsiL ztl3IoHmfnSvPhdyP3VnUSVrkB2kj)l-MfKHDM*TPE;m(CHf_Hh1+uHlFoaOZw-1>((SmfH2xFHiaYs1Nqp?WA2#-Ts@MKNnB2E5zH!cZhO))gLRrdu{CDICfcBz|wO-epBUt9GOzWwmxm%{Jcsw+V4^2@&yaek=!Yi{3Zdv;tW?99gZ z8>de%v#A~BqO1^Q2T^twr6tNrQ4SR4P*Lt~|MJ9?F7GWLLpZ&!sNbK;#u-#PC)wZZ zjQKAhY+p#_!l$TY-}2I#x9uV!3Qdmt%)Bwq4Jkj&8LF+8G-t%EmqD zaQjAB4xRti6kblfs}=h6~{)h(~& zdwm6-@D|y72yER#xSPNo{~|2k4yikhu>8EwJ5LhcTJU!__!mqhyL_%b`!>Q-{~uL^ zHx>S`?M(U6rvn&!=C8}SMZE3Fe!QCaT?PLnBmW&YC;$G!-ft24i?_Adz=7m1-X3AA ztB5~X@Xz>x?7ajY@HS!DKP?Qr?e%201pjcO|E_z0?A?WZ(LoeX4%pM(2yZLwH@-yt zN`Y@M^4V`D**6#ViH6=dBcHz;`8;LhbN5J!KSb#LcqHMW0-v{>@OXinT}rrG;Msc< zmh-l|k>9`0AbXYIw=u@|yU}EqpIfrJ6PEq)r!hX;9z}MU-={|YHyQbyz7z4~eA@PW z!XrdJ_Z#zf?N(%$^JmxN^!^_4BVjo|CR|ATkwR~qJIOBR_s8?dK1|qq%-8XB1Ak(S z&!+E^o}7REjQQUA3Yy>e9u#i-T}=F~2(m5{D4raj5C21a@%AtK@IJE3&+{Dn75R(P zBdffOusq&A*n+V5I0ajJIr-O!cx#R0V}MO|d3^0+v~Shcq{rVw1&wPv5Wk<$`|E77 zZz=E|rxTXvpJR;i=&=|1%lS0x3gXNB6GBH6PmZ2J_RU4bfDZ}F>p-h-3Cr>Bbs6c) z_I4dac%bk<@Js4nxl%giHNtI#eVKvRH6i_W!al4WVcEZ1T&|Dr$)Ay3j?X^NlD)O? zKk-+>@_gB$k+2-^EiLkw{k_1*r_YPJ-tYGkZYlKJE~WPFDR9q&NpCZOZ&^rKj@Ki% z6PCwAtzkd+EV9e-{PrTka{f+!g|IvyZhaMDIi43RCv1uMk4z`rMc@zqPWj98|NEts zzqp*U2iA~Xj?d{25aw@og2oI3k2Csf+zLJZ9WRl;9FNN!!c9d!dmGoIc{h>0g|N4; zCtNP@5+mMgv&b%%Eo}A|6kpDVk`u_@MED->K8gyr~;?L=4}539e|<4=E? zuuSOjurTzpf>`gRuX*gm7<0<~GBK|Ks zkzJ1Gm&W;Tps_wHOOgLr;eVB*x99Zngyr?+vwKKiu6K4HM_8`^t~ahf^B0g^o-aQB zhOq4ahm7%gqwk1Gcn-g$yW*6<>xIPFU6e>vY1AM4}s@+`eSj=6y1 z$@#XOalXGTMRp6tVJmGy{_^~><+X%m|Frm>_;NgVIF;z`anSe{RxHSi4M{Jg3a@#XdE zXGU1gx2oGI-el31!D8~N7?|CWnse#+}l{T9TR=id{I>&a+i zzWimxn_#T(2F@bA%|*P|kJs@72EO0m?`Ev;zc=omwwOchv4#Gn?Fq~Eq>jJJ0)iYL!clTtLE^7_24k@#|b`}|zO^87pZ9pcOD^@u5?C+F|5 zrnBC~^X;%r6YH?-x*gf&_3<8~|9&*iH`f~1)26Rde0e>bW}NR%HIDz+JL>&8J3&|; zzvB$Op%?4@^PSQEkL*JJ^8DJ`nD5PwAp6duze{Ei-bLVR%L&W=e$F@^_cr>c&6kvq zT(6b?b`w{U&vVwaT%qBojrNWFg#6|By=V0Il?MM$WBu^*GV-@X{$EZb+(qDWzAr#mOg{*@;Rxq^}}xIIkSe>ys_XZXZVNd}IFP^U#p`knGamI)(gq{pRCW(cbvnI4qd- zH|@!^Zg*a}i1UZ+Lr;DiXHDT)>a$nLKDEB$P&7CPP2l$Aul2l4-$3P8Z&?;r*u%-* z_zTrruaSS3pWfrA&g4Tj(wNjwzd`oB4*2x}thYDa4+|#!(>IY$%Q?$m#rouUvM1M5 zy}gpkiw-US2<@qF4#C3Jf1C6_n7CbAtWWR8o531?C%^QMOR$J$9{>QhRbT#^?U!fJDw5Q%9d#eA7Gtr(JyC)V*+S3nF9)ElL z%OkPgdSwh28N2;3+3$aM4}Pgi3VUN2<(2$5>2EV+n_1|Wdh;wSn6#&b{j0H)c>ZbA zzMAx}IPprp6mo<;*@W~PKPLUXH`&idT{(WzZhu1dr<>exmzO;y>~r7xm;|AS7iz3Jue2>Vf8FMq|$-YD#) zqt^1Jg{g0^CH=DwJm!2a|CF#dt2&i;wCSIIk^29JEjPQ)%b$Hl`iWD%YvyIQUn2i4 z&wGGhYEAv5@bCB9pg+C*)51Rch|&C3&GffEr}&@#>-BxS{2gKM+IjRjUiL;|AGv%U zUkaM~_7|jo>H%Z`7t&daLqV zyzFUV-}ZxZO1$jWSET>tg;Q_#vOB{5`lqk|;bm_W_QA6&_=3o6pZzuI4{#P->*b#k z_NOP+KI&y>-w6K~DmVACCxyNF=Z|{N4`E+ZxB43|f9qS)UvSZwW4-K-uwQcSjX!$X z8-;z@ti|tn+3oL0e~;n&z3OF83Hw`j%=GF@5qJFS{e`XPj`N7C+gP&adnz@^63B?b`WA+LOXQYUL69QK+0B(w-Lf z1CLm(%^zvEekT359v;H4FQ&gE>^;g(o1x|}{Tqe-miJ!b7dF%1UPt1AiXkpCagEFS4)PYQeg2fJ&>m&`9M>{su3?Lseq>sQhrGHc>mFS{e`vpO7l zw3oe6*gv@GE51O^YX5JfKl0P7hIsj>g#D4Hk9^9@&VDEVmY+50>t#<0`{H-+(5`Qp z_6z%)S6%V5m%sG~>9fAI4|&-gVSoHzW3~A&^&5r#keN^4ko1Kq=kK#)~E1=p*cR*deT4R)z>cY@^^%N z`qZ6X^|Ch#`<0`{f8k}f8C`!r9K6kCUiOr*-}v_)+WAlRFH4aBkxhO+QT1;W?XybA z{=xANKksFCgnjvStMu!m@NX3MChcE6-OJxDCH<)bc1~*cW^{f^mXZDLd+RUpvZsZ; z|LZg7s`jL~ze(Oe>+2gHI+d?a(rx)^hDp2qGudx{VeK{O&-#=E>?Mc)co+Jm*Y1Ud8-Ec zefh7SqTRNHznCBP-{}7K@vko*fOcyKVQ)u%P8*89`?%wd;r6wzFWEG9puCbj$bRN&r&?%F_884+(w-Lfp?CZ?3k_+*ZuKPp7rXqx$It3X{_^<= zv#I|Nd1lNg^tT>A7mG~$9N}NpZP^5@PxYbmgB-s`VW0Ws>o1_)zUUAvGXC~96udr;o5&9`~G{a2~YJi+J^!AMJS; z?pWI%#IfujXKNbA>eQP&@#Ovca=X-bg#Vq^dHlj)-+8cRx2ov;v+W~8&qRa0Qh$EK z7Eu4a*L!U%v^zKI_D11nEGenh_^bTe=?=p z*$Qg^$#sXFf_7(_ZcpD&{#%{C!>Qc=I^E8;q4*!Y`1h^R-e|;6+0_1%cfPtUw;S=3 zUy}b}>$>v$>vV6uf7w@Lzj~8*d!WDFN4KX%{?9y^YT){%`tfZ|rTn)j8$1c^>`?vu z(|82gpa1+IegR7Vre9xKe~Lfo$D8T=_^N(=N-rn-;3v<%9_5`i!Y60|5v@v-wO4uE`P%!^ZeBQf&5P$GkFL%d@B5f zz9aJQKmWqp(QaQ#{_^@`ok{a=$Om^lg?8t1p)b#GX__C${&Q6)w5N{L?e-3rVl`_% zXVGjd8;{cSbAF`!X8rs1&C#A*G#!h~`6Kx`_5acT{*ce#^f8A1lN5i4O}{)J{hZ@; zyEB0FudM1w=NH32CH$`%K8T+*!Q z-WfvWr?-!|5$)-Lycw?jSF%su{*Keo-q=UCr)ntviWmO%7TWD0y50Vg#`j+*%=&}- z4-$6Ke(N{V|N6u0`1sl_4f_i;K9{sxLdTb3x38xDJN522TB1IClCHlA4(LUFUkHCt z0&6GqnDWPyFFg3eylXn$bn9=QJ|a12!+rSS&eHPcEm~&k4eVDh{rF@-F|nCg*2_}O z7we{-GV`$GrdmS=_dop96Q)^5n;7D60$*Or{4ev7Wl1SZG;LPaq(#f}=501<)!M{h zE&+2>Ft-468xyk@9Xf8hRj)pM`}N;;z`#L+hwM6P&+(HFn0oASGiJ`3ef$Y{vD~w| zX7pZT#*W*2{Dg`7Osbu{?|%CqaNt1)A985&u*0WJoi_c5za4p0Ns0dR1cXXT;QhAD zRua}ZypwwH*Ps`W;oWHVrRszIBXAIn<^U1tmwWosJWcOF<;dImHbHah0Df4o^uAOw z$y-MAa@j$v_di{1)Gt_gIkWO-`p(l8^uBxs?o_#jit@%_sQct|! z_t>(3-o<%y1r>I}8h!8bGDw**6n!^Go(ALwkBK*{y1wmlnM4 zm$shId54kRp04xkTS)KsvlsI9U8<$ftJHaE!TYcoT_;i#$e!L;=h?TCUjJG1F2uO( z7_!^5bsl?>`tP7q&*A4?yH}Fa?fF#7_NIm2(4+e-Y5S9{4G_aKk`ME0a8CC|Q{^g2xIb|uoBgD74)smDzV-o@Ju<~L^PlgMtJ ztn=(UNblJX>i7l35%C&-qxdpzTJTE0`?U_^HXctpsS^#oJ4x@ei(ZKAZZtqQc>G4!L z;(o&x?@L#7{(-N{QlCslIEtr#8`f_OqmS@a3wzP}5tRKzO#vzwrT5R?U*Dl7= z`JSK7S?UKWCC?VmbKAbZ^IFdPMcCI-=?J~lcBJ?7fz6LaUgJ#%V8Pf5DkU#1p8wu` z?38P`{Zg`9qLjSk1Ee>#;}p+lzR4LiaYD@8UIF} z{hZJfWo8{Ko};Huc;R`jw*?&+j(9)C=|ej9(bUgJo_+5E3U4u&pUV0`2K4cy{~UgsYW`prc)``5zblsu^vnGs(b_O_TYW7fG^yOQmi)`&!)JC z4(Y+qlXhRSr$j0Bl7AAf{{74NeM+OSr~B!8_Cn(Io^S?#?$J1q?CC)|uTki|Hfu#w z%*)zV@I;x3`xoim*XB_EfVNTQzn!5ccqdl=lHlzeKz2*SmwG9Y-x>dzXCsgGCtjl{ z<-B4KQa`sVsi;Gm^Lq^zEcpkOl4p;me%|b+=bu1(qp+v{Bwl7d8_yH}AA4^CXk*p= zk3Z+mlWU%bE)pU06yZ>$5~WgUa5IHWAxgh+*rFCh8bcGW?*pG&tEV8-G|yg(KFG=??nHk zF>=7^2Swj~7|x=bK5c?f>jb-3{P6>3WbBvgNGS&d(+yQWP4(j<1~p*)z_+TW=vVvn zF5=f;PcZiE>6)ycK1i+yd5;NZC~f-bs{i}7t=tEfj3J^IctY(0f~Ft%MEq~g-P!G5 z{EJjy(f?++zQ4ZcFRJ*Y+i>_R+|6Nm{z`(WN~ez!z4Qixrv@x=Cx(n+9h`o~>w@VE z6#J-tBf-`8uifVSR_`YIl?79)3Z|>Rzp?0VDZg|vD+W|Ay^`u1ZT?mNWXtKBSU*+u z(khC+U+Iv4zxYpE`R+K@_iBrtCyzIJDYe4mNmu=Uf==aYUwu|*r&Z*v6!3;$kpXt|%ezo0u4zhlrvAb>M zr7NcSmA3x6PV_%b_q*#R8IO!&GcWBGLGM+;kpJsNzi`uieVyW_>l~ygW+>Wt@ZbM} zllQ7y*PUq7dfw&eKp(-B-h!r|@tElM_`Z}|xYEapJZ*xYf4u7J{7S!B;z^hmRfrv@ zKI$%;co~li29)-{Bzk^*Ug^zt_m6e@@A(-rpG#5N+Usv4b}!uaOI_AW|5f%2fir>` zO8du)Ub=oRnfRfvxbxdsKF_6GB^XfJ|D5Q1k4t-B4oJl*uZrK4`GV<6TRf?+$^Kwe zrLno#f68+8ze3QjwB^&=E%mHxus4ll7TZ;#L+{eb8{v$%UT7sr({j#KIjdJS}ZYybM65dCkWU#P+Q z{(2%0D5j`=$iM3E`Snfr`O!b>X*Tl$iYcRoHhuq4@qc1&`H`%bHbUeXim6Y9>!+)J zR&N167+|OeuJ6kBOBy`WPgniw5hGlGWxGCD{zr)aP4_?j8v744(e*hp#{W38G*4*p!y+H+4)` z1~1LwoH6ryo%Co)+5TN%>mz3w~4lGUwmqifJQ7-#NL6e?m7SFY=G{8Iqp>-2d`Q z%Ra#FgQdsmJ|SB72Wpq`qO_;tUB!2DxT$9)zX8QG#dJfp!~19%`NglN_tU(xLZ@9C zUSHrPsqe08?cM$>^)itM%By|_!Hi;p{#T`aDeDE#uR7h!#i{FjMkmqp+6$&Anw`Ir ztj|x){OQT8c4;lue+$7>#dNJNP48cI>ebcl3o@$6zQ{ zEBDOwPh5S!xMA-36;l+`4K<%>+r|E?+oSWdUCL%TPo{jTsLwTdU$tYgmp)tTOO(%t zgXVts5%cZ(Pud|pUnyoNT3%9C%JspTRd0&PYUh3JE?;=*UkPR?T3%B0dA3WM^mvBt zGW2=6z&y>1Vqm`JMW4^gXd(68U1d^aSbh5YQyJYPPZs};F#%Td?o#ZgI8br8;snJR zii;F~NfP_0T!Q%&%P3Y;Y^2yyv7KUx0X?{SZ{EX#3kM6nIb5*SD8c1p1Y1uOtUp;W z&m^h0lwxJY`id_0t`v4HLU6TE_9;uG{=p4bxOFDunLAv20;2`fjebsO?^!{!_m+x% z^{pmU)>{L@*<-px0jZX=(YC|C8EZ zDfJ&%Ri%cr|DlVk-+xdr<6FVhql$-BuFnmo&6E6n_f23h8>T(3pC^VWDxIQq#$esw zsl9)`*vAY#?mjpKo)CG4Vwz&QVIbT-L+ytSm=VMEXFMu$PwVj>6FODVukz?>&$7Cg zU$Km0HN{4XEfw1-c2&H{ZQKRaUG>@iW8bHd-s%>o<8LZx*F94j%yoRb-f7oAbGq(n z6^6c#W3c#5eONF}uZyOtf4d%P*GF@@E^7Ym`#dsMY23>M?Ye22`nT()cKtM`>&E8a zz7Hf2)cB7HW*k;j|LJ-?HFSOTFJ4!bdhAyyk2ltO{qlX>YxH}$XEl}|HF%Oe2dI@wNprA4e)4QoMJe@P{jYs`$Vg!Y`?KwPGMj=8yjhS;uFz zcGKAN-o4FLY3o_aGNCh;2>QPiOy4dT@-tBU1Tr2=U&&>zqKn}Y5%Wkuju_Iv|lfu1m2eQvi=R7@;g62bY$@Sik{I&grA}q zI4pF=gVJ9)K0h)~KL_aZBpFJl&KJJ<$?3U~w0`pWBBQII*IzK8Xnt~ft|V=g+7DA4 zt$q~EPma%>yeM`l`W#A%(&>tUt~#DKOMeaORlY3eH{;!w44$`KFz}&Zy7E(%w*I`X zynIe?t$3T_U5XtPyDIil9HiJ^Q7Zl8zxgi{|3wuqQ7oreNwKDxk7?CLQIK^beVu}S6v-7_sUhLmh zT%ou|af9M#iaQj)Rs2dZJO3?8ivL!Mw<@+%?4a0Hv6tc?#r}%f`Tr=kxf6Y&_^IMH z#odbg6u(#eS@Ec1cK+MG?suZQ6+0+)RqUnMUvZG)(~3hCv-AJ(=q66|xZ*IyQHo;~ zCn>(DI74x+Vs`$&RQcD62NVw}o=`lkcuq0?8Hp=WF+2aU#U=l_6!R+zOMM5;>U{Uzg8Xbf4$;;iUSp&ReV+PUByoo4=A2hME{+Z^mMGgibEC0Do$5? zUGY7|j}^Bo?pH+rjlK*xR!hZpid_{4C=OE`uQ)?-k>YYi^uIHCpkp0UJg-O`DX!5j`6e&h@V4)1&cl* zSV#Fro8DOE9|JT!^grr;@prI`U^AsBWrKIA-bh8XL;qLy6u+kwJNFWLM-M@xO>Y+H zqaFI6+F$(Krg&7bKhUN(L-}g~%?|zFFi8B*e?&0)QNe9Mn_hd>9}8%9=zm}dIX|pc zJgqpcr0_2S4A1c%N46B)>Ukz*i5md;w_5p6gwzd z+#6mL|Avhw3%x?I*%YDIDYlp@^e2kfPZN5JVk`BR@`LQpGxkn)Rh=05##;U(eL#Ch zr~Q1d!_>Y)XDFR=O85cA45RN6y^!A?;PPZU6OLhn_aZG6RF6jM~5U(u?VohbJ6lLVLL7Ce+kaC*F8xdMWn^9nws_`71Ce8T@+ z(fp6TP56eR?i9M;?SfsEHZ*zQE|EvyE11?^aMpc-=6~#Rxu4v5g<$P;!MK%zI~5aG z3EfEXWyP-)tF0FKI7RdSORFC4&jWV|CbkwFuej(|p*Jf=-xjWKcFmMOM6qC7(YtMi z%-=4G0~McEoTNBYak1hm#Vv|^6%Q+(QC#<`_}{7cgW?&*xS1j^qq`MZkzzBs*x9n0^U z(`(qd^W@E!pWeJKT%>5R;w4I!x+JA^nX;FbyR3YL%QIiau2s8E-FjEnZ*Wz^MveVV znqGZPv*v&0RcvhH|2WNi$@-Jz{&>9B)@GE@vDws)`q`*u%T8$~*Z(peo$PeBJb(Kc z{v%LXuGgeqA(&P{v65mr!3?{uq!=*%r6NyP+OA_|7fAHCcQ{eeZv-1F{g7h){ld?8 zK=7dAmV-ji`cBa7bHYcy7k!Io+c}vBrxg1Jg|2;GaFn9)4VMG|N1#owfci7KsnS;e z{~E^quhkS*k$p}IWBxA?5n4yJBZJ*vm7?UnV@~*n>eo3YcIA!>etJSM`ZvMOXTovG zd7%x10s4LnFW?0OREByt1Zip!FF-s(Dp#~g3s$T+E0~_19&9{(Q}CIkTZ7yC>AHN#i@!j6f+|V|Lc){65n9OVTz*_$16@zoT2!d;v&Vj6_+cn zQQWBbx#BLxeTqLQhDVi2-Bw@XyHl})VmHM;iUSoNR~)YRjN$~vsfsfcUsGJ9__pG5 z#WjkV5rzNt%SW=GJEs`CTIjrr#TCmbR#m)Gv6*6P#XA){EB01=L~*#{bBa?Gy&bY2 zNZ%m$t5y!V!98%8vDZD$;H72=rhO}z{tgtGtO|N>jm9<)G~X6c4)s>f^y?$+#r6kL+OMp|9&CQDcJjS_CB3GFJaF~ zWN3W$oLjc2znAg{x$;w5N_^R2mdMu_cf}_ZUr=12_>tn5ipLbAD~f$_#p;UJD&C{mPjRH;%ZkesHz1P#R zP@JLoy5bJ?ze?#u#iPpKsq{XOWBj#u$n&1jI|Vy`C3q*$$G!}go8I5WyLXA-<%;=s zU$~xez+bRO^gept@0wI@lHhQ~1B%UF5dJL1=*dENR$QZ4Zi?C~9#CvHRrvE1b59ex zyJE=~g}zvPOYLXg-rnQmZN)DYkK85v-;}=U4xx>2*g6}2Z{@$K_?cprJH<~k#es_E z4{;L6-vWBO(ykE~_-Djx-5ob_p5T*;k@J;SJfhg^4dMS)Z1cM4?^L{N!Nu8QJwK>@ zkA>prnBoPR_Fuuu@;!wYjJMObEgXN{U&Jr=i~e85#Dk)5I9_SPYrhlutmA^Ml)mbF zp)3C=Sog4C#Up~pjtM@Yb{A|MF?Vgd&WXBj|7$pFhv@xPjQ&#e4Oc5|cxac%PbyCT zR_L|61&!|hbvWI3uh1QpZ*pwsR~sb{IpMqiqF%%%@o!jN>CTE{6}xX1J;SfF;m4@n z6^gfk9k%cOd*ps{PFVTwe@!o@z1U@kWwrk7Y&=x6`pXG$5+_jZWj< z8iGClB5qW@zlt?$ivO01ofStZ_N*`Rul?aTOXa6)3;#epLDN6oNa%#d;da*Sb@SS~ zKa=MR-u=2@vo{2%18w~5@W4gtPh24NOjA6dX#Vpq6nPQFXB17I6P{6hYcFCD7~xk} z`C@Fi2A+?Y&Z^<)EDWJD8A^v3MjInUDe~4l67{h3bBSb4BlNLr6+A*@y%m|~25l)K_tNTKT8vlRKN0kdD z;r|Zr54W#!!+=Q!2Hlzt)8Kp6SsCu;bry!)&CX=#?d=f5?spp_bOT%&nRmp6k>wV- zV`RN&&Wx~|=tPI#RSyQ?Hhb_7-_ND*Z>3)=*Zo58b={-%h`DZbq+cZZ^?jW`p#J`H zh<~xP`Td)A*$sKS9&6WUL+_tGs`=3Cw00dg<0;9{#bWBiavd7cuG<>_V(EXEU3U4g z>%n$?*wgptQr?&R*mYui&(0eu`MFrM_q6_ic0F0&@8kvfdwv&hK;ItWP`kNKi(=~N}P@Wgu7AbUgX!u+c{ycj`dNTl58W z{$XMUeBPok*1WEAoxV=@zlP1biQZqu?EL0rf1B3xF<^H7j;o$w>|bn8cK&kWTN0NY ze#rgVDSp78Vw0nPO)n=uCZByw{Eavv*zG65!lwi`$xN4)cQk)Ko? z93}19rg(X@(1R7XDPA5U{Mm|U6mN?a{%eZo6mN@DzT!c}a+*KO>p%GSGr$)YsttT2 zX?*{x0WAC0-I}f<8*TAZs`*nDzTaQjvJNE2k ze<$?p-6>ne_zImm59r+E^7sU27k`BVvgq8f^TVBuN&fqE>(RMy!}~iLtAF2aJvoGi z{rf&-dRJfDx_z@&O`5iBc1^=-s(5YdCT*^6(eS>Wo$AyIv0C5KaA3Dyoq7-K7h*NJ z@tQid8V;zgi~$|{HKfL6QdRnP9?-2{x8A)P)~L~?TD|J^I(Dg7y;_Z09qQDqTf0W5 zdev)ptX;iJ=ejlP)~Q~jL#>*fEmHDSrGK}cog3DuR-@(>)#}mzw^plFzk03uHR`m> z;-A{wtxLDgof>wzuSdVm3BT32y84JBDSf@6P4hG{IhkV?{qs^*@>#UjJE;Zv=V9EYY|4-`*#5ZuK|qn9zBYUe-?PFRHX%sJ8iF`)&KY zlB{~>&-~<7em=$giUkx4Di%_-{x71m)n82M;)>RAD_)^kMX{=4HO1f>eSXZ&0;+2Z^6&omC zrPxr>`p4c&v31VIi}go}>iZP~irzmC^jAwMA^#7Oi0QX^X8maM&CVY-@2r1q9kThI zsQqf|tF1Ht%u`9s|EqaA=0RC!tzYZF^^3>*hRfFu5!(8_9$a55@kF@%o`;3D@v^s1 zxWDb7-)TU&{yvazhIk+EA^J8xzkqo5g8q!5qHpo9g7!9t`qw`a9?xwc9}4ju0Dm__ zd|jaaH1M|>;@=MO?}GeQcs#s4*F%3Tfp~0r{RjU$Gr;$>|4!tStBz_q?wYy}etI^2 z*{t2men9%JRc)_4k@v)%Glw=FzwO=<^O2rBFLtNzt|#*?A71^^j|L~*hIIdXmiImX z=H9@Zm_5__pP051>6P84?H_UN@?&dXTA6#}D@m6k-MjJ+SIisM|N1?zExLQx)4vTs zy3NgvCih%heeTEQBNwe3a_0)9e@e_)d+oS6+ivc-KIZ<*FE4=f@PxO^*DGDT%I`fZ z-N#_Y=AgsPf6GCx%zIkRY7kGiE=4s20=*$0biA-yE2#Ff|2+u5r1`WNr|sdtsG zNFN>gT>su3XFXit;g5&KMXY-U=`+FQV-NMXY3Auye_MX?;Rn|u{lJG()wtaZN!r}CW z65;d{;6K-Bk=wre$B(5x+g~iIFLK+@4`?H_?dMA-2yN}3G)`#SzxVGewC(dN>=gf& zpEC_aZvF$C!|OkEQfS-no(>9a`D|5F>@9!iZx-6(`!+&o({BKuD{ty7@?yFuyi{Ij z`#dwUOgMeEh0vD&_Hh2G0_T@rARi3$G@$Q-&wZ}~o$G07zwH+n!};s^t|GTB?-+<@ zD$sRcKhh5T2O+-RAm8(V)MxvL{NseSeeAmsPde21KF9~a=jMuV{+|u!^E+Vw&t+;Qkk@QdIOB96QF|M~s?O^1TPeU(PJ?+tkBoxQ=d z>Fvp4NU&75t?v5(jy&HfxaZek@TvlP$j%FnCcmRcd%?sJ?*w0a?X{rS$#eL?+aHo_ zbg=3Jw*|dtg29b7rcel@gM%jh5Pa@~=Ypdfwg|RvUDcJ(HhaO(y@|mI1<2(JFW9YH zH&=pVO9ji6SsbLVBnXxnT_(6^57qhWukO1DQfBQ6Rt+w2-*a%B;$PY=7`*%LP40UT z_*)J5yA949JQzI1Usmw@W5G@2R+;<~TlY{d%bqQ{wc7J}`d%@j(CIlZ`a#iqX*GGd> z&v?O&pS1`MFSst)r)bgOnc%75Heu>dc>mw~ww8 zJbEhVzT@E##k;9p_u$w-A6NK08ir7yONTah-}$g}#ZLEq4qGz(?t35j`yNiw_dV3u zG&MM-W|v&>dEwg$;q&oLxQ_H5%%?{_5q(?#yT!|TXY2d8MIyJ)qiqX`+|ECj!1*!v zl5qWEK)(;`#mg&2-_Eb|fgbge$nEp-!>cxBXD_wL)9_pIacb?N@t(eEzc{xBcOkSA@3woPAelYhT~T zgtq=FJ0{$Iz(S#|z869N^%){J|7AxAZSB1p`s*av`E#9|* z_R-C-NH5BZ_F}wPFV2hi61+q&$;;&>d%3+lUS2Psm)|Sk74!;ug}owPQLmU++$-Ug z^h$Y`cqv|KuZ&lg?zWcmF7wKJ6}-#6ie4qJvUi17#jEO7^QwC_=$>dTueMjmtLxSC zuJr1A4ZN$ohF&ADvFG=icul>ly=%N?UUTnSuZ4G=cfEIm*V4PuYvr}}Zt`yS+IY8k zw|cjEZN1yQJG?u+cHUjy-QGRky^<%cq0iD!ctgD>yze?`1E|d&QgKz3R>M zW_h!{Io@3FHE*6b-+SF#;4Sptpl31P^cH(dyrteU?=A0b?;Y=5?>+B*?*n=&c)7R2 zOZQfKtGtiA)!rI!t+&qm*!#p=?``lldYin>-lyIc?=x?!_qq3lx6Rw`?eKPbUwXT| z-QFJWD{rs&wU^<2&)zBT z7w@$9tM{9C#yji%?w#|_)3pMRexo767wL=gMf+lWvA#H8yf49*=u7hD@+JFn`||km z`ttem`wI99`U?39`-=FA`il9A`%3sq`bzmO@um1m`^xyr`Y!dA^IhgE@2lXu+*i?8 z$yeETg|CXQs;`=_y03<>rmvQ-wy%z_uCJc&N?(0n1K(A?hQ3C=#y-EViLa^eYTq@! zX1?aWYke*Lc+O3D(5);Fx4JNvOS&+BVY2Ykatn6OD|lnRaQ&M3g-$6Tc%WdoJiB@~ z6%xHAg~RnziVGc6BAkCj>FY`gziKJLluJ}UMevB?=cR>SQARNLrGi1l)|Uz0xV)gn zxk>4i%Z1;kqF`zz!RD0(w<^xABJ}V&g65}Z-EjJrdP4iJ6uhjyV6Fy&KPhHhCG^^c zf(sf6PG~F`@C$ZnB6wp{!J1bKrd%T!(@gM)qQ&*!hMzZ=c1*Zl5YPF^@AYx4_ummT z`cCDyd|&waj$It?`rzX9FV;WmZ~X9ItMBmg3)_9PTKHeB5&UeeVEuK1uPa&{hc^g6 zX_KJwv%`X)ir%@usGpsmzst8cnrxAH4sZQy@!ym2*Yw`_i+a|M;`=Y`cQWt~18w%V z9}xRa--r9z19as>;qsdghtr<{{p%5t*Ma@%m9RfN+E4a7_I!jN2|zD{>#6gPOMQ8CA$cF@ zh1*4L?b!hGZ@~Z8ABw*151)qnM}7N<-1h4;fUXAjZ<;+V`nG@F4Ekq)egLlbwm&cS zd9{7P^+H>|`+@%8BH`DY$G~%!T^8E?mFO58tz1 z4CwPq#lP+U*FPb&jhBSigtq&k^xuN}M>F95)1z>GJ9&oqPf`C* zejxQ*`^&=kj94Uci+?}NhY~Pe@P6j!U|$*TAAfUKcze6Scz+Y_w{C^!W>dO|eKBoM zzdl0S{Cf=iJq!0QzJU4A7oMX%dtBOY^Q|L{$5J~)Zu4#JIiYR*RtEVtxZlzO=FfEt zB>vLcp5vh30LJgDFkdz;4)3p`FdrHwihmp53yKPD_iOH+Blb2PC*2})yMNy1UZIO> ze4D`E13!tq<*OxqUgE>@@ipkTYbbKN-@oxovA29)1K6+ju++=a*hPMQ-DzSU_l7Uq72BwB5hj1@!$8Uw$|rTmtkS zm`~rre7q0Fcb<(>zm2EW(B8HX?>i$!-}>_;$X9^8-+0lt@$e+ji(&q4h4WDd81K8` z{5KZv_nm|D-}@87>mRsGXdBNp;C!|JC6QZyEIBB&U9UO<@)koyZv8oJmC!bR<^Ww2 z?$@q?`G@eZ_lr&7{I;>4=-c|(=sBV7d8&Is z|DXM(j1SwdUhMwz-@TvQ1@remZGX8G_N)Ky{pLA19~O#~@oVe-JKN^CnexXAe=>n; z3=W_FI;}$R;WqJCF2o7{qs?bxZ|8?_sps7RpU+S}`+o6X35 z_nIm7r=X$IIo1Cd+z&uEonu~ftU9*9g2FYYC4bgmAoi-|7yG4lf&+z@-;?;u0N==I zNn-zeHubNcB=y_*!t4xl%HO43r#aR7W&jvDMda53-^lcd62I*ijc+(`lGwK}2H>sj zMQ-nVf!Mn{AaXwnl>WMk$g5=|4|EfGcI_+LLge;78oHUEA?>>i1xgRSTI}t;HdL$F zQ{)X)!2Qg=%2TMngUYK^W>T3&Wi}O_{d1|jMr9tA`BYw~vVh7$DsNC( zMCDB?i>WN3vXsg)DsNGFo60*>-lg&$mG`N9K;=U!%c-oOl1^nMl~q(eqOzLG8Y*k4 ztfTTVl~1Uwr?P>{Mk<@AY^L%ll`T|0qq3FC=TyF+vW?1iDm$p`r1B+|T~u~c*+br1Bk=@2UJioTGA{N{~t$T3m0Tl1k-1Di2c`Pi1Wc#Y$ydB+*nR zP?<>Oc`B2ryg+3#l_^xFQkh2OMJg{*nNH%KKD4pz&Q= zqf(7Z4JtLMTuG%ql}1#qq4GMFyrsz(l@e6SP^nF2ER}Io##5O-VwWUihjjWinA2Qy(@YH)PLUhg#LHooDcsujrafb{G@3+-&Oon@qpqyxV{yH=T8#h`txGAACnGrVbI?U@?8aF zKa*bt&VTdRKDa@b<>Q z^{UZu{rEgw@45-EkHPh}N1^?x;Qu=KeEk&YKMB{zCV>1!pcg`W4nllCLHtq5U*iUr`<;hWrLf;R4f%N<_D|

P1dz7{ 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%0D=byxJ1wC;<9H30H2GI)!Y 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

-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 z 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 z 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%0At;n-QiTOkq<>wK!5KWUTxiP>Jcg0Im{1$}L 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%0A! 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ⅅJ0i?2NbZk3aW zyleYk+TOqH)R%VhU$%S?7rk(NFfCZtC-@qUk-UPt4};I>=aA;w447IV^wI!p!%!l` zdRU&5NP)q`dz;)+Y=q{Z5&qw0-F8VE-cHDw_kjvs?<|yiImo^xPY?o!eVf1&2Oqhx z!13SgVQVQ^hD28`mR-+N};|r5XPLGhM??na!+Q?w`mxX373$% z+fX@YYkaqp4W(X;hrVn{9x#L;KVSH5B-kG*oCtofqtWG!p`?~pBG*ip;V&? z#EQ=}XkiAD?i%uQc`FZtS&I=jm+CXap1xn`65Z!n*WTr}k>Vik2Bv4pG{(FU3iTm= z9~3V(m;sbR?*VJh9d;T~AEZ zv`n{**0t6H#D*8|6tEfag~79-qo#@0#W*UDszfR@w2bT{WdtypR7XjIG#lW2`@^m_ z$j1#K9tcl#6oz-2>~L#}p>g}dXsQz(zR3=uo)dt5O$<}jR@}ExE7<_Hagt{f@N#49JN~x z3r$#BGB|rwNx$su4zF`$M_uO`qNBF+H!8G7Eb+uwiNXI$kS0#{k=gIlk(%T?>Cc(lH3ov#dq^`nYj1AV!dv z`SgUd6yzle0?Ee(iK1LC#VWj?Tu2yJxivXb6`!F-JD-UJLp`$n3j2%Hk1K zQjskyDP*T0P~ri=%V=?S*Z zxy6axwA66e`&Wd1RVZ>+1BmPJ0sUurzp!lX(s?w-#)WjW?(*}onk=e=szD_KZ7eq# zgu4iyEk4=D4w1h!R{d(&NWAaSZQ11F=`E7&DPjPCry;juNni@K`&Xm4R0?iLT?5~3 zyjJ~0ZCz{tk31OPxs(0l%|kR*=+aouCtSJ!&5J1$>KZ}A>Fa6oAakb!qSF6GL?nJ0 zm6>ON`Ulso5?XBf@pRHMMNyOaVo!Myx@G$E1e7RE2uYJs(TzoC)QEnb3_OAo=0qnB z^Ls<9hEUMs*G56I^Nr(V3nv?mvMr$dBjAK$a*=zJ@RoKRUDAJ6rgq8nPG+~U z*l>nulg7-Bl0}DQ`bBBIB<;tg{iLBxw1?+F3FwMd2=-bYLG)nqZRNd3cx45`ww5OX zv3FF{39%)S+6mz>%f356EZZB0|$WPHa=Q@m<2-0%t$riU)DriZ>a&Eg%n3}$h{l>#odPO8sE z>@yMl2PQmxjXcAW7=miRfA|QCLHGpG3pgEgxB@Ths z*ms2g7m<1g$ObWAHWh1fP_Y-Qngst{BbS(}(5|Y_;CRONJg(93d0h>on?e)jh5iVK zT54d@&11AOuAuAnuvv|vmwL`nb~sM44Wqd;jMATZ3+&leWAC#c)cfoSVJ_@>_T`}u zd#?XS&w9e5fE_L+czeRA&>A~~QyQ{~cVO$Hk)a7k!Vp*SBqNGX(guITlK?;j8XfLz zvrNH$rr=Ql`&-sqa8R*e-=N?ny_Lp47oXXm3GunO)CyKhKEuUu!i^4=sj`x~Y=)$( z_k*C3?SMSTN&tA^z@3IWZpBvP&}Zmv^aIaH`uAWI#V;T00QLdTnJTA{A~a4`&$6M$ zjjK=2ZcGd)snZdivr9{E5Y1Z!zEL>*kdLBntB9FxqT9(#!3S}i$|$IHiG3x@6Kp0W z0NF@KF3E=k?wqqm6au#*yk6`z!aAjd=zef3BDR|-#ib|`$0i;%IzyvK`ob$}kq(#V zDuXKsep8iG&kqnXQZz1fDF^zP`T|zyMhD$)8T7nbW$3N<3k>KTaFJ0r=2$Y}8YKb^ zU_|(JG7#Y(V?}85m|$nbc2Ldty-*AsJm^z_Cvw}s)Swqdr~;=nlr<%C@C~UTXetv; z+y|dBHj|1>_6UIATs)kOdRI##38Z(uOkK-0E}jO-*x2ky6GCr><8yZLUAj;%5#3b^ zV#P+G-W5hS*57)T!EvEc_0-`~gG-pO>V=0ikqYw=Xec*|wphr)8J4boD5+$Q$-OV# zH)QTj+20xQiGDBO^>O<^j>82R!s#YZ|_29IUr?FmNXtO(JyeWKekn zLMwL{RfPLqX%vMd)i^X{ePG<5jMK%dGPFai0g?mLc$#b#hJ`X(q!vhv@!NJ_xW=Uq zDK`7-N-Q>Q@ecu?SjQ~ua)Oiy*0~5FABezWW(%skKj43MCBBdDOo&~Hr$w-OQtnKg z6pH@cpvJ-ew!3RwhJ+awHz?f=Y{!|xy<3F#zEDK_IBokrCA^V~?ZeuaCWzcFi?0Ci zj49d&i?W>wzcl41lU_y+g7W6!eD{}Abp;+Kx?oqrabTvcddv~Bu*%qL2;WMcSe*TiB(C2uBQ|_;%p_RSunGp#GtY+r`?CfPBh8ss zh-@0!rWSFq9d#wW%@uRe_5@%?jgZa~*}&YArVo`+QlckL@Y|Owd`x_FOa_?2U_nn6 z3f+ZgIJQefwd3R@^*0!9W5ypNAC-xg)FLF5T+FC(=Ni@yU2PUZ9d=9|Sl7Qxpk^At8d^s2(i5O1SRSWF{^h|qB@#Brg zVRC5Kk6&+t$oG7r4T30r^L;XCEqx}l;Iqv7@spUwZs$wviQS6~faoxr5q8csm<*?i z;FC1`_(`ZMXn)d~HW;$lIG?HCjV|&n){G|s0Y=e zjp>L6t+uLY%A}q7sX?C(`v2!uFGoMC5}#MSFM?IYXH~S^d*)l1mix*I-GMhSecccl z^s9WQ()dyGIkf9RYmN9>Yr%X5-Fy+^%s5@~tgxRG`e9-Jo<}jAeY9LTv_E~qboQ*X zthcp((bF!)4xK?c+91~$5U)Mxi6*C*!Qd_!M`jwT*r$sPSc=yIf={ynvu>nB25#B( zXVdEoH1QCIT^br0wBPHd{~jtHkk)AeRrwhCiHx<-esF{*%hR}>X}|XjQ8Mkud*4k& zMtY+FIEFT3@>*xsJ)QCXKsUULXuzFH>{2fkSF?hh@jKP%kh9*{x(&`Rj=)2PLI>Kt zG%1R0)ZSh45N85Tx8*ae>6$)13f+CHz>S4hwCtJQlJo_ldXFMC`_Q1_@5^1$@(q_r zb8Ce)Q1aS++$L|bI89hH7fKdyibAk#wozO0ymbpJ-u9XcuGHvkA*XX2g>lf zPlSezl$n(_nWS;;SS|2!qs~8E;1dQ zYRKF*hMZl@Y1Au^H2Zn>%ZvNtf|363qHhUCQUG>_>`^|dVULPYC+yKY3h0*FA@4cm z?_%mPNdO!S6fX?Y4b~o&SjFU$F53r$#p%b~B9;ytGBO7pmrDc$=$a zaju<$8%W$j)4xBc=sc705ZH#MeF%fCfpaG~reo)AZj4dwMuDPcG`~)M5q{2!Jwn!A zJlq8`G-seyd#0#B>x$S1Y$yGFAiw@tm7=ANON*OkTFA}c==n5zSvZ6^HfQ#NNv8@k zWnLaknPo;{d5l@aP8k)lo)>#3_9DsY2}3N0v0}@8uugeji39=>+wn^DW~TN>Bp)5x zI~9hL2xKDkt5`P~Md$P6S`$=(mKpSr&m8f&L(W~ZT36hw4|Z+|2dgi|XU={h=Y82( z+i|(*OtpBenU;8~hYq8pCEIGX6q0X?R2f;yPZun@ldEOwISd^O&WYEa9``5NIj}=Ug#B`>K@a*`rM@kA-xM<6 z7UJI&y#FZgYgO`nA^Tmy`o2*3cfBt6Y8{8Hjd*!~N}9*fmCZL&+t^ny+v!)edQC^H zlRnYvQ{DZlZb&p-grYEs3-npy5#mV=ns)E`RZlrH9{b;84?9!t|DR*s_c>*Il7FOR zYfG6o2DT}um48PY!a(ZTo*&=?mja*R<6G9utGW{`FdErX$B7lCm)#v%EkWtQy=_%& zhJPI#rN1ii)A!2MrukmLjp(Pt8@1S^-`Bw^87#lHg4G4~M%@x}E|;lFzWYY=@#pd@ zNnRs@Bcy3H9pjI()2H{OT2wNUvRVr*74)8pq|@1_CDEE~iL^F$*vzeVD#GzNWpr{n zDcY8#wimD8qEg`8n410}dynlFI0Kw*JT=LEg(|LQht5iU7gHJEe4Y3$*@N}m2ef)n zmpq{3DUC0`!BfvAbuI4Ea>5O!_>EfKMDaDn;@uBuo!SdM68^!_xU7wgklDtA{$%+< zAEYO$KQu(1Y_Ps56uvK11bwjLr;6c!^N2;yuvQGr00^Ky}%LkVQo=EPtORHY5?bu1+~$U6VEa4`@i+~J&?jfWVYAL zx7CRMrQpQhDto$YKXE7wNrSw>3C_$$)4Bxdp%UG9oxGv9R6R3Pl8HCVguT_6zf5m$ zf{!5|BL@Si{x^mP8D-pkJ`v$Wv|XJe931Xhcw6G_ z1`xO%K|4~;P^e%iQ~)52!@u%kb}FmFF`21S_@p9(+HnL>5hpdbj!nnvzN7?RQdsilUqt7ij^EpAF0BKc|Ee8-sY$q9Mgwyan!9&_bm<`yd11&x_QhF+Y0B-dFPWWTyJsI z1r$83SaA7y&LV6Jd#Q$iSuNNzy!u^9KW-4l;Jn^W%9oP*#blR-iPynQY?P#XA|d2u zg&u&8sb-zf$9EBrRs}NVfPSjK2^_$RZ}w_bZRTiol$~q3UJgGEs7YyNX<2$%GI?pT z?`27SX>xz)jwTWJK-u8+k@H};yz1(z{+%TI#mF#7H}q@7$(s9AAEl1gwW>ze>QXc7 z)i(oVnMj=>QZVmfcw1I)T){bF7M3u2tBLD040{>V$o(s+xkXsO2?Z%6x zB6Z|S!X(-+6>(kAHA7ItDtQ1LRKj#Zm|ksdArZ(wrTRkZ5|x!DIx>j3Fq?u>9*N)` zrC>(ZovPFtMe01fgUXkdPS6FlG;^&~*GcOEsUAdGp29F#87FMk)&FP5-o(3wG;y-d zx)C+NW^d3&FN(Qs(Nj`AEysF&hT+BBa+x@gn5F#{F*f~5Yjw>6IZiHe^plySR8M7+ za1XN_F1HhlY`akZkx(BCo^gR*VQ-ZaiWAwPaCIN`PG5Hv2lQlM{2BKv#SD3^L`8js z_@&&Fd4*YN1pM+Sd7}`k=)Q*EZ;`t!Bf~SxRkHIBCAuhr(jM`qU0f?@28-ZHgC%PY zOq7dZ=i#UO!l{^az$3VXrR$PnvHU_yDbWL|~hoJ$58 zfe+%t7W(fDqLaK#$vN`ZigV8joc5)0+C?6b#~ZxQ{Uuq_Sg%O8wRl|%vU78v0lurm zoe&>_6(xIRi1Zc4?_?-Z7ah*o!hQv_0XOZt&zuE7g{~9((dc8ayS#}P+b0TNsa3oai&0 z)R_+cE(eE=&KgTC&ZT_&Rw5-49xA-ycr0P8VkyO?4w)|FXfBSK$~ErK>PTPa*pW&p z&ikJd%j{2_XwQA(puKzX=#N+b{9NpO$KJxVC>c3FC8+(s&cB06Qhf4bi7}r#)Eqmw z>IFCZyz566U*js#4y}>z8e27C7f%KDzs=lXq4pk)y z1I}?cUHz7A@3!NV5wXA7jUU?f9Q#?f@i!z_i+vF4~Lkn0oOdznO?so?{xZmZMfqDJ(ZZz8+zDGiduL|Pb6IEcnJgQi#|rlM|h zi1kR@bzZO^PGC24!oC+r(OoX4#uDW4^kK(|VqwHgNhVU!q)$AcQ)2eVpb?G%8<;Kg zMOvj*mS5UkS%KeprCo8JC@&ODv6^a|5PF*wVc9}swO31_%88-X;V^x1mwZR;lwy}G z-HE@R^PD6|ghlYW9SrTfI2KMJkXTNYI8-5~^tV7~Fuo37q5Q-vArdU(KU)@${QP)+ zqoDR9I!nO?@H%px6&=JOtPdB6eK!i7QZ2&qo88iTU2%`=-RkCUaVws5l}{?tvP52* zbYgvFjcP_ojo~}$L?ekv!j6&vFad;3)aI#-Y;_F7ayUN{s|HVe1d-0;NqLnv1uCsg zNR3Cp`kiL!J&1PoYQ=?r_^(Vv_ zP<*3u9Fs|@>;yyAw^J{QOAwlkp%6`Ht-M)4cB{n^&_4qyjy0Pu^R_~DNr0RwIl_9w z359xZL^x0URq=3KJQ9DrxVp#+_U?)WD};S>Zkq~L&cpG6A!mEIv(WLF?5yu->8$K{ z%R(WA6REceJ;eG($Y(ZDOBk_iY|!n|;d*2p zlXp3I;>HBpl!AkY7~}sFWy`uv%*UO9>y&?N=}2b;`Gp&EBa*;x4>fhQ`b{OzsKPrc zl8V=0C9o6|Xj#>MwrRBjPDj9E^Q-;0vb@3?uG_V2x6tXrO&mAmpS8|DLlQW63sa#TcQB)sT`?v|x<7r1& zYY2qg9%iO_jQA!($yx}re#-(^I!;c|a^39mjg2AquA=Go!J;8|jZ-w?7Wbz8U>y;1 z-V$^C*iVMKHWzl*0=46a-lAvW@)tdd^lpRVz#RWPnJic1 zdcioJEN?9`L6Z&lu*3|rkA$@s{i0nFO?IY~<&lbLo?jUbZAZ#RyB+yF`W~)d^v_A5bFi=%0-c5A& zAWRpQtWO@1xef}P=}yybsIKjojLg5wepLml=AHJ5A?Ib4y2G^gvgAKS=)u?$o*@UQ zJx=djSx#{36!_^bTtw#G1xsq0!AES^q|`>WY=@eaZHb*wYzHC^(qQfdjWLC|fn&{^ z|5I37VUdWlu-+Cf{`0)i82KP6)YyDknLe(F_2Jg2m(s7hpQXj;>9bU@y1%&kR0Ml3 z=+DxSDd#iUS<>;b?96m*k*Pb2{p6COfV8>z9y^>=XL10c>3*sM)%#>#F5a_$aB>nV z0tB%4V#g4iR!V+@aJj6gmXj-0Rm+94;%%$sTgNF0XMta;X{*oGsrm^QTGi)UIYMdc zseH-Os5# z+rx6&2K@K**_JwsZ`5;Y+1b|k>bRUW*d79ouIwVR&o8yXAh5SusT(Z4&1(BX$-gVo z@yOiu7D|bDuFRjVhj7N1_662p63gqjzs=H=?meR~vc_I$sf(=gU}@qB#ou@$vc!F= zKs+|rf1(_=KT#d`D|w%q96V_J|2cc`rz8*1r9JnA-TYKZH`hn@ts$n-9@sn2j21v# z)j_9P=?TB!N90mbtA$U5*_eV$1T+d+{Qww%#n6&83~MRZq~%$r$N?rvPd(ydkZqj) z^Oa*=B-AkHV2M9#-fK5V1y4#kk~%j2o{SCf??N*mljaFXEN9_O04(6$N_{4+owoId za47VmWJV}acN^d06LAg6V4ONnM(-?Yvn~k&ymmv|sU_{eu&e2-Xfn``b!i&u%Xjx0Qb41goc2u-dA( zmtIB({;t?r1HD&wvKiqu57Db<#=Kp^fz(0;H3t`VHgqU{x-$Z2B3a9hiEO7jtMCPj zbS&!CX+=8y4w5V0UhMo2Sa_<^2;hWw1$6Tkh>WygSml)g+d)I3H(mKwm z+7PQahYV8rjWKjS3{FYxy=i1CtloX@~d7&+jxc~nRJSi)32ziAifB4 zSQS-nLtq(*SO?^Q0r#LF(jKkZ8^SFkF>4&&+j?Gv_w#-gZt(_(YodWp?QarB0nIbW zD%;E^7yMr0-=_m%`2R%Yd=bA?;w8q3du009QuBIa7@+TuC=?3 z*(S!XW<_<#A%*d4iCRnn4jxhXpb*4Uie4lxTlFI1fZ_?FuEX(gb&>1;))pcv(OPQHZyNG9XX6mDX~hM4wOHiI;<+!2dp{H} z|F~G>k>cLKp#1J)!7D|u_q+~PUq*{{6$?HuHx7}ThH%Wt7EcrjMKF6VPxg?fK=t@b z+|~AgnCRqtKU3CsC%^fx`F7jS&aL8#alsWAiq5)@t3;}ny&gU0|B24Bj!b8H$EeOI zB0?41p6+*zq7 z+i9h0e!A}+-UPL$nozdqic}Rx&ouPWyxK_CI{Eivr2#!&o_y$MueLmSk(C-jzM&H+ z2#iu{Ve*j9WXC$pS{=W3LhJm?1<^-N5{DV^=abB@!%#-2g#8{Y!L;+j(2mVvbuP)m zP8YA?;bt%29KKl01Px10d)a8#U()Kuz>*N0U8(icT0Esk#;iAOSTy}dJt;cb?j!5m zeu=Q0{fxQfX|jy-C|%QuB}JJ)tr+!K!88}>WY9vC>gs=6cn zojvq$tsWOw8x8YSj=J)v>Q-I_T9Q>cJUP-3>BmqzQ>4cNQM})8oIAy6H6H4G57A=9 zb3HHIefN*g;-}|F_Ak=;ojq0j)GjYL^WcNX`J&c~_@Tr6eht5foKP(Mi7EWCqdp?z zMQ<~H{yG;-^azcyb-mD6i5C$Q2Ot4{EiADiq0UUG zGZJN+5-aZHZuT9nx}Ce7QhZviZ*avncUW&ZrS0LWK%u8hA#^Bzpiu9i zc+y?YT|O5TpNaC%Mdy9C`yk;xb$0O%B`F(`XQ1jr*Y|;I_-XyA8~(&SA$ah3u)UC_ z7<;o*{imc`WH4Uc)v1d`5~L^*M%-wU`{T~;%bZ%FqA%jTT%38^ z2;asLq}1q*i&G`=1UdO$(GEKg?~__o*C>~-?mdrte37gDUGJpb#+6?dk4~05oZ$2f z`GRqmHG<)7y{B$0%8XOw_jXSeXY>}{VkDwZiiaoD_QqV<%#=QaU#nOnOk_}nF{0H| zB~m5VPZ#({^~1`ALf}ZuB8D@V4QKGFNh=lHdbV7F8$~PPqkPqH1qGrS+o6vqZ?!}tX^KRD5bg}` zFf-p@Cd$jo9u)chWryLKcAm)GCdnqecVS@lqQY#W_ol*2Wa*x%eE{w_kMzwyC=(92~!7>{xt2YYl6JwE@>hOMVMQCd5bUOMoD|?;!j^{<_ zv2+0iuIHh?eLGokgRP%LIqNy;Q&aYuRO_j!ighW+Df}hs{1t^_3BUj-aG#2%-j8~p zr1GDF-&5&ySk;3|2H4f%6bURUQJNb~?leC2Dt^D0MUDGd`LV(4MRQj|*e!)BL43VY zu^1b|WxN7kSghEhl|Y9^F!lQDlnVxTm?xC^tE}tfm6o{5%3Nu!3OTn5*p}7kxigc= z5=h=k`bXWB8X{JTmf;$0T;yhXWo|Y`*E34pLm0XX&=z)y!zE(wMbhd}oSJNXi=LdJ zQVw~L!oXY-mi?Iu;<0yI!739h^FO#NLe8%`t2=gBuxjU7p(`@Sd)Ag%^(C?97$yrC za}5O;Knzw5{ZsQRlU>-lD`eIi5+Bf{%j!+^3_n~7XcoOKR<|Q&G!em%^BTVl$(3O_ zo{ZKNUZF`h?*qIfHH5RNvVnMUnRjU;SS4@tm3hc-3%@+VPgdZ?l7~2dNBY$12#% z2g~P+$6n*u#jwNc6g=K_qH`Za?y`$u{=fIB9o%1?;wv8+f2N>zd!n~g6hTh98 zM(VH=%|~EclZ8}a9~-%+-N%PU`rpNptK$Wp`T$+EJzal?J$QXw|Hm@Ejqxw6I9AxP za&R=yyK32XdB(pgLxho#*Tx54AJ^!tjX>FOX?)&gasSe|e}xfmguXm3ufT$2A&HFZ zU)IKcyF7MeT4u8@R-gQQwV>~Owf`JYQ^?Ce z?ZAL7ln0bAj2%#i6X8IVdqkHn!qv6s!!RelW56qKa>VgWHo4%7o~nl?z7nZF3VEjxCne2o_-`w*J`X$kUkEyrCUD#Q#5&uY6{w-bp9+ZS)n}uBmht&jo+283S{kC3}*By!`na|XY*JL@V z2TclCpw@fLD<4UVXc&ARqWp8*C(2)x718oFxr*uKy5bB&?sIJ1(7UlW2cqR}ZMp_z>37sh zTzJd&kL+hOX?lNWKec~uzX7rgoUk4wQYjC~;q$y2-!54;EiyGI2#`x=T5f8!q*tAg zn`|RE@V3-2))}M5=Ee+=4I`qRYsDTp^qu^oZ6<08H=DA+(>CVd1w;R7P<47A+POtl zdgbvLsYvVjujC<0FkU5aK+55EZUQ@D!iM3QQrd;&M20#HX=Iz=za$=oN6{pmKg8IB z>6vLcikT$Rs#<7F_aXu1>jRBzv<{j`7Oo0air2fNAz5t}9tSC~w678BQh^{=Aubh} zdV&rj=UHe=V~iZSzKd1JU}c!367I)JzYA95iPuZD6-i#dW%g^FxIF#}a_pER_)Z4o%P^ zLkAgicMv6`4#LuFHp2Tw2|Xx{jRm0wW19Iud!b7@gfQ|Z(V@!8pG2&SoJ=5RULKBj zhJBd+wS>&K$@bVy65#&FoCaRUI7>a(5DFRhYw@|63tj~2!CsTo(_O8JbwDG`26={y z8+)^kx~`WF)Bm8mHUG(8StG8h`Nj!W-`c_Iie#|5$_iGG6wiI2g1s|zu!2yV>v~o@ zs;;b=70Nv!;(cOwsn))@l9u2USk>aU>Xu3z|IQa|{KhPPZ5Ho~R-faYxCeSIZfiZ; zB3iewW%T9=BWjx1?GlEi*V<#cz|TFwgIBe&!OdwJ}(0 z(#Pu7hL%Yc+455g(dzvRy80%;Vrgr%rGy{uJ=ImL7jyD-4|j}WXo6M`WV!6waBHk( zAw78|>q2Y1Wv^Dd*5upoRViP{eq>*UUjq3yDarPOaIn+(JquiuH1ZIONYVcdFEDur$j#d;3kXKGKQL=$syz;qB$_UEidu zCBV#)N#$cAj_Azn1%{cIBmB>C#B;{f@Tk&HD*cSoe^kyN%=X%zdj~rzIH7{=BUm!d z$=Cfyg@tPJ3ksLAK=5BvyrlaX{BDayDj^kv2qGF6&*pygvy6UIsQSL3zbn9eoLwWg z)aVO(nk2QQ2JJ&Z)~NbAyq#H$NFlh**AT+|JGS0!7uC+rM-u(Y zbwA$bEpti*8tL9siz)I)t^cBR4V6V?KT~nf-jiBBWmHl2sbOnfxZ-8HdtCb;$?V5c zK}H*pYO05L!+|r|ZAIU*oSH~Ia28SV3PDmx=MTGjy{-F&-mG8P!j(QIcb`8vE(7z>e0iY=WEkrxpFea)yH0?D?+vJs>aK=|1B% z@W_AP=D&_D<^kNCJoZSNY;FzkD0ZNg)Vr;?oV(#n|PsHd4=m< z?%G$ldZP%ja-*Z>4#ibZTtbWgblIgC)O~aV<4ETq*8lv}%F{X3(^n6e zO!|cy5^y2N0K35#!P5jQaSCfjY5FNm!*NE~a1oMPhkjh>U z$3fy*(eQ%6K~<9EP$w#Y9K1_m^3rhyh#>gV+C@Deeyh|&;CX{mdmC{b=^tNloA8k? zDlZiAbZm!?UG4e8kBz!jC`NnKVbb+uE#yKGv0FspRwM623j%hYu@i;;j3EeICG49; zGo_svDU^d{ShfPb8s@25b1g$7!!kpSSqeLr;U0k1)O2E0dh%3p*^f4mwa7mk#3euO zep^N#(q#b{<*FH0fi^y1QbV;+(K*8B?faE6Tz&swSc=IQUN~U=xdMk%( zYz5Ag^?a}bC_&h;+3sBjjw8dk9RDkr(|TYT#_%2LNoEbQ0KWxr9)t0h1nR4J(=8S@ zpnZ6LtVs1RE|ZNC4D$xhb9e7k2Jzla;t+D7PcrdA*TAH!r*N1-Wl|vziL63okM)b= zt#GZB=L8SenwQBFPwJ!JfZ(3`pnJF8Q&_;23aM!R-}T(FXcKZ z7a@s|-Nu@m-Xcq$67D4L1~Gfs-ralME9PA)=2q>Cx2FkyL*cZ83C`1~N{xB$I8) z4JkENdX4{*&aE|;t_T~d=XXSDJu%jkdyQOgh$=9A@Gf=B!T+|Yz7pd&5`}rRRC!gs zUss0EVXm6GRL_B>4PS|7u5W4WJEV{9tNA&7{Jv{=!M+i8 zRL_AWeJ+!&RfZb$Gh9~LfFbaYx=jyo+H`*nTim7wL^z~=JhZqCyyYfN_VfDlh`|=_ zR_G8+#C1i}q(Rw%rwoY>E)45r!b=WQL-nv<4OPRy;Op6&>_&Bo8||mt_3(;e(C>bW z@hvNi>=;oPsYd9Lze1*n_iQg7@roi#CX7ON$I3k_N4aEnCMDjet+LA)9J;zkza+-q zDG-EKj`^J$UpY>V-z-=hJ??ff!QS%?ds4&151lDDi^*zA_v9(fv8IKPP zUSPbwucpyoHPVR^3#V=nGcJ(RuM@K>XR28n1dHyOqvwp6?aw)3wwe=XebDSf;Q42U za??UjY7@Nth`L2Qti&TK87wb$ezp^SSRpRHWy4cu;3vZYpKN$muSLR&TCHQ))-brT zWslZy%hJ$8VG~@J^6H&Nl_ipf)RJyrqc+3iVs9Lt=BjzbIW1R5b{k-1*Lz&ro_>f+ z09$)h+KZ`|=mXMwLdwUb4x^c|9+zVt{OO$5k4mr^!5W6AR0bN+N$q5s zkxPp{oknmrksmlrrI4Vfp}c=T1Jki89y=-DZMn^j1%cPT_ ziW$~5C?4)H;J?bGBR6i)zyqO%%@EWbMjr?C8eXkHH8KD#WjSNm(*cC_9^|=LYP1O6 z-`oJ1=nBw^e}9lC^P@G2ufz-DH!1<$$KqrZ3q=72sL zX-kH3$A|7GI(#(TN5rHhH-HsGDQj@2P!}F#IV7qw_yrdNK{zUu`%r~;d0hw*CJ>So z4cDQC>BZl=QWf1;KNl8k!!!fG48{-mK9NoK_K3JG@?jxZy~SQheoRV*dS`+pmhgXT9vRf!7}=%t2P!s3{m*$I zh;lLdDy~7-*=<+bjkU2F+iSU3=?zMrufkeis*`49|q3#vBS=AX^a-FF8#xRM%FFQhzP_SsBI%a5bt1jz;>{*93r? zQz#~qKnW0nQuSkz#8nWRyjEOIb^0o)u0&b(cX5sM7f1MPH4m#uL(}_;pbInq#8Gx9H4um9 zEm}p*tL80U5$a`F-QsurLJ(|Jq00MRDb!W)!|DR1Z?QCu=?lE3nqd?T*Q=hxoFJ?T9`Fq)H9l&*V+>3cIxB#*q`#D7oukf zC$rPezh^fBUHG0YA2GrHM)aNWjOmb16QV?iTqgqkUH6}5;WC-HR7PU*Hks7cJ&=Hl zM6|&E7UA&?0ZC1r<`9~xzbO<$gF$!bfFN%JZW6^P>(3(h59tVy*P` z0-xJ38qu_zcY2RAtm)Fl+pbrK>A7W$rJ9(W28baFZ;TYonOc`hBD7e;-MIFx0v|=0 zj>-voxF18bj-gDC4wL|H%4GTN#-RCXH2fz7D_piO7Sx}4+!#$MhBUGWIrdwEeWRT}-UL{hd8b*P(>suI9Qco542^^LHwRU zt6s;+m!p|*`dMRH*kpgKHris7eS_R+|00xI)taVrW?Q<5Ms9|gDnkMJf)&~kUv;ya z4wQ0)^IALe!*}KFZwiIm+`@BtqmcT(AfL_a=koq{CImgdGw;Yo;t#s58>M?(k-m+g zp-(q1V>OuKecG@PkU8>QGEEodHs}#z*Y^VF4q^n>32Ty=XLI>v>zDE!2-hkr4fB>& z0Y0WvaDxC5Y=G!5_&RxUABF|QsgJGg@{myOOxar7@|H+Md}A<;A4zZVvH1JGf0L}e z5#?~$;J^-l*^9hF2-9F^c+=7%ul9viWXEn5a;Pj-{eU2CaOUEMXk}fB46}|>R|xA` zqFQiuuN7|@gLYu?yv^DW-fm3{qA*2^DdycVlD>cqbP2 zniy!;ibw6#L$-VXm-R zIY7CMh&!195d`p^WDNm8`V{#~`WQ6&HWMX(mTgC z)qn83S|k2!tN*jRzp!s1@{#9PjW<}f->WFVd(rkd#tn5>%!oiqZg37-Ck@pNF= zT`%Qdgq)M5o-y!{e+1@fSJ9#2|2K?qi!n-Viah3RjEGHGA zJ>efN>+iRF0+SxLyWoB+t(~OT4*yo^Cscn!|FHWxgPE7i#!jVRr+nva6@5q5q9&VG zSLn)=S2_`UzLmmB?jTQNI;ZREW>`s&@q?wXO$~gTZ4W?Zr?EFjhq`G;J z1nS0Tr_5N4!6#+(42D!4$aaQ}}fYchdSm z5_S$0A1*O40p!V{yGN4T#LU-E5RQSj%`Cxd6DU=>!+y9_JW_g2G+5nP6|5?P<#RGv zJ!}Q5yAltV4yMT@T7Mr&tS`i5zhFCqwL-TnhM*k93>e2^k?lD?f#Z!FztL(P-16nf z&@O*DQd-gWKDV#Nu~BdE;!I}OmgrYK`D9q{C=Gv9qCYN42k-*couxB4@=YOrj^}Ui zGEauxKZNyb9(q{b^l;}@O;sKq?d{$yIS%&S1XHRUoLZm+P zm@R?S09YeSb)S3wXF+v$m+Jd61QQf%`@8U&pC66t$D-l;GipPLKBpuVRG8aP(y&dq z-^%|kn|x7Vhtkgq3R)DuUic&^$m@2{t!*=hPK_fbWbHph2frE3p~*EFBfYGa<1)E) z14L+VKbHW_Bwik?jKhY@dC@+y;opD}l_Ci`^2AqNBHmwd)yp`Ytr6EbU{iPRa?zCx z&=Z5@aG!xbA5Lz8zZZNM-J+>HvLu1P^?>oYykD#P0-wv`rH`Pa$WEWuO@LE;|o zkF#MZqM2cScdXq(^|jGlbdFXVes+=8>$F&_akh->^?E95*C;H#TtWQQJ{THr1TEg` zpE)0ETO)}SP7{QYSHRA#7j{QOdF5lI2ijLG+OG03XSH;9y2M1epj3$<}lZmKpApIh0tOk ziM~`8{Pa|NfrgoTBe1k~$=XE!6r{7=#OaBX#b6Kz(&>KIKB*;!uCA5xZFH0-mk}g4 zAiHqP(ZAqAABBYMCzls}-&69v3rhgs|;`dh1JUarEe`yXh)UQUvSET-{WtZ$jfHUJT0B)mXb zXteU_fG?N=$C5GAfHByH8BG3#&iexb7f^X)i^o zT=-f$Tpj~V%y4qiB1yaPu0QN%ayePw`jrGSB6}K2~ zg=5OM0g0DFKS4y=Uv&_QmJXKi_+vu3cf+9%{R1I!CZ3|N*BIqJNEwS!t=i7PM59yW z2+yN&owecinjE4RQuL=HrbC@#q-4oeAo|8jvzc&K5h8Eq%Jaggyy2jp5Ec$7$aQtH znK`N*j*`s|lpJzMa;~B9hs*Z>urm*c&&^I>?DD^?4_3*Y{v@o?WD*p2w}oEG97&{b zjJ}s+Foq}S5zU>25zs25PEFR0EJeep>xz47q#nVMI$i(M5pM+e)i0-`eXCjhh9x97z(Iz_Y~ zDrfpPu`|w*7-tzWP(bq?;l(Qa|Btfw0Fa`}`gr@^TUA|EovL%1o*YRtLmUuf2$E4i zLChjxLKFj-S3tywm@o&-VMPq6tLp-WRo9%eg1Wk{tAc4wtG?f@oyDA{%?zV+S&kPn9fjsueN3;NhcSvz0M4IQixK1V#E5B4>;)60j>=Pp3!s8~Hd zQbN}-DA@TuC_emq4xA1)3CW5VD>+LY;Br~4%~c25_@B-PV7CXpzkTJx+Gbd{t`+J! zVIQFOi}*?f$d8%!?rqj1x*zD~n1iFM3icyJgNA?XoyG}nXQQ&9=MD%ME*4)3^_8H( zC|fq0kKYRQPvM8q z`n6td^GLJ+?J4*I?XxmkSi31|u;>7D1kvvGiI6hQU^Wm_P!(#6s$G6(^Jyf`jT8N4 z3tiJ+sewOnq}EK93Zn_>Hq_W(K8lzQqrz_EqF5|}qDxIRp`8uK6OE-X_K`44NZ)gD zwlvQG$s^}#Anm!*yvee6WX^cyw?jzf=@1V|W1gIA4&!}}&Mn$)A~!z*_{il*7r*CU zAt7zv#+LJS2;34C7|Po5?ZnTumtuZ!byjPP;Z?DfVR2sgZ_;19F8sxproUKG-Z*V# z7&pL6DS`sMP;qQ@q6qqq-NR}5SoNrA!BW|wWlrFO?Cs!NmuTw2$>TPMbw&zeP5)*F1;j-7isEB*UN_zv0Qcf3h|;omL91y!~7!;`ykRB z$59f~S)46pK{9>Ycsj^hBPx0vkauIjL+s%&c+7KW7?D+p&;^NJ=O_AIkg(5B*e@y^ z&7Y+sS0s#!681-F=Y~}1EyT^#%VOQ#e_8p*=3N>)=+ulYQ=ifaNBR=3MIQ332vIFJ zXkV4s;RUY?NVKACq?bYGmzQ^_m08DA=@xXdX=Z{yaAK;SgcvZxEb)c_z^QO8{v(5Kq!S83g) zd&ObqL#`d7JS2!d68RzyYJAXk9p`}X+Hw}=L8N@0CG8!8bFfes8=u&}>Nqpy3$dnN{ocEQJBV5)V{=N=p~FULV&*K;VDh_-bo9et35D!e(0a%9GW-dR{{+$ zloQyx45e2DK6!1;tG7kq)2xouY*wFyHYsSn`)(pFCXl-?5_l@VGfmP0)X~&|J=K7x zZ?YZ1XC0M~hzDZSqx2=^@mI&xRk364j+uAG%v;#JUaZw$-Vsx4Vj<%M|Lgg8#QrX# z{YuM3`NjtE_^0_?3(dHVHF-rHe1V!?dlGsaGhJVQW33MOYM&{^WxMujrUOm(JJBh+ z0bU2o&8_zrCo#MBHJ1t-{b#X09>GIPoCFRbt$%e47`n~ajF%dO2YCF)&>2ZB7of(J zahh(9`D(R}3T!p+w6^HVG{gP(dH(xx{`&*)OrIRc!3O?C9x59()>x=DT1g5tUK#=? zJ3$G)Bai{NU$B#sj)z2!Z+=j;pH!B`M{w2J-{T9=BuX2qT$Y##rK4Et9O7DZyoszI zfQmPT?Vd)gGXGyA4CGo53`EGohM`+MU_>}6mmptp_0yBb_*EFrlbhrYf!u4U=otuLF*y@D@@d>$)PNx?r*K+glSK6fr&!W;Ba^VvpwCr}A+Ws<=^Q zA4Nl_rm=Qkd92;gv$5AK zd8~CpKV_^I`9sPNXR)3Z&ne3-EyVIZ?sI<4|p1Tqu(!JSza&TJ})ur`E&`F zNo))aqSoW@8sQYIrMh@G9Z`H>g!qXmJgVih3n4Mc z^<>F~9nF=p!EQz?_NKweu?vM`Qq@z`E{i(N{lGgpMXUu=&ip9e-I~kAFP{3@n{V51 z#l@TP!4YFwTz%`=@5FbwQ?Rqz&D)nb=z8fLWee{J6v!*7f2LzP3*0M(;}Rk==k0u0 zcJy|;*?PA<871iH_kxsdLkG2z(F|hnr)@vHwEV;K-iwD&vQ`qg#oCY!k!GS<^YOpR z0io5xJ7fTW9aA>j1LRQvYJ;YkXu3xHqclAbJdVM9{OY|{1Wv99KDXDWvZnM>lFSmW$-40t5r<^ZBH-PI+kU}@m zzY1Gf0H=Vq)GSGMpRN1ymnK)Bs>yaH59C7v&zU4B6>LMp>H9#ik_8*q1v`;kjfQ_k zYlCDY-X1Kj(N56YgMSd=W?wU`zh8f`E?B%*f3Yt3dy%*j0B#q9#TbF$FNk|&xz3_? zA65zAA)0o@rxojiTrH

BQ?Bb@U{U-*iuTGNW8OzT5l`t@(qix;i(tn#uvG@zAWW zmv%*JB@cG9a!!~=3@tB@6z!y}p+E-!mA;UCFEtn{`Xb)ZY-Z&Hv;34#tZ~0IU^eiB zRCJMoeWnbaE5jq$a;^YqZqj)UA_E*;b%!JxO<2Kq`~4sR{`yC;&p{3CeOmoJIOb;& zdtD^n!zal1J?RN}z6NPc(&-aE0-SQg*an(urg0SDK(VuYxg`*I!sNUN|M~v3Ke%h! zC)<5ZSs8pf==PIYU9`__j#&j29El@h@bm zXR?@TPBQq;tI*?kwf&9bCu`hX&fIvroU?J9zpefnd#6C|n|R=M zt6Ce|_LV1MfD9g8mTS-JIc8&b;8AD$?ZdOwev9RLW?iqf^(6iVfah7x$XmC#+n=6t zG6)AI*?XnoXUt!rb+Pkwn%$qkc59lK1HdMk(=41mkI4u>*=gkDm4xfBE_-Gn_yO7A zH#R13Y%hLbL<`4U#u@LfZOVg^_yag0=aKJv}ql;X!8SY5map3 z2U07RPLHX4=dvxx%WQc%hCcp~8~CEclo3YuKCQ>)Q%UugWC+9Xk)(P!iA39&6dRIA zv?r75fu#LNa)*)jShce^f~x8zbUf(*Ln2D>jPN}BPt1vv{;p5+NmBid)12OQn#YoM z^GPVNlo)6U^+JSwx19{|e`(%h$xz?yj$qtU82|A|f)SsL`|DGdlq!~$Tv>Tq$zEP+ zdpDbSFKfS>jeM51-_P2-OZ)Sz{Xtgo>4U8Ees<~ySsQ)<+u`;v$&u)EZjL2Vy}bM^ z3o?{0ON}A^29PqL4de(f%28q0n|-`%we+&&@mo?l0Dp>qg-39Ow~My6<)U>blmUf} z*cE4n>!S-LM@r?(S%=uJDIE^Drf z61!?Lhu$zi~;Rbjwp>MA@Vj^Jq#^G-YX^7I9LZ6)kT6|EI+JRrn?_NkYn+Z{8~HHRVA4UnF)-Gk&zTZ~`n} z#7EM4#Bp_krxTqTX$DaXr9~KWPW>KQqRN!YN5sCDiT3zWsWsZcwjlX~BHw9jrjhhV z-?z3x`_>j@S6hL9mb7%dGruafHZShXUmW%qk0^gpzczmyx}QZb;m-=?<{W`%F9C6e zPKr9qj_u}MqPIlJmC{@8vjZA`M<@lD*Ld+6P1byr%C)0@)j#x%qImbADz&2W#J zx1~F(8AMUL!Rv4Lj0AI=a;e+$;qi{o6fo(}`tZln>QN3qwS4%zC)1v4{oLuAus?A+ zjY*pv?>#5+wv%|rDZcA4C%@y6{(r1?Tv~K;p)9Hc;lUzyYmEY$w_ZS|fidWX@vmAU zX4GHhQj}UN0GGO**6!!K-g$0xg&RNDEv|Gq-#P9q(pJ#f%?JZwt#B_9R&QA;Mgm8A zTJCr3cB9~>ZcmL4x!zdz<&2k4tL-M=XSMO2N9?~W8628vMfcwul$fq9Z5_0&C-bO* z^qv9=W17y14Wf5Bj!ui^_?@5{C;b$)t)PwLF|OZLKi4yPyF6C+-!G`Bsi0D(gK8!= z(tf5hKg7;5vRvyFSnt+AB=T|D=q~3TchA0c45}f0no^(=D); ziHkDo!VL521sQREMn^Qvi!vQrIqPK)^L8v*c0V2;YLlTkB)cD9{Wt!jtCCStf<2>c z)c&Ja%2C~UbR=}O01)(bqNx~81#}o%SUdjVB+Vi}k~C-%mH^&7TKTxH6uYyf(dAL6 zMZcBC#|9p)kUlNr*7!LJ-Hg;l0k)esX{XEGz?0R!ec){gZSllb?_~e|Ch0F8bp6FO zmcLkD-uScdKmA%>Txs~99&`M~D&;S3EAM%{|Dk>h(VIZ-Cmq+*6YY!e#P}<>N^+7m zN=&$al^A|?v9Le^(qTe5TXfTZkx`$Msk}^loKYX?#{X+Zd{}P$ zk24)x;`T4`>QfW;7xC!larc+F{4Va;#+@m9gN!qr_wEmI*sBHmnS%Xv!QNP~2ROAU z9j-VLFYteS(a4k&`(0KI)D>ba{AX)|ybPsMgj_ z{0{=9Nn%llmN8?Uax+o7^6b`iz0i@0sSsG% zltE|*$`kRm2tOz$kcO~IL?@Bkdw8;tdO_HuQPmz4NF;1eG^S&(5+R1j6(R&UNA9so z|L{dQbzx3VhJI5mxG1+A;U1b~N%6<54rMLrYQy!Y1`cS|v&DxY?}Jd?rciiusQA9- zciaqtkvZe-koQ)o?)6akjZpDTz4?vMIl?>k518^Vim--PQR~Vp6&FLn9!vfHVub9G^z8>6xw8hjtuDpVrBMBsw>cJ6aYhc!!f;g?37m0r0JiSJ&B_jQ zxV?*fOY|Pz_PT7nM)W;Lv_C9D`k71t%FIR#!!s7rRkVi=_@` zTy4>ODyZ{QmkRq<4TBrkxP896QkO_LOZtlw{P&FnkJ&bGrQHz7JsS&rT-!pEVri}t zI&eg-Q5O%>m_O@&{#Z^u>i6>pbLxTI?hoeN2XYzShva%%x;j*UtcR9hK2pfcmmNXd z!>?wYOdZz~Q;eP=)}Rsf<*s_K?i?Boru!uId$nuyARhsyH_#7jwD$(a6uQ8X>^h32 z?haL~pF|h#!@BN9Rdk6AhA&V3BSH8F^U z2uIFG+d)ru7cQrH*a=)-<4;OW_u9WUip5RW#{I>rzW(B?x?dah9JO5Z7~Zlr1o&~K z#9(RdF&G(}!>Z9%jMK8gLFndq4d%nu0ww4(xt+>$orpyczIEOoBudZ(5|6Im{_D#W z7^xL1*2fpnH_IX6!51t4@QlCZ?`8F={NeTBb|+ri?MM2|>93&5DD=B}`xAe%z20?? z-Q{ZfCfcLa@`U0_xwB8|j;>FhS{lB&VmLV%cH@o0O5ZNbneo=}tHQhwSK^rKi}Zr) zit5^;R?!~Ht3T%FUsqfzCKN`Qs^bAh;g~P;P%~`Jt1Wpg5dB@|eU(3yz$aO3XV)dq zt+TD-f!>i`qQ)}&dK0wNwolaH>3t3F_odJ+rPiBEgKsI>H<#?^(Z}p%HQrsN;B6(K zlg^bj_Ds)!HXaZo{JO&2nNNc&4hkJ=$-Uk#aB*)H)SHEEzr5hD1t6p(eGj4kSQU{| z%yb+#ubi<$-$<7=RKCV@ipTEn?5*|!wS0b+eLtMaR}$8<_M$}=3-4@U zZ>n@&sgyD^1Y^zLM>>aj32QQgCDQa^tV`E?FV-pJzw=IJuIMdy(72LI#1ipl%zGmi zeKi(;EmnLzhJ1f5h65n_ZY=U%thgx#-|l;{i@9YHt^7I`|0EU)5C1ksRQj9PDzGZz z=a~1eSoDWj{Kr`FCw=&jv6aFmH)!OlbnT_-6YXP(B-+;5VikGpl^1x$3q5waz{BTv z>`x8hUmE%w+DSiC?BY#Y>v?y0(cgQS+r8o%z1!`Oi@B5T_q_YO=sjL$omae9Z(iqt z*NE%%s<0etfNa*s?-ri)qUXKj5vq>A;1yrgJH8MLFQo(Q{VKm*e90@mtT#S~e>2*3 zbVv8mlYTe!$cU9QbACW7%wssj$UR)I9;sIk*B2hICmbM~v1cQs82ZuGGvnSF@#tys z`0{x1^f;%zAP(m-9J$cbtH$%=-g)upig^6ocyXovc3J#=Q5a|FNObMXiV9ZBe^1#p zxGWnsDYaQC|2=|F2)Jyitro{Y&^1D)X-^I(L#CSIC1cW_WY=-KJByl^UGwbXPBoJ4O;w(e6$h{6Un_WXQEcp-dgg)@`g8DPv`jqmJGtwpScu~7m@OXsQbQb|XyBCw%>Y!N{y!xJaTr^;W?poD=>5mgRy z>1q2jgEugO!S-P1 z>h6^!_6hOGYA(DVmxmcuD<4ssut3ieeAjFH@5n6R(8o3IW_NLz{G1ZihTLet2%CT^ zgxE+23x$N5Ix(lXGzCrF^=-#KF-shM-XEO)Ozm!uB_1?Xa zpE|yYu!wjR&M%NmPGD*{^Y{aG`mSq$;+C2jkcPU>xzN zv}#A4$Tz|(q5c30Ro;TwkD?n?jYo?*O1uVRyU>8t@pO^Gve$`RBwNhY zW&a=x@%)5BE`PnO@QTrjc(GW~T)a$G)|OVN>ONJ)>gKAOWo@|TV#Tx=tznKT zE*iatXk(_K*x20gda&7RiZ;iaip|YUOGS^KEyW(qEuT4LBC1}6o>$90Uhin1c<*AL z=H8!(Hm^0>7H=)KHMibl_wCtU?AzS_rP=>>O>lKozblM^g#l{dS%SCu1KQB^o={;Y zL}SV53*vtBc~Ko0a;`ET5=hWJt(L%^IqBkAA`Q%hRpZvSwMYB5 zwR?Tv7d1(LLqpew4JNxCQWL9vFdA4dW>wSxbE!v5Md!I>q>7@kirus5QmjA9?8l0 zIJB6p2-Zt%6bsWry$#HUb!Z4hh`gy(I%EqPfW)>W% zOc;p-TOP|&hUd}lEfsbQBeK&Tjv()mu9_|k?!$t+CkXCAS9Qo+CDvw$34n;2Io`Hh zg36Ya!X&N(FINp)hfseN;|d|O{i{rFRmR?fLcly{oN? zKFnPU>BIYq1CZu}AS+C=K9}_l`A1zt%oeTqf7;Bo*ycu^Hps5t z7w9~xup4S1ZMY3L$p#Z=-64rsoUy0T3HJyep6~?l1hH8rHjzX-SASsrg zTNYtI$#T{RXRo7cEs}BPm_VS~INbO|sAIUVt(b;eBveD4{(GJOKGA>w0Xlbn=o!^M zzAsVWzQ0$2i>>|fnrn17qnGYsDLawHApz+cI|LD77$p7ROqc0FUT1M9cMNMI>~RG~ zS?>#CktmT>?KHkICNGZJt6~G_YtRrPha1J7PSWjRB&Kua8pUy*A&%5ZC4LSv&cs_K zbN2BvtCL;&7)zuvI`}%x^Jg9S&>U+OXrd!|p2xZ4${5URrbqoy5C8g4XFVHO)JDvOq^s!X(G3J_IAtLQ4B zh!ZnKI1e64PYpv5d%iORJ1wdsynrOTwYp^xNMUvN2HKLZ>heP;WXwAh-yB;+sp z`0oq+_XGX+PXB$Z|Nem5l3pSLLs!VUYP^*zWc@j!uB82zqW-VtwUvU8^XtErKvOT3 z{+IrydG(jcx_ioBJ}B$f=(TzEEp?rEF-W4TJB80t))nis>faR{&H;Cq4|vb&Uc1(; zTU*}tg{-?vuN_u@rRo37Mdj^lMc@`j1d+z6Uul^C*Fp7-hWX2HgXf5?nr-&Wp!$j} zUy2_9TUAQy9AO`4&$17&&zA{Wb+LFu@AYO-y~SS3!04-G_WW0aTR=ed4D|)~@Q8{( ztWZWL{7Zqh@%)dm$JCTZabj%L$37fXkNkG*ygvnR$5A&dGzQD|cKy9?*`CpLX0Boi zloXNap&4?z{h0`_66W;K6hi~pF5kBI((>N(*qg9YYhsp~ga7i}V3n@kaCXo>Cusf6 zGC#3S@h>;(Z&Ci1S>;3Orp^y76_(*`mGLc7ekCVz^`Bcw|6}YcIq6H3@&vKDnyotT z$iKwXf4jsBgj@AjK_*h0QiUKeUGf6+ASNkFRtLRo>rO3vs`g6>RduiJIwCo)cgUl0KhTZ) zVNm^*M|Eb`oqiZ>tyd)%yS=fM^qaTw_0zzvV7zO1XeRRktQTZ4Rb=4*I?G0 z<<;e1oyZ3o3d|bFx(*FlCoVcyrwptW!I_kTV(n9%#Fp*@EoCG>oOI+Jm~lFSaPz(? z97@OgX3#rA{868PaOs1hwSS-Ejn{?h?A@zZhfMSy*}nr%T~EY4bKyS)<$ZuB1V^}| zJH!}{sgu1O{gr#agvMra^OS@2ui{Gv5jc@=HBs(7=Q0_+ zM>|;OM;?^knzDnnCD93V*P;UKDLy~DolvaLil35-qYu$`Bmu;;vD~EWTj7mhpcGQ>%nYiq0q8p5#fd)1&8JQ{CtDzrzN$*_?M5 zj3wj7VWx+T?E5190p?1~UHCbgsP~l^7tibv&39!P-dOJYj=&&xzQe!fUl#AzEQFZ)$zi!HX=7li!9*e#@84n4zQ?s!&~ z=ZSgsm%}}|?c>7w8Qn9<1>~HVCxKqF!bo4sh#TI{@yT+^7{ub!Mrr3H>yvg#QdM#{ zQS+Rpoa&NCUmEHwW8SmILKmn|+zi{u)c)~)a^QH5yvv~Zor3>)>Hv?U$wFE8pGPme z$Cz=)wvDF?|CICB7$*!K=XAC3M`eLAUY^}8Ilk?Naz7%#6p7bl1HUqYXu!j1N_gqiE-A+lH7*gJ zmDVJTSOBqj_~xng<#9NkaoE5(l;NqN$Ar69kHLk`jOg9vAxK*?7L4118w|10IA((} zH!u_pz^wmL)D@VcPuElPyn5>KEwgZll;ojqG*b-8=*WL5^JkS0g`;C41z_vLMddlv zVYXKo>Ri~pPP*Apw;1!zHpZqGn&_R{u=vzOG-~V{M(ut&v~Yo7l2$#fR_O)@x~=G9 zb#eeR59rw>$7nj)hlsS3TUX>ZNt&Ptd)OLdE*D0Ddpx~-qqX_{u7I*?c?Z;Kqf$Rq`EGv68w-p<>8bH681-;!g2?s zx_(Zl>_v=%Q4DD|sfutGH+nPHMUA~zJk->MTVi-nHC=#2d_tp#4i~$~uLSVnxde|* zF$qJl7UR&xQ8*U5v&-oU$hBq+#NDw82lHxY+HKLCs}OVfUkv2v8gZh=$nS(Y1M?c- zrsRDzu9!oS-#wRT_F2NyTPC@$D+lL57 zhr3AiH1pQc7BHx)NF`JqvDU<-cyp>Z2+eeRZa;eKK-pHRuU;vt+G=;yt~q9Zx9NV- z0}tRq~*mM%XY@^ z7>10#5yn`>mRjSSvIlG-&fpisq5k{dL9Fqium2u;UNi=V{>ccO<@CqT6P7!e2EL-b zIBPU+rsy)%!bxL|Q5aQLm<8Jn_e+P;UB9+MgUa~1>x6LvqV8^RK;@sk!q5|ebAh|X z5nG)XtS!!>z|f0Tw{7sMS(f+n>Yp$IPdUgj#M}^B+31(Qj?|D`H=``twHmpP+V`-1 zNU1B~SessTU z%Ua$v`I(N|YZ>O}=99l#fzND#zCX&FPsSR?W1ur}7HgymQeAHthKV^0Igj#mB|tVA zOy@cE2=G5=0tf{m zWi^KUCFMZKc(n5W@9lh(l!lfz6+7?-x7svpv4-7}>=KrVz~Ng|Smj>Pp*apKgq# zFvPp8R>eRd#VDVtvsz9VUZZbGf>z0EgJvMXhoAyhnW9GARD+f2%vC|vLs!WfqOvKzN~^@HPT&_xONN;#!uv|`O0eq1V3x96G0YA4 z?2t0}$z_BSS3pkP3<@wt^ud7u?t4I>RCFgUQwMoAQUW-Zeuu^lebx6T;lJ0l$0K3! zwkW*EG@@DWhjGuNu9E6%*%Tc-((A2KszEVH65rD$=5IEtE;eFTZ@(J5?e^nL(9tIV z4;y3%F*OV)f1#eOCS**%ZJlDWrPhIQuaAZq@t5;;it30LszXaElJc(*B5ZnwSOKmi+yC4fTc}{rko2%^VL|~n)e^SJr5czU< z=uIQj7n|_E<$2h0pm$c3r8J^{I?2!RzOc8rAV%}ep>aa^$79$~`>O2#rUA2g|q4QP=Y zwkl!otK(b=W4uO}&4#8Y7*bxy`l~h{6C5w4d7S6(*Sl*!2Ed_k&jazcpOE&GbU5)B znS4fiN%L$TNEJ7TrYrZec7gC~qk`h!j|%v3&EQ;IhacA|qSr4D2MWtZsvp>10u40NE?&19BTD161Y6M$fok$VU;^Iza{2*i}{TJvRX|AlkjO8PA ziJSxVB>AYwb`+**N}p?mnr^KWa(~^jJCU#$K{5PMriZ0^BwcPGt?#6TXuSHh+Gq^~ zp416GnpoyrO)s7{lIp%FD@QOAbcu=61aI5Am{rt?SgL(7!U_7GaDg0 zidhkBD)Et#B1n!#yqDSYs9q+s<`5mNusW%&p0J+~_O5h`iexxOBEE54Dbi>*K(m=M z?PO~r)LfRZSrNitv=~Ns!7bx8YDWNR@E=uW$PPi}JkI#Dr2CDNhp7R^-^o(bhc+_q zDvaB0u5qziXZ060=`skqTE6u8hGUZwp;1~^OLajQCP+AYaMrjjOiL#|ay;(F4PC#(>|^v@kb zo@R_lh-dOeiFBKh;*h|D!U?#+z$YRY_))09VOhx!G3>PP6@g{K(i1u6!6`KV^Gd(> zIHhmE_*~%8@$m07^U8F+Hp#$QqPCaWWRTvAy@Mcej8+JGLw(FTV&LLcVY~-mOEemF z(G^lHmE|q`5?i)D?ARHMRF5@%a}qdW_gW5Nro}`Gz5RiHRJ*Du`(2IJKIgekN zTHsnaGpX7@&a%FCI+KZS$RLNx6wN`?c7nwGP;)9mCMXHR(w?LyT@g}=@% z8nv17xstKoxo`&oZc}*reCY2x+mgRLB~QchNQR>zPzpVyTvGSSa!h;vRB^M4vK|kH$?R%6HmE?81cDWXNM+Ow_2G9wQfu z8LRqygZc46kyg_S1Xc38uak6@?ic0Se6&f+Gb9$X}*7+)gbyWxC0ON5=L$XTBQW4}u zWGxD0y--g@?Y~5M*Cr8H_iVHi_L9b6Lc7r*iZFJjBFI8O1^T&Hn@5MUkfGU>zam08 z!|>KctM7@9lChasWjIzwW_R>vxSfa|vpoTQbR+FNLLp(cQ zYY%mMn(Z1L&*g(Jsl)PwkBd8@f0za#EMce8uLpVPuLXmz2IU*UDd`*`WuOCjH-{AU zZBhkrRB=7Bq%Bll;Is{>cc7LgJwbDHQDUS2bHPwDbS(iL=B=>xqOx9M{$&4LZ~8_= zjJ&Q&v@6CNS*HcutNOogY$MirE)q+FpbHC>#3CU)Fb16RVgCf<=a-;ZZ&fvtmCRs;5`67xuePvW&oW29;h z?nVM-Ddgh5U>N`RW6sic;84uWFymm_iYo^4CTDjieZp?&5FzB?MAf`(u-+TVs$Lt-H> zU}8|03rMi2pR-O3K6J-+`LZtJjoTM%z5|%*Uh+Gk?iAM5QZAaj&y+d4ZxDO#D!&y_ zXIvuXocZ^P!)MB$#1UtSqdq13?AUw7al6XJ^7ymFNiPU_;Mw92;v6xT7}5$c<2=D3 z2VTggi!fuq#m{!arQ&sQM0yb8>2rcwC>W;L$*565H0!%fXy1dV!_b@81cNxXzK&21 zHsK!a+@Qjhp&&`(PlckRecJHHEN@C|_e3%Nx**iAQsa_0IhpG8=3uUneatP?k3Dq&E%k=IL)*62=*|WR@s37`I32yEtD#g89s(!De-Ywbhm0~_WZQ|L=%C%&9N_$-O z5o&>bg!^1&@Y%`?Ubq-`WgaSAsq(Hf$(y{xP|`mqI#eIBCr9MTlTs5+i+)u!FgR-_ zc%xdbaKcwQk`vt0w=~l3vQwl!)WaSEca= zv9V?&2-}c!;@EY(po`V1H+2;hJS#MF4zHmZ-D!qZi7X=jvqEo6C7q)~izs7n)d3@Q zK#op{mUV|}hf1?}y*)LVm&5BgW3ZA&?by)tF2<&}l{i@50ic_)R3q<+h~sdi2}VzE z;d3(GBtQiXVz7qvg zj>L_Y47}p55}8GrxOPGAEob^Qo05($;9xS7FbCV7opg*L5E`5*@qR)}Y3#|wZ0|X2 z7A|Y}E`w2fw=&e+*fV&h$S)|nS+B$3^Cy%i^aOCO%iF_>X%uS}O1s}_N9SAw8qcCm z_JPc-1J6HCr-ctK*y^zKXp?=U8M223Pa>vW$9Y?TfSjGwBN}nHQnm!{gnY@trm4hC z4jVy=_#H*Wx4Ar?hjRfsuBOT8`PCN%q+=bL-+i(?N_1#nz4L>+))9A7EpDwtb3i^& zw)j9I*-$Njc{)>2&{l`IuG7}_`?`wZ=_2rW=#W(XCCJN9sUJ-@)xW zUF6z-a?I)R8EQI}&LA`O?68{~ja$dUkou>S_}a1PAC=aOvs_>YE8OBaWDY=seVzEs zasT0%k>1r=18r6oohn2g-^o6qwoGDF8_81m(HL*`NOL+hK|giuC2pqYk>yrz64#SU z$N-SyUGieMdtA}uNt9Vcm?U9W?x^~;@Y?RuFb&vNWPIvssGtw_ek zAiV@F$EN00b}*I8aB}t~haLF6#mKx^nhArUYEFAo}WrNYq$Qr_VxWR)%Chv4eccxsc zc*UgQva;3hpj775NOldae5HHk1)aE-(9Ux*V{9I3xu_DcfQNL%@(|x?{hW!g*%8Go zC1%N5u>;RR)Ai}Bvy1&_{H$dxl6z{&b%M5_eL^gGypDtIByR^0NliFOtVs*F18F(3I#gx*>}+2M1Zr;-=LSY~6=(XB z0g)ynd#!1VC@0w|s0z9nb@!GhqtPA+mRkE`h6)@VAwzE6^d27~N+_^TxGA)b+pZWJdFpCC2ffB#VUi^v8+AZfs)iiw|!NevTs4s7(A z;7WBjMJqmuS~wbIp+dS=xU`QoL<$l8GTQLZC`{dO_E|dcqkWpgna0l0MZPsV8TT^4 z*paf@2ienQf2v(aOm@rRoIf2O?f?QvpK1^E&bag!i_xc41dK`)tcJk%9=QZew5}kA zpT|4uFQ)3iev@e6@>f&R`Wjs_p%DhZfU)Dq36%}|O$a=WArGYIOUifW!YGLAz2Kib zYrU6R5)B`de-5Wt%5KsMV-F08W-JX>ceLv9N-ES|3mR7vRYDUOAzKSq@LfBvk;BilN$$FkT3^Gz6`j}0;bGWsYQp)@kZ>y0 z-+yI7FGm6&$1fzfY>Gd})4EhkJ~5aC)FCM=s@lo$wjN1aWY})-JWbBn%c65+S}Vp?c0mbwk##{RQYSH)`4eO z*v)5?_PI%W{#-nZIOXZojITRH_huYEa9rPr)ew^h?H`fiv}7nj8tJ{Yd_Uh+{Vx;m;$fFCvbL5Orkx50TW5Y_BrHr$sZ%qYfU(L={v^DXga+ zgbvz6web@ngDn3icA!vSdfLsnWSD#J6Lv@NI@$YbgqaTio`M`r;r_W^&xQpq?sL6T zBW41XKxDq8{Q$=@il)%}b|dgt3mk#elob1p$JfEpMJ(hVh;9H(Nq?n?t*bW_8G-+~ zY~sZGU`^ph$RWc4x;X@k3*s_gIzt3AOC>A>^J_v}B8(e^x=L70Ty}?enJ@rGVo{!E zVBKpDM36nZ%5lI1>Dx zh&0eDcHjVy0{~s@P6q_G1A+3_@>jAyjgRHb)b1VZe}LRy8^Yr6Ug|Sko?Qwa9tB@Q z91PbP^K4pgA87nb`t(vMt>U?z?Zd;J@xYI9Fg*G5nyyhRo5Xod=OtD)X?^4(GkmKI zjh$3Cu@!06%CaBJHkK`u>Uq^otmCyxPHLX`VlZ%JYVc#idsNgUI%Ox%rNM5(7nvYp zHxzdNDMpLd=+I3vEaCirISF$?#1RBL89FZZm+KPag84HfC;G35%wC*~$TYr7NJ`(2 z)V&ae3+e!SmVpl8eH3Zn^C5CydmsPv-~I3BN^%?Z=hWx^_p{^-d%D5c^}h7K-$#;| zTKqCn&$0eG+UM8)H+#t`&Mv8K>-H{&9B%2Pvxv5=rWreR^!NIiXe$Xx+}T4A};DsT%D)%wH$YP=1NO4AP^67Vy}bBR8edXeHmF zTkpX^QL9}-N%>)v0WnH+qLGrdigQ6newbeH`Gv^F>tP%gT&Y0UxAE%3t1r^L4;5(p z;5Y4qf3c5ynRM#It*BW?8W$O|e<*M2U%AL6!40%nooYpGZ?)@!{oDo!?CL@-(fUXW z1XXp3y7(#yIVaClrdKD%Uz2cFCsKh|(kJS^E>W8;-5qsyO9fNKR&k5kqSFN(oi1qH zWCRvxX4)gIqTvwhF|GT^2a2dv1O`~cOlv%S@xby_#@*`V(^+~ntP=Pgt`fw#tsq~M zNp39HfX6#qzs#*|6?e9-5BiJe)!Nofz?jtO47WSamc#Eit1B@9B30{R0NU5v)#r#R zuX>pPiv*IfdVJTiZ&f;QOJh0?9MTlX7xnH0M+24!y z??ivVsalgQBKH%r4Z_tPUvXV#A-)m{M>DbtpND6*^DH&s(W9a_I63B+aJBrKlqq)+ z#)%D(9eHcmvE3_UaxQvup7;=sKnV;NfnZ}7za#gL7^zDV@kg|4DUyy7ss2j z)+C7^suJgC!~UK++J^lLe*0RT+Rw{5)$H23%#1iex_jXgGhLQzo4Q5&!2k|yR4FaM zUQ>96kMrG~aN7zo1#eb>z4`-gV$-Kkv;^R=(;BdLiVE|+p7 zGu@j~9xEHu`CJu=PO~+1=qypSckMtqQDTAN%DqE}s|Lv3<(%Sz=xmRV4~clXH+QKW z=UdR>DCvjVc(x?zAIPMn%dU$NoLp}k5QTUKISE>Eu#NFu%f2cdSeJS4 zB#zywthI_L{-KtExxf%53kwV|xL(Y@@{(Z27H`SK?bDVr#_N5c)+pz1}Mqib_0>j81zN6sN)Up8S(H0JXwUbvW*{%{aGbORwE45`5iIlD0J=qZw}RQ7nhsuSjY*T3#eop`3d)V^;_Jb$`+NEn;T1fIP? zw1Sj&{wCD{#`rK1nMd^FUrNma77q}Q%6gTRCC-oML%j!XdV`HppzHoo_u8sdJTD)% zk>Ho5crxgwoDs}=ZB4CqV0m_Md4}!9?8=;2hZ!0S+@8@h;how0!#acP8xK_L2mZ4bx@U>GN<5?9yAw$k6zvWNLHL zj20MoWR%6HrI2GM*vF5S&x?KA_PJFY5HVtJr&8~vOt)8Xnr)5FjdCDzKLbxye&oe5#APH?`aAtzY#xO4(GYKJf(=CL1ZF@&cB%YP(IT`7v`n!Br z(J!R851l*88;xHAt;0$9S{`j1{Vh`wH4gUebQ0q(*4fL-~nJ)A6GxgY@@>jQib@gd@5(YDqZ8U*Auj zs{I;84u02QJba`H71GGY!8k4!@Jb;p7fa6Zh^8LBQj~FEOND`w40w{j$tQwBlj!F= z0(pVt8u>R$J7-(PV1rH&?2q%bgN$leL$jyU&kCL5rtmZmP4~zhA#q^cCW1>ulGLTs zg>!WHVF-I7$9umBrXYPIzX;<1d4M=Yp3rmOIQQOx$MM@ffxwZz@Wd=#ZG$IY?btYd z$p=YM;a9;A ze00AGn5wPu>P=rf0b=u3!Q!OqjpeF_xU;BfcEkY4e}IeD*V zq~0rsjCvv5Kc_)sGsPHL3py9gA{&8J!=Y^JGH4jJ^Uu zg*q&-6#$K~p~Bf%VLwpun})ctVziZ%!3(qAMOoWk4Om;|UCNKj*tC7-+lQNnG#uWb z?5Utq2<^wom9-Q7V&OzI>dLrFxY%1PD5zzI#GiHA@3xQ?B^%wRGTvV@`CqE#J+8gZ zEmtQ_JOI)sZ}iKO>Wa03@xSBYJC)b$ib$T5-Av|7A_*{%nPdM4%;!LO-f2D%1$~kz(L7%8e9umepgIbEXPj?oQ);>0cv!WU0mw~AHmhw!J*b7jEp=F);F)J6GW+=;t=0Be!wm*+P?0N?yc$U$KB{8>gg(c`V$4l7_Kh{IpHz{WK`yqk_W4$S z8#=E>E~)YNcv{?41A(d;6hG*1BIV;ImycUq?VMIqwY)}S+*)Oc;-9%h6B=in2{er! zM|N66ODbm$qIP92^ia+=#2;&_$p5ThMo-*UL!jV_cVd6!F_;1b7J=2SeM$jOmzsopDA8rgem-F3AIpkd9b zhI(=pvfix0;Kw-{25;6W`x0fWtHzmxqac_Ctys;)08vI%*X6J)AODtfH z(5*#RmduSMOZL;w6{F?FqI{*8b%}H(L%VoWlFt^y&;37yy$875#M%D6Gtx*S?P^!M zd&-{Pd$o^!j(yyYd%+ECjH#w~3^9a&L$LuHFvSK;2V+bP25fo<(+LnD0g@0PlmH2Y zUJ@Xb?>E|G;^ckb|99=B-IX*Njik}cQ|{+}%HSiLhuiql3hrtue^&<}^W0DGYZyM^ z`IP!s6%N1q=ts+Y)>SB5TxH4z$s+UQCjO7I-jzZ>T^SYcyi&MNR~Elonfh~O@jaD( zU9P_P-pVDfS2n*{+4@Fh+n*|p$90$-rfROs*IAtJJuj5&#roKAX|6C;hzWo6oJx(87^c%^TaC?-@Z01=JMfOlAM9$Tnsh z8sDx=6+y+jQCK&MR(pS_gNQr%ne}scmWr*gLmx(B?RQWZIZo;^s)Vu^3hN>~D*s)! zdqCSk2$fkCpfm&dP0+ecM#eDoz3+8QGrcmbmHW&Uo zuN}wqdBR$YIEohdy3lXZ386G2)Hg}wU^yL!crNK?b`fM@s&EtF1mLo>3)3waHIZ$B zH2z{j>Wzx{{T1PDLjO_d-^%b-S!$`S1>$JLyoTjwYbx5>CjDPY>qeOhI^thL@YWd8rG8ObFG=-ch4oTJEmF9zlf_{vFHuG6x=&PtN=KWint_BZejgmWzIbH zYb)bZ@5y0{#KRsaYj~* zjNUdOes>51L;GL;9&b|IMf;yNoZ&6P$Jj?qbncD|?#CTZ<#gxZOmp zO>;`*HI_UMwMlM~eFyaeX&iNy9DA}DbL7}}i0MEE2Qidxil%wfmSu zMlT-qv(eAVQKfSYf8Chk6G~^vBdRut+7V^5Dlaqyo$rg9D@6JKWA)PfUOWv^;pfGe z&0_Dp!Gx`_*3ey1cnU|9ohgPHh3QQ(aw>r=15b#OMdc63QFGPf zqK{5uQusVc;v{aCu^*jEl&VG8gpl2?cHn)O?UVb58Pq#GIX74wLQN{B5DD0ox>yuo z%0=O=WpB1HXEd}~q%rL(_R6cuF0(4*6<&3;pp#QAIe^Vd)v-^pcBOOdOu; z)x*PH8r>82b_%zrxIZhWy-(a6Igr-ZKX~k2kr>zoG?-2W^_bc1KZoiAI zNjWz?bkFvEB)b#^OE6OTz+;F zk>TU531K}99`!I5hWd?a>&@!8531*!-wV zQ!Muw_sKn=V1tqG@N3wkRf*$3_1q`?m}6qW(;2A z5bp)(7~SSAiy7lH1^8+LBRLA?XVQMeBrpcEb^=!s3El3P#-K;-}5l&Qh!7G0A{Re
y7;2f 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�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
12IH?L;wO_UuEU=S9$ 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 z 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ⅅ*Zo8M$1OxT<$h?nnT}h@j0@!wH<4HxP@|R?<&j9R3A#lrP$k}*jz9?Ss&)Z zTaGq5-1U}Qrzp=fNA1z+XueY)#@l`IS|8#)i_HkQYVWn=ABILEwReZ*&LizTB;gC< zOy{9!uVORRv3CRce@A~Ir-q>;c7itOa4$XbqFaplpvYFi=@p%pP=_p|C5r>yRZL@ z-;T9ki1%Zh?%4Y^`SYsNo{(~fTkfBvHLH3ukg&1J&3(C$sZm- z`*rLcPySC)Zb_0m#d6O)I?qf*8`0MK&y)0kIq9?l(|vW^;Iel;TbeCV3TE)}b73d-C6drXc0sYq@o6=b6^%a?}mUK8-qO`rJh+{bO`=vH8p4jwJtc zXeLtb63hLQw3^4}nU<&-lKU>I(%z-+hEnQT=)PjpU}Vw{9mu~OwLLD$-E6s=>R|8j z)Gri8JDT%+4c@)jm3i@a78!-F_1B9Qo7)|3R$b=4=m@0tPWAhez=fm@LJy;RQ16fN zK^@=T*7mq5H!`W%%!cdPgDv-0PN2-&NV)G=Zl?PytN!kvC!{~mm;959&Bp&n+qu9? zIsA`*I_K2ZQHe-W+4gdrbf>7kVNs+DDNz)glF&^>A*>4Nj&xD9h)N+!l4w;Dx~k}g zjnGX+p$qkYfA*PAJFWBW`|JDqf9Lgj_w<^bd7s&NX6Bh^p36Gr&970+G=*D0y?UK+ zD{+UQe9dC!RG4@(=dTm#8{7voIpg?~oL6GWiDW z7jMkg!%g@`z--4`)q0<MV(>IB@>F^QE0e3uWkcM0h$Ur0Lw^|rO%8|v^~U=yr?W(Rrh zZL-%MYVtAzx1B{6S2Djj-VPVhKH&(ccf0kLt6R*phEXsGX0jgFj6tR+?KeK@`1YIl zqLQihWcqlqh4k6=s6S9|OWQB16IUN3T+O!X4P0k#c>KJqB;&7)J7ziK8D6d5=A`cn z!$H0GSZ}fVjG@pCqR@~vhuSMWZ>NlY;s3Idc@VFjZx0~-hwvS!SD!1q?O&{Y!OQSG zL_gs<-s0YKdYx>)_?)?mlsEcyC3C>>enEO)1Lky~-VL_AwJs@UE`i=~H>Bnx<-GDH z?RB?f&rf|*$&??Qu7}yA-v+;cdP~`U+~ZQ#U*KJM1N#5W`%$==P})H>qn$;5sASqY z-i4$;1XV9fdz)GBHsVf?u$}=|!^~`+znNjZYmPs@nVpr)YR5aA^l!mz(DLei8mC`g z%+!Kb&=lnT*^Te>>Y-;wc@ujonc`2S>!BU#hr(;1-etDD&99(tVG@jmaX&Ebe91na z$M4$ka%s0;m_I6+!H#z+>8oE^%-jj;En&xpyoSZh^)L}eKtJXW{(G`{7Z>k&$nYlr zu4I-t-VLNb48cZeuf8v>FL485JUk6DK5XS&NStG$cJvp4vRi zEF{k-pyg$#mf+3)y#Jd%tm`$VZ^>L$zQ2Y_0neMndy(T^if;!TaJ;oVm#@ZE9RJ}) zXbR2vVAqA7caZIGRq^IfW`9<|+>JNimZKBt?}1*Rg*^V|ZW0OOjL=OP=>(1*rFW>n(S6F;fMa!j;g5c9!4AEALi&9NKc0=ZzE&m^F?! zO8UE@52%+@NeRAZh@gSWsvUzu#{LEckYntF&937DT9@5iM70@i_gY5FOzY0P>K zREA0*^OA{-m9ozkJ6>rIk)i=}1aD0*uep%)*Fh^#?;!6p-*9n(gb&#^>&)qI`{Ua~ z`EK6t7)NpgCNMO;-##II$!l2G1ocj{-fB&7!Dx6KqFMajVD&8C(a(L#mwLyGBQ#1W zZ?bg2v~#>mNWTGo1oe_#g71{3%!8mZRD%ATU+DYEN7?pping;e1LirrS`T$dABV3& zy``=9vu3Q@!bQ!w<^)|iUaYNN$VBMJ!_M%^yPJb-5&C_yV!*7x>rWMl^-j|FgGWKV zU95K`anHj`u=JCh<98HVL(0XWO zy`K~J75og}K_rxJ4>N83*2^hmhLb+Z0Q525y4L#}>9ejcW=;e3>bO&dxQn4VTnWn< zthAjatXIy5K4Cv6s|Cz9yngF#NBVo;vq8PLSnp!uR)K^KZ0EB>GuP{nd20mBm3XyZY$5%xP^e|v+sS$>5LX!* z!M~tC6|}jbH$Eh7d1rIJxrp?!S^?9;@wO)YZO{?4yxpv~J8_SJgduE09NRK~CsMp} zyog^AFt0e?XGlL0;-FrJZwbCR#4Q8~U$QOEcvkg}`D%Wga*OZ>)ZRcc-TN@hzmk9Xf-0uk`+=uRC!MgM{UWPyBv;^RIwu=9G63 z`9{NdP;W!)eV4e8A?0Q3|D1JS21U0Xw7l^K0n-t0DKD>CNBV8>3#j)d>n+r}m?;4g z=9NEwzo}b)FEV;bzzoFO#>;EYAYVlYf_n9Nq^pT*1zn*Nj4Q?O+${6TYhLrV+iDjw z6LBRjW8A?z*Loiy{SX)l>eY7k6LI^X^o^YJ!`2D17UlU$S?`04^HbPwk%j@Y1#ds= z^^?99TmtGH>3!xKK->hF2k$`7Laasg^}Nxw-tl4v&Pk+?Tpcif;q_bZYSM3lB&hdI z>penT$(y|TEz9=b{myvmINvy6DlpOSV!eLSSAm*9H&3mje&l^tBtl#>m`Q`qyk9bZ zs&{aWUlTC(@Wrg}Cen9+&YGeZx2d8lUas{6!ngq-(1$dux zyezXwI4N(kX}~;;SNGS;_!hxZ$Gg#bcMx|NBou2?%na*b%pi_IT2|R=d85q(=1sh| z@0(LeUj{0I*26*TtxDX*a49q`$y#UG^!(p%+n0=wvcD2|zr@?d%WE2ur#Z9)^&YX_ zTZp?KBs{`)f9-$nH|Y;dSxxl1fce!a?-Qhd5nciHavCMU_cL+(pkiD41nl2!%;K@$ zI%-X)ym`#a5;p`)8E(wi`N(;szZf0_^#-l?cj5})%vv9u3vzxH`HXu%E@uC5Q<~K8 zvGc1ov@^#m_p$XO&p=Rb73)3GeQXh1UiHS?2F&e_SFYPUk8_UWt!BL^x<8{+#=I+&3aFCU2JP+J=_&Aweb4Ayrw(8{_wox?QFdzZYyRg zKs~4iF*;U%&W+`IeEBoI@@hRKx-#xK-fpBH1yexlfgxLh?*MTnqFi%>ny_mt@BjVQ z8y`aB)9bUTe%v!)`a9lMq<%Pf8 z0rLW0t=}g|{|t-;^a% z{z0g42lvRpvI}XqbD4Y5&Kj2X)=^(!emb7?{wD+GC|-urROmLLwuq64`#7(}%d%VLiz2gCy&Db?bkLbJ=GDrZ*m)hgGt=5s&%$$M!8ynTi!DnXSVa%erU&MhuI$2t}^;<67R(s-XF;G6Z|``)I+9M>p_o` zk+A{O@_*osD@!zAt-V;;}E30<-C3| zD#M$^TXuB%_*;VXLto1=BO%jUj?cm%VGH%JwSfMn>u<5=1EvMu{8Vbz4ak?v_5Ko& z>6IjPthW)~#hlP*_Tyvgn|KF1-umRL!9xFqkm&}evOvZ;- z`0P!P@UD1yrc1rrkBe3Jyh*&LK9?SMIyEV53V)nsy0OhHZ%^VL0to}yy6sH8$Hs>j z0;USy|KH_J;BE9jD6juT=KXl}xH*q{%U+jlYCvW^EaI~jwtm;KE$I2d6;!|Mw>aLx zPI+5?RK#o~&vwZ4rYe?yPPvCZ2X6hwGy0o?Op^94E1(;l+w z9m?WfZ||H^t}981k>89-f8TERvCm;0&`@>J=nj-W2y3FT(rGg@~|99EO-wT*Fcr{2pN*(@1 zK8cm`&SXnH7R{_jZS(F{e}~D;WgdoC#{tuWwIe7ET3)8a5`2}3s|^j|64-WLdR=>_ z-S0m$ug#%A3A}^x>Uh|U^f$q+px&Fk37)SPaSy{&FbKLh<3PfC+pzeX8eiTIm}i}O z7)APV5C@sbNj=#0@|<^xTMDZ|*55;6@0gJD5Z7kr1&rJ)t@Gn?t+LE(@GWVje2eg0 zDc?GyT}c|Zy=$H7coN0?zT^EKU*$I0<`2i)&U&l&q`iTJqFavt-Hm^E=X2c%ulD9#EpRQFtoGpxbh}5#;GLUn;mbQJPG>O8*J5E z#(G8mDe)4PvvunsbHBwF2h4qrcMa*c!Y)wn`PN&vH}`kIP4FteBj9>Nv{`X$J4-AH zm=SojJ#-{bZ|D!|y~%o45%&`uhJE0A$Jza+zn|v+EMTTOk2>D=)|(RA zfBw_>U{(Z-Z(O?l4#XFS$&R<1^(Kki3lfg7b?*nz@@jjCujIT8uRoQV`*iN-S~TQ= z)&t#Kg0B~G17RGD0(qWDfA`Kz@y1A9SBkF=nC5u3oy{cuBKQ>4`Q!?xOQO^W~<(BtamJNQ(*zT2eKYm{#vh`4Q;>B{btq$ z%tXh#iS&j0aSt!3H%rD5>fu%5=D;_w8X9z9eT_vusoSNtUuZjvtq+)Y@oLyd`omE5 z0q?jY$BVPP4|Af#jfExP-pifegA!~Gn1oZl-$|2N^LWrJ-{*L^eO7{RP5o?h7V#4N zY~68D_rHGc1m17(>bO{$^o`&eknb&Cmdzyio*-@v%z(+@KL6&o`{`J_`Zi!>O;Gp$ zT+(lY-$A_(S?|n;xCaFe!7osj3mw~5di8mO9mnp|E5;=ctg@NecmNw%Vb-RG~HA?jp1#KSKI$#^7sdEulqo+9>jZwSn*DIocqwA%M-;+6pFr9 z$n5=-cZ{s!+0vx<{s_Ggdcf&Oqmxb-mk zkT*}%`ZcEq%{0gREa~UM7Etd{>;3R4;^E>UtgXOS?kP|1J zRPWQN76uL304F_Sem%{{emi^=8>|Yd3KR zAr*!me~i)Ng6=ne#h@uZFAT%M8O8#Fb?R3%iOd!226%p1?>DpKKr|3EH68C#((iyjK)sh+ zZ-e37;|oz}1M)mTaZawJtcz{?)$&F|L36d^?MnKmU^u9^z4iW0T(J?1mrxO8zv(#J ziDQ8Hk9p4vn)~qj`J#1La%xHXo-h>D`{ z#OeGcLB3C%d@(*71>-@6Pszun8woi-6IXl`&uM^M_Zi3hQtB)=g->e+%|^!)CQUWC z64b-#zl5A8h}!^LLB`SY=Xjp{lKjp_ogn=*T|Wm%W1eR10>s15n3&U28k19wxLQyT z^!rG8Mp2%`MM3i?9_@FRlcpuy2(thFz@z>75#mOGgb8f_>cp7$8*4K(bn!{haX3;p zXv)5jF5gR}pAO4F$|qhsUgqp4uIw|M?|_`=^rsCUIG1aMhxtvu`ayn6F+HDYMw)BK z6ftetO8E*?@Q0*8w6C$my#f;Euq|l5cb2dDA!%Lpx&RXS2hof=H6j=6x?wv&OVp@r0eUkD;am4^1ep;ccR(mZMN#wacl|k3y7ES z9smD#<(2*$Z5T9pFQ(VkmXdEE?*Lxsc&pj*MtldYw*tR)@mKkO&Ku;pJn{M)1n$>t{scF{ zb>Mns?(KSGE!b~({i#wI)0gxE;Ym<$A+MYGrr%z~j3-{gWVZjVe&zf;dVSC&o$|gx z`uE{OP_KM9f^QvhTS3Aewr+V-mEhJx%b>}gl&;?cq<;X9Z(Q1Yn)L>WyAUKaV0%Ju ztDrd_uRoQV->W43!FRJwd$wBMa@HHZDBC<_y^phP$T~$q_v1=Giro-2&7JZ-P5Kw$ zB~Wi=>;0Ix)gWO5+Y^;H);ehVIOY9;^oQWg@o8^e>;0Cvs?W2(APTDr^K2K-y2*J- zo2K6Vfo%fz`S@FdrcyjTkDNsMDKHDPylt&_4{^Q;#mqTy8o28~Gi^UUcK&-?&~(GA z{o*{*UkO)(dhfU1dx(1oBn)JGqI!sQ2%1q&d54nz9j@t(VXI!6yaeB5;@$!YbJ-TH z`p^9)^WFgIlX$1$^`}zv-uCWAQ`fo|INmwd`!=7=2MLSV7Ia-h#z`3;BDV+4GRONV zzL^}*S2*5JtoMSf9OklKc^mTo6M5r!cjDFh{f2y(^Ma+Vj`vIJ-9=oTda2@?25e7M zze&8gFa6W|r{mr5UwHi;gQhZGJzqJBPu7Wj6Vv-GX}y(*s|gb7u|3hcpy?Dejq%p? zzMi>)^lhOtXnSCJN`lY4$UF!dKvmegkZUwwc*mdqpLzGy$a4U>ObDXgf@UAyd@rwA zLi%m63)H*D`;3_bzo9(IEAO>z-RmVfo_+R!*B;_Mf~MTd>H3||n)VIkX#?slX~%W@ zr%iu8leKSmza?yc)8j>?XV6@VSL=5uc_zRl$9tzO@6$C3o9)C)*w5DWYIzfUEaQ5l zSI~5J%KI1Ti^sV>09xK2*4vo4Hqae9f$LqBQQlbZpqcBGcL3?1fia-oq1L;KxFq}m zyTJ7(t@l$~UUOg2{D{}@<)tli&Hw>WFH6=Ee4UAV1mf@vxW~7x&U%y7gXtSIrC&+6 zhxw%c43>j>m!`BVx4z6V6(o#cJD7QL=DLHTExa>Q<{~^&o$ZrFs&oj%s!kh%o2lZZUy3}arY_!yBqnqt{V;eF)cck#@58Th4hpkj3hatT$3gJT`&UF zd#UvnnacCPa3P!rGn{r7dfxLsT$8mUaXlS0`|)bHmGoVpH^_OFoDW64k8_3-7l-NK zo+<7hCzvhr;BYX>5zPoMt9+}1(54;Q0U}iAAjx*TygV}A^^`wuD3GzGS z>GFL?`kk;3w0se-@Hy3A=U#ef25$N0%K7cspqc5EuRUqHLod+s4e~s`a?^Rn7$jWE zwxHwq8<%_Q*olcjvk9*rznYM~Ep!0&{$aiE5w{e+fprk$d+R)OoBiH${OU;hdP~{%*`BywFbW2Nv?KNAaFQYINXjeMd!sJ}%~-s8oVkRmeTh7i zLA{q)uUBmE-}y5NUMJP{@fhCOPI*5j{ZyRO9q(n1cQv0&`0C$yd(uf|{*}c0rQ>}Y z-#qxx@$%@D1fTr#G4T?Xuq|j@QE&9+pxIkMJ$&JKn>pT;lz;wXJ>boqn%-|K@kx0% zJKk#@?>6Ek{HOAoSAr(&c(opWalEY^@Bg(PVt6BX>E@}he{PQX73Y4(OLLOo%YHw{ zlmrR#{I|RIBW+BAkKLNuZ+P#-tLxCMD|2rt&LfVOB})mu0O@-3xr7JV7PQ}1P)(`% z_+-|%N$*dk=3b{axYh*KK-+I0?=#=u^4Xi*V*xe6?Z+Y8FLZp3O=Em;>ftKVw}cx( zy}G^-CvE{qSUl$V`wF~TNY_JrdeCfe%Da|)+u;vTueOKUZ?XOgx4}&y*U!dX<{e-B z_Bf;EHE+@$rlt2=SJL-|hd{lz+xBqYzHBp;cnQz2EvSBVzs2!3al9{(ejoe^>g{g5 zAI@YB1rmN^E9=mM^1bqA)$;Bj5b2w}%`=Fg-fyk9)~sUYUYG%|fjpnk?^4gZ zo@>5tJBxf2G_Sv&u7|?2xvmfOK)v0)p~m+(aWBG0FbCZ0v}I5Aj*G|YArUm&9Pd}8 z-w&1EO?yXJ?{wmp!glx$#5;%sf|RpCnT+x-4w~PbdN_X$&$+`@pyjoPV_$dT2EZs7 z0`7imXxp!rH}Of3V@|pr;-sGeGeN!Y+46o)+*hy#zG0nQ*5mbfQPZ|F^~RS3%~N=_ zAMYYh(f2rq0QD}i-cH2zfuS%Ey3k?uK8T3*>h?Y9Y^}9FcZ}Ki}kK2ZWm4X_xYTxYNmZHgNb$&1d#|-kh?J@q2T` z*93PgYe8Af7eP}6Pfd{!E+);@&D|B|L3tD0at=M&)Uiy zJGzGTU+4R6DZ#zouobl4yl(CtuRW#rxjR1V_@V73hPV71>Gpl?`&p(zEXzE~B+>Qi z_1&BJTtYjxZog5lw(kVq26%No)Q0cW0lGp#-iL^f!BZLDnB5-_;R@jmiDs0aVLpqb#5cQNHy4x6E%^6n%4Z#V#MdE*)7P2hds z@oGI3|Da&+zpICt8Q$nuLG!g!59Y%ha}Lfx0p1FHmJhX|2Ds%-Sg*E+B;G=ArrX)) zk7b$4IBOQ*-Tpxlv!Bo9MCCAB*Sjji8~r+H&cmzWVtkiDOOXCmx+u@~c^~HVCvGH+ z1?{8KZaXpNN7e^TPp5pZlja?GA7np?=ULC=`+~TQumy(Qb^JUfnNdEoA!r_TymDWL ztUqpZyf0a=xAFd!G&SiwQcmq#veo+Z;~igscbDUR<-hPo@XmF-@}4Dmhtgih`)UDR zN#pJ(Ewh$4ig%6U-H%V!?hZTN8P;2RK5J7@9nJ&ye!@W+$7i!KXiC17p10N`eKWWP zbic{<2ZHa&lRon}@snT-xZ`5&ztZah0qQ=oDQK?2tH-H1r2hmqgL-*vH03?xL)sJ6 zgBsA26+1n&DQ13O?Ym=A(eAXY_=bLI;@5gOCZ~Xh9X@}QuGmRkqb1)9n+uM5M z#7zeYr+;1W?}AA^q~=*a1kL?;HM~Q<4`C_jINsd*FlRe)2jD2UbugK+A%W*5&l8j6 z#hEw=rDOs@s7MEyDF4YZMPiZT$5!c6`IJXO?8l&)gGc9+ne#0<9(c{@;4bRR5se?;`F1NGSZVH&0zwm$|BQABWzb7XOL%iPxV>&G#mK87K$p z)$2WtiE9TEIV4#^ zvzYstp*^$$_xLsS)Qt1tU%4KESHsLbJU2$3ejx2$+JoQwFy|{i+YbA|ZTE|5_p#rC zW|rgmj$`Z3@TB$B!owV1Le5!tW}AzkIk=ud90Mc!S$B25XPo@g;Z2b5SsM?hN)mkU z6So*7e8JXr$-a@G<52={@psbudll(Rf5KP>>TR7edHrby@pIuFaL48Kr+W3L<9*`K zpy`WO`>A@ra=fGe58k4sJg=VjB@VIvfmegve-@>rjhA@$pGiG%7?g0_{b&BeL9@;& zPgBz00v$oVX9Mz$Ph~T{>jT+lIPq~92k!Tb+IFqwiTo8bjb^34=Ty?qf_b3cS=PIZ zxUbkVaiO_7jkiP!JtH8+yJ8w>#T9<<)w#ASWXaS2L5YX6t>#_>+}`k9WmiDDr$ zo`toD^KUe$RoBe+kH9j*@9Ia=2^Vp%sNQcgu6+8w-_E;J zKc~PuhC}At0=$?ldwiNVF6es; zvXt-t)T^Hd~07aJm2Z^%-qf+7DvoL+0TEyxSbF&Pz_l8?6vx z?I>Ljf8aZHCFgIT-9F?zweXoMC(*>yl*(( ze)vYf1jqZH^{yjsJNyOvLB_?U9Mhz{b?y92%bN^_%r}m=#A@EJ3YUVGcbWCRMBE%$ z3(G*fi&uHxtr_)@%;$LaQMw-Xlm3b?xwZxB-D16+*D-g4AK@E_E#>@ygOZfD&(Pz4 zhalb{WNI%+d#8QH+9GTO_3CxzMql&%1oVNfAnhSq!z=Gxd!MS-Ln0C~_c-1cNIwPU zfO_w;j4;x3~4)wt;g(m<$tPCMU2< zxrsvRq1opd*Xf#s%wWeW^-y>t$6!$Jbn6{Q+#9d}GV7siGw=LN>mhn=$b9H{w~^;J zD6}c;snc&Ci`NC(U{|SHCg0IA8#to2gA=`qyGH*Vc!;QZ+ z$4SR~3F&W!dqBNCQzq^MChimX5jMfHX54#ojaS~8cKlUuyiLfg#;eE4KS=NUhWole zz5T3LHdTn1P>ZcQo_V#9p6|xmhRkUT)8pjDq`wwAf_mqqOsp>uHygf!&p@sRFSXC? zBy4$goQ$?(JafD|N&g%C0qQ+$y}92q4*>~}aS^ki@`^V#&ubqt@8E6hPcC1YfQ1m_I`+XbN>Ja6VGpmY?Ee>GF=T-jk|_ULjNOlYiF349C0IdQYkzdWTG3$2%Y2=di-@hEg@^t;6giUcz&q z6#RawWA)o7WM<>laFBe3wlY3|G+UYP+V!Wbip1$$FLHm#d`CXN&3HMVRf}htYuL*E zZb`m|w%uP(Tsx3(Z&sF>9Zo;*sO@w51K$2l;w`ZxJzm{GzV+i-TXVckt@l3SV%B?A zCGKgYkIv+H;I6aETv*ysv~S4N$Lr_+5}qR8^DqUpyw_WAtDjiMgZVHUaySw0&+ioF z)Bgwe^!jP@fHBkY#0G>+vrp6gsqoMI76zOH>Rn;I7ZY~{Tm$EFt=7H1uxgq&4jknC zCe`i-avtJ%TaYIT4}f|%Tkq0s%#onPc8d( z9ar{Rua-A5ivI6-tC9XHXa(x+ZN0A&_dcwFFJKVuOt0rnw)1iICY}kghLSGtUeaH% zlYIl~rMXD(Eg|F zc?0C{roF&o<{f%pSKWKPcE;&Psy)QGnQYwW>GnI4^l!pDpx(Qz_u{>rH$Z>r1LeDL z?c^S>yzA}pOP>RdO%0hJ@#=n)&r1O7G zd#l^}J(+PZfwu)-J+H2huO-~*c)i06zjs62iy+}$wl~yG|IUDpJ1;RnRAntF`DVz( zobt-}x{y3eKV-4$Ak+>9=0(PtjQ+^AcXam)EQ(&tCWo z)H~FAhwbBU!V>rhCN||hsvA9T&tJWMs{JYYUdT*bp5EWV{k-=NYJkK_dCPm=tlNp} z1$xhzM91cZ%%|kn@7tfx2f=e7<+_vnoLWop%_nXR?11lK730S+JFi}B$2>+m*zh-7^~SCD%md81;e7axH2Ku89;c$#+k@XDkOjxYk`VVYrk``Uh&)$AQ&8_4 z*82`|AHiB!2DP2%p0?WdP?DEhd`cUNeikw};?1|^^&R9m4Ednmjn?}nar58@SOc4{ zr!HH1?O|ytZ+|Y)-i}7mvz2Fenl$hh!XRF>a)?1TztzS;OgvM-TK9mFQ z{B0)(CfRRsyno@P=&8`0^sS){sF$xR!S~+bEOQ(261wK+6gV%`am&AgaqG);J#-;o zFSsA1ze<1O^0I^?G2(_n?FiRvH~)XT^+awfq8MrmRI|4bPelqYtsAcInuuj(?Gqm zy+7&ug1E0?D|`#7erDHo8d~qM{k1k^hT+xv-9!44f3eO2>RoKTvS~^Dt(C_DA6Y=Js=8ZQu@n@wTVo9zy zu1mMy&ZMu!xz)XF)jQI92NE|DBwWQL(LMg?JW1PcYzymVc(s1Vl5Z9)0QF9^-d~B! zGP$M#lm@8>zOMIv0$X0K2mcQtQ=SJz{i#wg_ayx_&>Yk|&w8IC?m3X~5?dJ`Wv-xQ zm2ElNgWQi6`7vagI^G$iUj(0mdcU*YpNZQC5)QNN!h}MPKkAltmcsy;_$g!_$4ggF zg~Ek$%{fpV)cd#f-c8*7Fdl|O1J<^xcJRtO*w#bOhdpm>8|QU+H5{#%V`h-&EzogS z@6#wzpLYj8`J%JmNUHo|Y9<*Mb$eGg~lnx`NR24y%E~aq4(5#PjCV%FZ>{LuZip5Y?{lIS0{KW4oEh;n8~QOPcZU z0%-ZB+wv95$u(z!gi36amH)Xv&AJoYL_*p5aa6 zy*ED3&LA>`-UM>en@cl&G5h&%$HMt^8VcUjlFs(d%AbL*5gU6 zaM)yTO4q|m(*FqCLA^2SJ*QZ%IS(4ZMIh~0&*vLk@3DF)5;o7^)%isW(nsMQP_N#< z@GNnYU?#i{ZhKg4>p|~RG)2SaZM+)vezp(DC*zE?2gU{o|Mq^i1br=rXDJ@-Ukl0q z87v1apZ0^*#BBx%Kd?Pv|0)(XzdGgHMf!^;=a@g(O8NRzzP2fo$+;kxaTU74DvnqF zADFLQ&2P$4m!^2wwB4L8-yqVAgE&a}#Pf*f@eN*7#4IL$1FQsjt}znv_V+5jtF+N$ z{i#IQjB&hMNPh&fPDy*8vEGU`c|Qj65}LA=@xLc)8Z!QCyFb>SN>ZPAb$_=e{p0Wy zXnAK??>gds2MM{wbIsmQ*&m;KRK zRL$|~bJ|{Yc>jJ$x+rxib2Y77**4)NpmH9Y#Csdwh|N?BpFBrX*YVzH%NrrCDM)C^ zc6RxH&VPT+_q?%lXlHn%snk4|L;5>A@cRX9wSI52-X6p~1QG_ZZP)3a^Q|K6$G@dL zlnmHu{y=gq23TvKq@2@~grO-=Iae$PB!OMWl=$sMnw{;=tam+Yy~azK{31#SiX zzT%bnP;1K6m3Rr6zqh3OUdQJI-Whl!snooFl;6#{2M73 zem9lE=10dHrA*!6KFIVwO56|_3r~aFp7z@PquwOmbCc=vP9ps~Fb^`lONjdtwnGy7 zpU-+Jb9gDMTqKmOc)zErBEhh^$?^V5`kYeCHzCv8jJP(?5AKHY%r}$vx>LyZSMkca zTO=Gd&*Ihg(4Tkhj+vI7y64pOQl+W)@Q&hh3FFzG@c5D!HlI7*XDG)D5C<^~rlIgk zAql=V{HD)L;^)JA;Epe)Y(41s631({q}$md(tiqHfO?nMe&y-Ce@Af5Ue5!iUNwA8 zS{YxW`C(HIuZA(@xL@kDTr(6TR?1t!`|4Q__sKRRiC3TGNszxr0r|%``753vzrS+W zG%O(h^G<%2s3jEm_haO5TR{F7o&5e2uwzJ^VXw}$mDSeSqT@XzU-zdCk1yt{5U6#srtm5k5~79 zCGu54tK)R^qOiHP0Phu!x3G7p_MMD3iTB|GyiFYM zDgT8xdU4piR)Dvq<2~)a@FwxD!mH!K&G_zwdq9sXcX{3-eTf?g(hfp2M0eZ@+a?sR z8#a5KatW57&eA<8Zkk*_@8xpK5uvH0C0*eBX$57JiWHL*(;c z5;iyD)%tsq@w5+l`ht2-VID*9rT(@5JV!cr9--}1k1G+pkKoO>=^w)PG`#M3D_ZaO z#O;QnW$1Hk`;kf4y&Ky3l&rG`*hk4r!)BsW-gC%P1!{nnm)E3A@UtFs3ESAVpriY1dh^N5dWc>THs9j)r&6=NP5J}y7pV6K z>-C?-8Ub7bmqT6NsnxHp=WSv4o7~SJ*Aixxf`w{mfNEpG^ zZDU$q9slDE!(6jSdq3=~uuOQ1A8Dd)e9SHy8uMV8*x9!#liNx*_>Tc=tKzxOeE*?QzyJ5*7KKa(n(hob%QW(#~3h&1FAjnTYk?MEc&)7u37l zdUq3d$~n2F7F2?XcXOV|+JJojPPYAC#Q6Z1ql{_IIEYuv+miHmLw8W`0qY${+%#AM z^I&V0^g3JAwg)Y*|E93{6t5m9q z&wvj>y=|>`Y;F;AkoeLSb4@XD&x`ul^2)qO${T4-<7i=>|lGeEu1 zTJPt?eFJ~M4q(ag*t~O)ZNJTFzpbTT+|K&5Q{H0!Tyr+m0QJ6Qy|)l|4?G0-fm`0m z)~n@>bqbq9c=J==&Y0n(9}5#ey$S2xMqH6ftd+r;ki&Ju(JZFR_n&OX9eEG-XHpM$ zhE2uo>H2L;`VMf1F$)YRkW52G@?QM@@j()(=%dH#l?!E|}^t@k0~hQV}r1-dq4 zzQZvivWnl>vEz=8lhK}GbBW{qn)LhNPtba}&w8HaUm18^`Px6);DZ+INn!D zKN}WWZzjGi|>!GrWm@VN-l(x}BX$o^v4x>g5)>l=ph#?tmEd z0{6VMOGZ13JQy|?;??nN0_mr~bWksss#4zfiTeyB$aN$cA0~3VkmIrRWeHjj@rO8% z#_M${+9Yj3+V7W+mnAz1z7w_IL`FL^{ljLYsRaH1;=~Q|DhiCW_S~Luf?nFVG6#*u+s6?x892R97mujTnYWS z$Dlap)zS{+H=ndU$owq!SlD#KTQgOKte24fF?bxb9v-#coy3)_On-#)q3RXse!SSu zADSHD9&K?w!Ew{6huca2IE(=G9<<&haR=a(^K(sMkonHA)n0jXVqP28E4?!lIOFk@rbU%Y2Wk88b2I}kns{r(Tz@87L@ zu6Y1v!weX;ly+aTkg0i97Uwv}KYtOO7&eRW@-`m{dP)+8Atf5w8tNUpeKG{#VO!S#r#GhzCCB1Wf<9{h^E_S?+cFZ<) z$=ks39`VYVHJZ;}0X_edk|oIBjQqNvuOi<~&>6J;3iF)^zTb%}$>0)(3Ly6_O}xTu z@8j%oK;By}=joAG!zSjG>r&D;hU-D=ubb!1=|$YrFbSmo=AX`QkjTRqGx)1h!X|-7 z+s#zc%z_U<%lD2gU$3r(%^Ko2L+0-ohHQV-^|K`2tY6dnV;gz)!coxjeP+v7;R4p| z;3CkvlfKdrXKZTNoQ_A^-{quf0?k3oSDbbx^(X(dB3?opwgv599WN4iFLb=^N#7an z2KAP+-d@B#3=+!5ykmYt=9lhzNT8$5PV+{_X9}S!?syN+70u3 z_jefe`bg~Uuo+mAB6lli=$ey;Vf-j3sDR@ltP>qk5WQEPnn!ULe? zZDq^*DREoiPuK(Up1r}$8Kt}}C~q0^Yx_5I!shD&%6pW2THe~ z=G>Rm%&Uh^980QF)||H9{m#+(+&@@Ad3%sg>*4v6D6iH-0`H0fyuBUon3M2oJ@`Ki zn}c}eIJgt~;u{X*LF?gtTMx5{TL3FyDagFJC}X&^-=4PpYJZD-6gH*z|Fb=8B%jv9 z2meKR<9IK`E9LdmzrV$|3-*JScd;#Rxw@P;z-4eT8pOBOi0!7>|y( zQ%Exl7J`27dr##H@s)NHcL++>V44h zMu~qAx`F$g!{Q8Y0`E?|vY#Y8Mf&kD8Pq$_dRGwl4IG5sAp2?A-QMwGtM%%BN-PSS zyx-IHki$u6Ij9Kgeb#zs5_bU3{}=NSNPNO|oW)+9<~(+MJw!hXn~r$>snSy4q;CS( zf_j%(Zx`bFfrJ5UXVa!;bf8@^_toP=q`LR}nTgL?hqvAy?9(Bne*@kI^;Y$Es_%kJ znA5?J@C~$!7c!gIlIjb7Xa0*Ea}AZ*Cg6Ev>nZP_>HekXk5^xsZm-wi{lA_+Hn!t! z67NvFIuB`zuQjv>E$`d5yhDf^18=~qP`o4KVkfVDmzMU<`}MuN{*7Vt6<&X;)|j7> zehGXI>YZo3N#b@vq049!@;S%IQXDH~UObAvAa&eP>tPe?9|zLyOy^_8$gAEOr=|XA zY94R@{C~W!B#!qA$2+TemMMX=l;ge7de0#4OFoydfo(zaCT+h-yqz5HuYGy9E%^hE zw@v}&E#9x-d7gUB=CB!o*Q-L_3yAMhxWe()v)(Sm^?@hg5pc^JxAm*f_xisHn=kR! zv=ujo^e@0mp!FNI-nWRG2NK3}v9rME!B%+l(gfapPI*5j-*VUr>g{U1fr#h4m~AbP z=eG2Dj_6n3bwxctjDH(8zJuv{xRLaCLmyD@eb)OY=|&Sj4JLtm{bZ)C2l3{xYm?uF z&3UAcq`n<<9?~y>MWEi%)@v@u1tBO0rMTx>e`hISy>g#n8@!S4IgiJy{jD158$nA@ z?-c8OiMV%R4SWIab+1mWSxCRo_i@CxhD|@bI{xk^ea;oE!-IO4S#Ja4n!)XGGsyYV z=CHhZ1&P9y#M@FA%8SL@wG+zvPje}a3wNM@8bxsCnCd|vC})GOI15C-)gu-<0G zwSoKL9&r0b$R00_)x-8M&r5sW)0l@0CH(|=1=M@gdOsy@BkY0gAkR7V;T{2*H|?do z_mW?|$sJ+y5MB*BkN%T<5-aP1*{7fUc}ip_*O9aySSvh?uSG-Vw4miJiI?CjdKJe^ z=mmGfxbBSCrL#@XM+%#M^^Sj^U*s_NUmX5tdH0Y{%X{fbl(#HplMu)IV*%cMj`v?D z;jL?rZ|1MCDe>1o%loI}t$Pw)EpHTWodUdv9q$>QH!Jh}Qoe73{Ot?Kf7Hoe`XtH~ zvESGKH}l2EFLe^-s%^^^ITAL1zT)u!g~W{)&3sI z$}{)j)u8p@C!hA8B_~l2+8*P0Uva!4eAS@==y}IHue>?!i0c9m!PMfE9Eaq@3)^8e$xWb*$_{$ukG^38?$ zp!NQ(m*4j%aYe83jyILq)?8@JFbJ z)_@4U9>hHaV_*o#acpx3uKlj0er!9@<5;p-o{2i%*GNAH=7D-ES#R|wtSdlEXaZB~ zP+k`8q?`xr{8_z`;(2DKGpT1k@Unys1XsG@0v^-N6Z(XTDLQ8zN zLub(PK5NUnl(@C94di{&*(E2Uxd9$h$R}Zv)C5Qj4Jky5bpnl&<^^A#-=1S0Vm9ypA zHG%iJ^0|ZtY~Amx`$@lV6mNub>G?u)eC;6Wcq>}(2;!cH*)R=UZ%y0&^?V^xHqUf) zyo*S`64rp0x2pC2LY%plV+Nc8t~X-6x=s-}JI@Tk>rZ__Su-^5y{YT5?nRoE&_|lW~Q(!u%w}JImyN>+>cR+jSxrp_o zQwy2KjO%S|ziRi3_a3L%xq0SCym}mZg!Es-CQxrr>%Fc8&ym7|&cbAdg`J=4Y$n}y~l{_QQ<7>ZYM*2R`57c`$gCW89K5?JGR@e+u4=p%0h&S}2 zx8Jn9{%U#VUB{bsgLl7cMYig#W4(ik8x60)6XUqojPu9D1>8&U0pp?dUU)WLhe9N3 zy!OzOt$Np5Z=iEgGoAQl@Da#* z<6i-<9_BjjH`Ood=b2@Ab)5W#^nXL4Hfis6>%Ee=R?rEGZplf#Ke=ojZ+&U9tzR7{ zO@lmBE+_3BOrEFVIneUvl=0fbjU4=5A$|tv?;+}OA!^4R^(OE}@M=4oMV`N)SlhJs z4C~!WT*;ehx6ly!Z|2$q_f?N#+}U=ocVC6pZ=_+K*^XDkf!;ndlsqFqh7UP^9DtXq zC|b0S&y)r|-smyH-8Qht^Elpeh12DI2A|w#|1w*xhbL@#*ATZGirqr}LxYa=t*+j@ zrl&KmOMgpVm1i2^)u81)n|xZ{vHwMRBUk5{`Iz_WQv)1uGLi!Q#45)XJ_0A?P0c+t4knvaVAI%w%UVoN) zNHk~QD3U&2{6PAB@F%GE3-z{VeHf0wA0YR0?7GUU-(B`Tn~xbE_HY^#zdp}2cD$`` z-m{~u2f#!a4gHGKhX?ZhKhB4W_xAd+Tvwh=dE>X`nVops*d1511Lrv~ z9MoIutkj3TM{nod22i0R_x(b2BjZ>zeqV{>#V*#hrM)$r#N3qR(Yx}@*S>T;bSM3T zFcQ?;-+DI@cNofaqJKai<~)t*$Ks3GcBa?Co>V3+3 zn-X^uNVtvdR`%O^IKcct+;W{(em6z-TfA$YscL_yS<>G@dYSJ(#8%tyP|utFCUFa) zW(l4(?g z8^`;oiyGtzkVgld_??aSP62x(dRf5j<+Zo z{rBaW3moqr(r4Yt_XPF&yq)T6LtH0#2zrBC-fi|cR+-%@?J048p6P&>VLBDYkp2aj z3hJ$Hz56&HoKO5BxNLzp-`C^KDqCJX-bDK5nL&6p+&sRJSwX(lAhB{>sNs2Yo|v3v zwh+G!++#x$XB^L$c>Gqhhctz|FxG>X?_yiNONhG$I>XKI7i+(}Zui>jURyr7e?Z37 z=mU8sKR4~|PI@^X>C0BVeXV!!^~KE7#7lT#2*)q_{Z{5j+6QEN8|_N!Gx8wgA6_r3 zG0&54I?QssBdvE2aV77fJwp(NMY-RU@}}lxkN&lzh>6-S|Wb7gMZYAzP zm;leh{Ep0z_Og$df1W|xkb2PlZwBX?iFo~~ti~)P{g?19Xn8NU-qX8rPbk!bTF{^C z{OveA$#`A%OwX(PE&deqE~mWLk^T;N4Ags#^{ysv2l%=(FM$56OB8SD?YFHN^RC#? zJd;&CUEXS>zZ9B)dT+7bA;e9BxiAwFmvTQH%%y%qla4QMVtAgp8L#%QFG;@*a(bk_ z9j*5U;<~{Q7zA#4J6W&RZ(?MgdD`*rs7HN~XBKFA@3YNTVC%zKXaLww6&o#TDLdQ11@ULL3pL#r1u{adka-@>ckhPM5xH}Z6z`QGtfL7r=& zGiZ6AvEDa`OTcOK-mdZu_~T=Y-KGZ&Ri_k;6#bFV#I0P4-=c@cuIK5>meLaSD+fpfggoFC{o z6UW;Qua1k&$ae$W1nTu!?^pK}HCsT!Hns(Mb)DQy%rk@W)=i~m{)DeD#2jyN>rD{1 z47R}6u#_=I_giB-&Rp{gb1z(p7xK)Tc(pzJN_sgDJIGec8?xTB`_N9{LXh*Y{PWY^ zQnW3%f5l$RGaK=0d#F#IDvOGm8`-M&b?Y5X-2bEPT;Qyl+CRRgndX!UQIXzokeM@= zE|hfTbWw>e?o@K3D7sSVhJzwhl5U7jgejF&62ehQD$zxf$|+HDi%Jpo|2}80r?ci5 z)0_Xi>+|_pS$pm8Jm*>0z4qFB&qm8o6!EHG!*<{J_~5r(tq+k1Kjy?lJJ>+}KauH| zXb10k+_Vm)4MxwQ-OT42)M8zlxz_-E;D3qvrNhzdqlM(9dc?==@8BHk^;{TkJGff@ zQFxnB$^MDo{ipriA<_n-iD(3p_qESx>G?6lHweU^GVlD3Djd#deHN~k(+A|=gtjB~ zXGQMc6MW`w)^1TYItR&p(b;u9f7VDUCo?_MOoOZCbRPNZpaw{}=UQ%4(yl@h+7Y|= z^|e2c`}!=gn+V(w96xj-e^+z|Qf{W@_9HEfBs@Y~)co833imx6Ka3{7^fS*8E4P~E zp7%+rdD(LRsh`n)I|8?C*~I*N7UwNTpE=yRmRo87{zbJ=4hk|s`<^2co>zh}p4{)`;<&$6bVb3O3|9)Y)vJd+` z%Uw=9q#pO1F7(=)a*y=4vopi`6f3@KE_~BjzSIccZycpW< zaCcblavqTUiF65@*<&F6Z4kNdbJzN7Ud!YgrU^gn=RCRIH3JiV_}+5mdiNyK&q9?@ z9$l*JixeNUwe?r$;}N*|jvrQpv4eARk^1-NLi}(y^{lY^p#69h?q`m@HQ-%{>N(us zEw>42t&xOlh<_;L`g}CkJMrt1Ihp2=W3PN?vK{B#h}7P{3b9wdGg(->=uUqo+z{Mq zJckpATVc%2@VcQM4)?I-_9yLrBw;vlgUWwz#}EAIan0OJa}`{FJhw4w??{K6>itol z%@U8q-m9tfVzbs=iO(P8as6=bgRAW#!u(_zEa9@P0{h8YPvct{z2YU0osi*1FC!6sn%ZUe^0}|vG+2~2FJhJKYY%4%3WB9e~;GxnrNn}P$5xn z%H8B}mmUMR0oRPu@A%<1hpXkb72Zzty~AB*xqC@Fj3lJrQ}{U4{RZ1l!o3r&oZ6Mk zl??J%Ms<+-VU^`BBkcgHbT9Kt)U_A;T2p!UgZ-SHS#O%h3G&{5u{X3N(~N?vL7$s# z#(B6ue%-PTu3Wbq%X70)xU;Rj!oCb%57Y;#z1L>P|EljN(o*l^JtwFf3N*wvdw*b_ zT^}oN$D!DV)Cai!_^HO!C4Upt94U9C<#r>jA9@T8Lo=H5T+~+9oLFxP*?Gw&*1xfj zGR3zBE+y?VBq2sD^Buk4scl2&J7z_usc}l8p8Y`nQem!jkaDAz z+laJlP#@F<$^2|L&nyVDx3%|^bZ@;O_%Zj*9PR_;m-XE-#L8{S`2^o;(sm;WQ(N-; zEB}4|p#87;B-1!?^PCa9@6eA9cdq5`A+5v% zp1pM+OD}XjDbH6+yD)1rO_fs<+|r!)A9N;CdtZ0#t!KGq_!e7X^Hk-=;I@UU<7SZa zu0`z}Zp?CDB<)?a5v@UT|FFX)tYxg^xoBG-a`12b{>ggwZ#dlV$^R!Z4<_tAY`IsF z)*DSgBav{+z?E@xiS2)-o{1lVUu2rhiivWYNB;F_BT_$9q>d7N?T0c3qi4~RXh2Wa zq531ZqpiKUv^TLgv?TTC06cTmiq{4OwBvc1=YxbLNPSg(itUvV7(SIcb@ z=jEdrNV$D2_Z!moA>TvnZ6KC*EZ3sK+;0854*$x!MmR?Qa9X0hoys{fKdVZt+) zmbA`DLT}=>=OnJP)LyyYDetfIZ_6~@;i|nu$p0XE7%6v><;r{aBcw}sg_tb_f19ss z{}6>c8LpPwT=K6*=?^EkC&Wp{H;J^j(AQ`)+WrSiryuj}5$@M7THPbua_c>{Mk%Wv#h?n!;EcO`{_8htY=S|L z1Xs&#KKYlTW~s6||uz54u?`GfnaaJBwd$LB%LX=2Zp`_$dzBva^n zfm<`bm*9u<1RM?0KAXd6>2P{@2Mguo+Y^IuUUq)xi9Fxe8pah4r)LoySqGI6g7Y36 z?Jru>PxoTNeGMG-*LhyncsY3gWSu$beQU|(8;1LpW8d}ghM*A+m#QYgx0JLs=v%Z2 zx#ck1mamqB|IbYGyTkpJ{D)EM$b`L1J@@)@dXzM$lP)2XSjId3u8i8NT=Q3^DOWk+ zhdlDvM@^CXVYTJ9BdrG-f*!k-_s%=@JZkOLdLDz@+~GdRIgg@|NVyv=_bJlyk%U)? zU9Q@z+|VKRGh6Ox%4{C_|3Z1A65O9HcO7ZI$Jz6MnxI<0vsW>eV*D%FAKb_rmy{bW zon?Zjdnbw=50ifsdID*``Gxa&E8pO5JN1Amz;GvBdycKuSO4(HTIYVWg_ z`!>gxA_*T87g_FbKXp5R&r<)KU@_w)2UaA^;Eb6>3w=EN-Xg5}QV zVxB7 zGlo6{9fy=V%5pbu;oBmlOE`zvEjQ(=e64B zclW>GhRSD|S&koOzx53rGCqHz+;)@y50o}G!3|jM zX{2SN2BmBY$@{dK6k#e7~+}B83h!&&ddA8q{o3^(Y z+`X2|Eq1etbGDKk-h|?nO_c z$B_7;FW21SgP}>~W~yYFmo4{KPM%Eu*U_6uxgS~XXQXXK5`H2s(!b|snNJGw!*84? zIPou!Ssb$;!f^kBtNp`g?34KeX3B(wz28`Sf92SJNUw@Ak=w6NwSLh4!JnCBLT9HM zzx+5t1M+u73Zww{Zcn7Fnj&x!#Fl@_h2YgQ7_5|61>GiTCbL zHOonNug5}{W|`|a|46xWd^T?)3zGLOO0_Bn_=5tQ*l z!oFVCzVoLZXKq4^&|9cM4)+Ci^KMtxSF2Pg_&i_ehAguiZr8X8#?*L``iz<){oU_a z?m*JUBMC1NSNxWHjwp6!VqU!Dl@!DD(?r{6nT*UteV;-8k5J#265NfJJ8c?sBs63? z>jmig^W=SWysw1$*?^kq@p>=y{WbZ+J+sWWaMcgzzQX-_bTLwUf41CCr1eI_(S7o7 z4AbkG?Y2MBbq#;7EK@cs(VxhE$}ybtHd5|)_WG-+{gg4r0%=D_`jb9crW#yrN2knS zT@F=2%Kgi7FCwialF*(w?^domIu(4MY}-MMXUtDxcV?O9aQ*SzwCB61H=J`TQf}S! z_`ze^R~))4%iQevLG~5*gxSa8HniMh*;gEe`ykvp*4}~erlIW)x3T38n#p_u%}29P zeqZ(w*JmFv_o+i0JpanR;`sfz0a@lbxY}<2Ab*Kj+;>3ghubZ;3TZWvgu28<_J45S zcestn-vQl4CNjw5Xfnuc;%<8irNlg0rvD9cm~B77llbAgmfJ3n zX8Kz0$GoGVC~gGqG`NBIuQTQz&Kr%UI^5qZcOPjfvw43EIuY$fg$~_#t1_o~hh9vkTwO)L7xmujXw|5;U>?IX+yoSOzUZE z9M^9-32saFdN1U>#Ynk+?~lg6fAJaVn^5xiTY^dRg5dZp_Sh!M{cFzIjrJntW?62T z*BNV(gj#>`ojC48>2rcw?lRuQ>(hiR(+;kd`#GF<5o(N-Tg!59CaouuFo0OI{Gs!RO zTvdsc+um|NT$^srBV9rr;(vNBAl|Ov&WEexc|-EIMx&5&AF|w9Z*UAfg`Pm8nb+*x zLVd;FAr-yrx9~>0Z}Rypv&r%ATJmp1n~`!?Tka0henk>~CoamrQMe^?6ZPQ``O7ch z{dq{a`u(9BNb7>`MFWtm|CYDcUu|vu)%swjW|;~O_c8K6jb1>?t;)S?f=}MZ@iyrn zp+(5;XG2Nc2;4ll>fcYvA47j3<+ioltKOu2qZiNwWY$xsR@2XxOEG)xb?Ce=*xMx? zNPZUY21)o~75RTb`;c;nT5i?1cy~MMhkBri`(W1ReFE%vooL5%+4ms(G|UX@1Ka@r z^aFZ`{1eb}q}+VVZT&Xul4uedjY{1`eWU-9b)!11QcZd0fwGUbKitUdEb|jw4Z3dh zHRs8nmFtG-aR1wN@SS#j$GnzhPRdKP;~nt!qx6Ldd*8P9=8{$)U5{Ez+?#QXxtO%! zW!4YUj?2Q1%*iq};7S$!opIqd^52afN9qSIS0wmWleP{0h4!HZ{p5L1o=tt9_s`Id zNAR42iXAVcK1lx%nV)4wSwD!) zH>hV0_jB@ZL0ge>Z?N3&NZX4f93*!40ciiLT-m()DO^8!L*nLl8FNt%QtmC5JD9Yw zXdZe6Rqn`dW-)I8^YSVz3YMqb2Qsgb>$K?GS?2hviE>*>{&y*092hv&>w_K3zY*gY&eVp2RhQ z)X)EBpKN8@PGfM_INYl;(o8RycRJi}uvfUZaI7bCf3ude#uY6$xFpN`;&A1?kNsf| zbhw*5Zi&L)`xxQ;vegpTarbcE(`XS=Kc3C+CHPvu&)#%23%!JfP+xYw&U5qhqfIG2 zvF*IWyju=O#Xib1li*7EBFQw##V4Y5v~U9Kc;b>mQM>?KL5>q_9OkrO4c>4y+Q1q3GW^B5mG#oPwj30FYNWN$}-hiH|be`G@p-t!g_(jJz)v^%hBmbxxZWP1*A1a z650^E^A>Ga+K)!q$hq9%wj+Nh)Ey}|pX(KZ?*Y)# zkdROQIcNz|?i|bgnzV!Hv=3MZM|JwpIWT66ty5_i5)Z2CwG01R)}?AB<^fw_-}Z#zvpwjLnYc3J`$dWMyyLodkez73T_>H(uL%2gjze?RhIh*Y5C|K^g22~ zyI8l|y+ayyP#-Y?SPqJsA7 z`$b}KpN6acEi3uaxk$P6u@Zb2k#;4z8MQ-lUrMjPqt;&8e?E`Q{taB$!wtkw<=Iy9 z_e1w1a8LGFH;&bI#Ux}G|MAEI!#INbNizaD*wl*{W$B*d?FA9`Ax z$DEAgh3)Sbu9RE&i!Ad8TrIc5q7O=`KU}Q#^Wo!>+Q3fS^y~6Hjj5Ka*X7~gv-nn>ozG)`OY(DQN7 z|7!h>9%7x+;jSis`Wn7pgOvM-a!H$wwxIQBC)du`H{e>I=SU8;^5(zF4e{`G8E&wP zy^XQI%v$D)s2)=8hn72%Xu!40outSFTUbfp;EijMUx(*4_)=Ep0lIejBQ>!h8Nl?KQIt+8Zhr zFjES#_b$#=du1Q+vHCX(cL`kSccSQSc*D?mr1l=N_Rc5m1GEu+iliN@y=ASvx?UA6 z9WdV(V(+({r}oMpI97Z8#|6v@wG#dBE_nOU??~-EPX0krm;8)11|;EB;=<-7IzNlR z&4Md_kWiWY=c5)#x#cW(5NQvgNoYKh{d8sM+ohlEZ2NWXC;eptrU_i_ABM1w{08T| zg_Qdq^^)LQMB2wl!V>ZoHh<9i8;08nu7+{&MIRvd+TBl? z#o*lSa9(@0r1=rXUk;~%_h-^hTTdT=E=2NvjVhGC^oKRzM2`=cRSu^Kd0L@sklK^N zIbzRX(ng`Dkjn{*JtqW=xgb#vPf=N>kZ&rIAirw|a}PqH&tr(+{hF3ZNO_Z}C@w<9@2h+~^lIyI^tch*m8iVVW zybWol>wfkYbn%%;FktR+epl+xsb=4UCCu+g>w#AdjPE#(W!&H`q?9KvtlsK6V6ahu z?*SzIb$5(=+ApP<$5Ar(UXDG2B#a?0iW`Hw*x^1pl=t!6SHe6&{5LMoo{S}3g1ld{ zC~l~6zWGrLaiIN=950F+gG=&_Zy`Cb-8l9Fz#N`{gZc=qEAp!_R8_1xG}gFI^4>XnP}V1=|ytocu`z`vw*qrf4~jFeaPYVr(d}T zg$wC-8g(me9<=?=joIASsVw7J!SxrdzcIMe9PawB(@m`v#yo(M{kxfCJCTH+iHqWf zdCANghx=Bx&wPPRn+vfw_DY)BNWGQt^-=0?utmW9=5UM4-Wc49brSXL2kiK#{&x?@ z4q1CkZY{dK1uqSlx^Q)#a~%0kM^%vPU*>zh|L{yzb<%62^X>Chx-Qw4Ie?78I?oBV z44C!~w;|`e%{BSED48pMZN_m4mk}2=e~QAr&*8Qu|DrCb<^z<>y^&*GE%(H21)tl} z`N9!h>UIoy}APc$7RbK^k!pP3vl^7q5-2Uq8td$C97VS;dfe_`)?8*CRRqj1JL_7zw8 z1lt76e8;}Ou&)bst{X}&pY(04>!YIV^tTO|&m238t9&AG_dDF;DxWCa)9WSbQ$>DX zE;=72mwQ9fE=BFo)yQp^y_4Ey^ooGF*x_~}e_u2hC3A<8HX1#JPPXm6!#Un{V>pQ$ z;U!}?!Tq=G{q{?|_U^wbVD5M9E3Wz!f%}qU-@k3|YNxq6V3s*{7FT@=!~N0W7FT_W zz&(Y9NNw*C%5)k!V~=;O=(hL5<`3s^A4@{;nt*8lNBg;%F!o+s!d!D*!Fjceo8B4T zf9I30sQxGlw~J%n+vHz{)}kZVXwj+g%HST}I&{EE)#a?ZO7CEKaL|0a&Pb~bhF48!}wu`|GX zM!S-~7fQBMd0~zXMy@|QC)pW=o6SOqmiHs%U$-^gY(UBV=NOJXi(DIZo}lF(xjtap zz|(S{O8(Bw8E;FPH%htBoiWPaN(wzm_&j_)RNNa{2V*SQw2$k09xXM^gYYKN_9XUk2MTUxusq zz1G32eru|!iITZnIramRu!p#?^&j0Y9D{pG!$dh9AivJLlDQ?fv)+g#oOx~0^Mz1* z=F4!)#&h#N4CY^_a_$)@nJZZ?=6E*8E=l4>tRM6`CknSK+~W2_s6)VvcKmQWemw=9 zR)~Ma-pZs)7{H=wQS~(n_YH?zgWuQ$wJgLBGA>_5dPgMVvg~6UUEdo&XD8K%=#2rh z!Qob-{&eBI?uBscaqJS*8hul*RDpUHP2z?-222VM5^B3uZogyXewxG$-V`u33*p{- zjNDif*Myiy6vBP@7`eNXxKX$x;A(&PZ|A$APOSep_7&IsBnJ00$G-pXd^dV?z#MSw zEUx)U@D|poFHY2_;+mg?;I@FP{XkLIi|#!E9Z!bT^X88+IJY_W6<7I$ItR=nj(ta) zKaQrp7G-A?UcO^zv6WAkfLZQvi>-X%?uPsSZ9nE#)(wM+`cqux6NY;sT($52+kQf~ z1Ef^2Jg&9iF#CAm2)vt9*hz={Fqv{=e;qhfK}$j-AC-K4G{YIo#qZ zp9tK&aJ7Fgs{ItT4jAkmF#loWR4Lm}7FYR1;a&n)?fd_ZKaoBG)7`PNxXQtT6_N#@+TeiMc}*Wr%jdUP%h<<*dX<37!?X53$w(2CgQ>O5Y#rhmX}cDQx1r5S34 zlI^{gv`(l8>WW-$*<^d+{sGq?w}SUFk^f;d9wl?&#&GOeB;ly*WpEEV_UgLURL(EV-hW!x z3MJb+C}65JOZfLyc>i=CSp2)t+MDcOZ5Qg_DBN~%wLYl5i;vOX-bwcQ2eV(sv3J!` z?EUh;v^N5GZXxz=J4SoMN%oo{0kgxg_vo-f72H_IszNCFw+Miv=aS0uW-Tpz#O~;D}+%sAv{9742 zGErTWY_IUTlHM2fL@sx>^@F|#K5`%T-yQD5rgwCZ10Vvbwv_-5f^rU zP5lshkbRqQwcLKef2lipo*N}|%aL{l%0jySug}}XY<jU9WdagOfuNaj|; zxAi$LLE5o9FVXg<^O7jsTj4StiigIWH-1{Gc^XNJb=R9N4Q0w=8K&zF)%hAWpWkH)(^Bga?S-_N#X4@8_jQW@a(k8H4xn|G>`R!}N=A{qbLA z%#HZ#pUUZWj`c$lj#f@Fxc_OH@M~H6+0#(vf9P+kkS-ycxG28{hx42OTz@<_?-Ict zUC&D{uMr%ZVC{X5xTtz%9$`PQ!<|b0*U-251^0)`_%M(3_mG68#6`8QFx=5_wLe%v z{?E{Elx(l?PXCViFggdh+@bb9`;q5E9}Sr44)-GR7uC;P#&HQ(CULdiD%bxQ`{x|) zb>#1adZWVZeVFto(MaUlyW92$%8kL@?D+RN^1p)KLdjeyw~t6)k3K~%*Ua&*gS7vO zj0l+D;ns=&I{G{I9ad*=K+Qt-2MplYgGj=o#N7+o2ODL*Q~KNRNS@QWEK$#jtG_j) z0;Vlo?Z3A2`~Io^?&8=!B;ilum4(>**HEaOW4Pb)Klr_&Cj(}a z^Lrn}p3!ImN-mFl(&nLekd#M0^-|s~>!&<|V*@6gXDKxttKTA=U!C*yI&%qsHJygCn9ji zI=}ZY=au@NH7=Cww~C~lgL062ucZclGvfp1=R!E=9Rnu_Cj_T)>xBQ+o_fc?X$vO` z=UIpI&Dc_=35=G7aOAx-W?U(A702A)6@ufR5HO!QoMWvIVa_kvCh>cY_52v;*ZO~) zADqa#DCZY3=#IdU#zPkoqm3z`jU1?vATE576hi!f-3KO|+L6_}l#$v}O=Xd#TIiP3woVNkR9PTjhkgwVgJa3I!qR+RMF0d|sy?y^gMk#N+jyxMM zOX1450wlEOobIR}lG-EoejGny(kuMPz9@7n8aDuapj_aE|jzWVILeu{JnQ;7@fhxEE22Dh)nok{+8(Q>5R3f^z<9sY^; zN&n0~FH|21H?O8=hbY`S zS0%Vp$^X`aX=X98a_d^|@1&LdmA(^IKrVN#@LvjE*DXjYx9H-4$>5nzt!JY+=Q;EeQtm#>T~FFJ^gH?m1#%MpU6QmPIkqHV zu7Iocq110Yn~iQj$}Qs!FTNW4DK~TcjPnknbRA<^J@z{~;cc$#~tVAXnZ4CEuM5Zw{ChaQ)u7CX4)a&{ase zTP*hl(%wd&pbydY7aG%)!CY+J&gd%f8pez7;D){mm^-geHEk_-FZt8{qAnq6zT$_U zykqH=NXtZ5bN!I~`;VIfj1Y~n{tK^$caEt}{*j$i%_YQY=bzp&Ux>5;NJ5yn4!?gA zeXrQ3LB4w-zdy2#=iqNhtjmlL9-4)u8Hkp zb|kGIl5h{P)GPh2kg|`|s~-cVHC%r@H}AJ0{}U*JlpC?!rKEjv=_;(re8^YNLksdm z;XV#m{UG0Wm2WFgcevja!j(KleWx-8cZFl`EO;BxCWpJtn&8&5++(rV|7XA)F2vrG9j?yLi?Vk>lD+=Fc#iMJ zgn#S7`|{B zlD{+YY0^9-0{8Vo>>clL+x-iBBZmWKk7Msk@JiiT(#&+YH(Bob_kHF~(k1NT-|jp_ z+lKZ#ev@r#bWHen5$Dw&on}@#+@6-Zg|uCkyN9^U`Sb-B{JnpOx3`pR(;Ke(_aOO8 zr_om;_3vGldnIWdQ9pD$a^L?t_4$JRWVl4OdDXFZH2JH1$9v6*l{><6pC@f5k}!|B zsQWqo)NJ#sWAB^fmuIk|#LCt063X|#ms@V~cL|gI8-`o!ri6cW99r#g`TVB@-!Y9t zY4{he`d7!HFCA{ga*G;=@{`(I4DKtAy}!fzPst2(CQ?7lu-s0hg^`4j#OtzIYiEp8 zA4q(pKl5dq9ge+Ek$*b+04X&iez5Wy(90WJSoM*Y=5TQaM^70c&CJapCbP%^d(X* zuTzY3?k3=Ma`Q+aBp$A9pTA4Lb^EIHJ1C=NT2CNx`h73MU4+pxX;4% z$8#tAaF4_N@?ZENR5{yhaO_n-JnV2||H2PpxF@rZPWwgm!($Hjn}6Yl7~EEH)eqy~ zt-UYZOm?`xSnlIbmNvUcKZJfmP1%p@|G;av8*G28{bK0MY%{{K_uMiWraEedw4Uv^ z+|$1EnMtI-g62(4F*91T4tuS~EyMMN^p85O2hYkj%N_2woU5=<(hM{O=-qO^@GkAF6KPt@+kuezGIm$_^V`_mTTqXpj?5qDIowk%cNuA4A_=E`&G+hZ64z_u z3kgU3keO{(INa@=xBP3LDR)A`59eF%d89Q&5-uTj?|FID!-w^LM=&efl({Y8-^SKA?Mhl-B;h{dqUO7iK(@INuKIU4`NyD_kaF*}+#g6gfYMLISNl@< zb|3E*=H2dM>j2x2s~>_n*=DB0t;so8K2h2AgcF6s~7fYp?TAU|1@vpqQkoCu7dJl3G?r4Ww2VNs|iNn1SEc(5L z5x5uJp78IeX{iPF(YV~_I5x&|pCK;F-f*pK)7Rn7<9%=Let(zyKF6k7?kh*(nhUbc z47l3A%p?CIv0j`kkQ7~FnvYuJ<0PRcOPPAqLo5sM!#rM(5bV?LY3G~rl7t3jLP! ziL(AI^X1ru*=849_3!oM?}qvy<#w>#nWVjsHllS%-lO~{^Y8)8!~IGAHTAMh=k5va zHuCR5hmmsGIv~M!!^y0Xpoh`@NVp>`x2d&P`|ogrZ1ar6eUkiBQ9e>GpLmONHCBT?=< z4x|{-R=dws&e#6XJHh*}951R}1>s)eaFh2{{1f-6`zqi*>~Np#Rl2)%A`_ZL#&; zNLn`}p$~Ck-^YDNuGcvpX_8|OIo!L+KL(9Q%584B3rSmsBs^A)K9ISB`a$h|!>*&m zn&y}~y%T;|&3Rvv;ACt-ZgV>#fg3TjZGbeG>MrA^#S%4XM4=E%!&#{zMW|YkK9De7{faja-^z zhCAHSa11Wcw<<4PG!C9nB$R;kV z+_XLfugNjZ;cB^6Cx2tq3@I10B=|z4bw?8V5eF&IWdCZp`LE3}k2>}aCjUjXVI$>k zj+2aU2Wfkdgi;rJ<;LSOasP^sC8)jOb~$FLWA6#%uYgWN$_?3hLKbP~BMJ41i?TP^ zKF6frmGEyP@^?plk#hBZ^>otaqb2BF)rFzH1O7d?;Taj|dS$iwh z$uJip3C)P}x^h4Dwt{}x#~P#D*NEMeW0t|ya%)ZgPN)k~?kvk4LfYdh7(=g-RJquOS%!wqrH zUFdG4+;=TEgBu1TNtZB|*lib5CnP903fJ^c)ZeGcKV);NdC}p1Y`JqudlyOgkhrLJ z92uWuE`qD&_A&WCLpzb$yWVn-Z^Akas)=&t-%hzLXkGCBPIy8N@25_1o00!!bSqNs z7R!y0HUqtd<{|gGvTM@1VDPCN6SzB3A3h?#ziEc4ij(C+C=3;cCCLfc(qQN~GKtmK&$r{~Y4@?#is^Fh}!B%=_;~`W@khr{tJ? zxOC6)kakIixeeWglzX>wn{jUz{RdS*mpk)^(YAlMX^@>qy_jRN2PFEPEb`xjUPj9O z&2qnKo?(7LSuHZmS*Xk>-2Y`hC6?|S>sMUP;i~t zKRd_FfUD(p73YjVZy~k!5z8%mIr9p%7JZDa-$EIk>-CS5>^i)bTVzR&Iek!~p54%j z{u(`sl$&PflUKFo{u%lNEk^mde3!YEXJ^Ego7A&%^uLi+Ip%hUyOsRq+i-s!DYuU0 z4kPUe^a6Sox%2AT$>Zi~`gMo<3i*FUe<0;PXt|x*GJi$)p@GQdMw7VVbvfoYxH?`u zO#T?!j+86c3C02fB(+?`#%cS2OTehTXIZI1_W&vmC4@?^+3wKz!yjP zPP!_?+<+wXBJL1k-ZQV@exc=DU&wwx|2H|NKiuB&+*O#WaQ$-I-(FgzLB5N#wuo8u}EZ+yj<7;Mxqc1D$^z*J7x{ zt?YAPbD405+VMiidH>!Va}aLOaxW(TwWu9Z?(1Ho@hv268IrJ(xB>T&hO{i`-%l=1 ziLX6}_ve^Pha}2v8~Oi2Dc2{s+buVnv{voe_xc*76 zpIpTC<_yNI=sCHjg~NS~{4yTDO|0Bgj*I_E-)hpfBMIM2KIW3)?1Fw6c(&~ys^pp{ z9PS?Sr{2W13sP=n%dJmZJ0zhyaf5TI|LY2JwVp*XbIn?~I*%Gi{t;+2Qm*F)<9n5~ zw~>TJ#O`=3by$MVOCnjhru4mk=dNs>_dH_}K%=J8y=Ncy3`Gbsa+!8aP++6brT;UgY`qVod?oi7eM%rj3;Z5?m^E0p1 z4j=xKWASwuxXm2y1kRg|W+AnAe4J!_%Sl_0By1rriW{n)Ylb>pwRgM2ooTtpVs8xY z3Wuxq9&)&RYE8m1*&C^mYbt~j^*8yximabeZQ|Txxv%0sFW0pBA8;dZA9A>rZl>M8 zSK6FStmUTm4m~;DWRfnSDsf@!%6h*sbbhY+z~R;=|3zpKdufunyGUznxh;>vjnvFF zzWWpY9l`VBW6@prd+%Ft{X45^Ni)$tS3a4zNPBDLnnn)yYV0_RZ-|_WlI?BJv0JUZ zJ&t0pxgggJa=6L&8C-kgjU{>d3mk5L?3mrTq^ZB6^xy2gmt&7wd&eBb-eB!q z^OM7!ME)@+rpNa@CHtW#_c33v-04T*#^44XNR(S=?p3~#&+}r_y!*MXAMW7TT+4my zDBSRcxu&zjEw1)v>g1Yd9PVQ5SdLbqWIwDSZ8MUvow%ra7J>VP!z~*uY4WL?k|_WJA5?>Jn4rF0`Yj6KPIhy(3^ zu+iHqX;>*tzJ9qtCkQu*eItW_o3yKiBd zv3o4devTK#4Z}TdXu`k6RUiBfa!q50dsCNm6W}+#IpOc^cp}I0tRHF~#SbyK108My zIj>rpDR<)E{m_JCtu6POqi`b)bIn^0wHutd34=bB0stiw7k^~r4)@d{@DBgc!X4e2NTRSa~y6-uBk*1;J>2m zmE%R(>xa9?;U>SQ^`HD8-)$?38-!cqp@e^ntK4F6yE)wAnwLZx<(iirZgKfH3U`OY zEw1_yYMg8Q4=4Ql5$_#w-#_A(+j@>|MG{J<7k=Mg=VvjvH#^+q{WLCD_S5|KlQ&)* z?K#;{lUy^!;U<6A*yY}P4Bs`5!QJF=i>sfEG|e@q4o~>Exax24l3a70!!53HGYof} z!yQJuA1PYo?E`WB`vmFFA_*@N7uAlV&2r63hg)3p$!POjQ}U67e_zFpYq+&7&lV;3 zXK!$9v9))_QS6Pi$Tb%^+~Tq~c4@BZ>u`&0+-#X^W;)zrt7n(xn(zMy+!)*{k0#2k z*xK9Wx#mWPTU`Bms1@zP;r@U9tNWu&>s+%MuD7(w`$31No5AQa>ZjD-JGh>IEZ)MX z)J~8*g{|-CzPKRVijO6@YuV&`@PQKM8;6_cU3eGZN}j^jOLX6O7;YPfJD+=MZ=!t; zw?`pd$y1cQ5x67a>N?j!cqet{z6w%5T*Dli;CqL(-%#Z)+>1c6PTRe?T|c|iTmRJc zRC86X`4Da$>$?#7`=EYExqU77q+2sg9n>COj=JB@ee|Eb^~oi6o%Z-$tYI@$1+U|J zeuP(lqx|0c$^Qa+6)Bg?*SNi3k+uhwyN&(hNY<z8=UxCdqvp+J8o$BUYm_u{6z>$}`z*{>gkyVT((&#PVTvCON3J-L6u zJGRsh&#?dY1@tm<{VRUhg-?G&5)Km=luC(0tN8yJ0bCvec}4yn65A2Hg~u~*u(cv_73IPXe8k&;-dTzy))N52zOaLH~TvHeS^_ZB!n>S z;uPZ{V7 zXZnzY#>7=VGiJjt9#{L{%U?<{l{g+9lxu3UheP^I2`$Or9^HqOd!={C_rqQ65$Vf4 zPV^z_dtQnO-komzi%XcP_I|g#$9Do9VdzD!1L$B|c;}iuJNpniS1h>D}LHI(X z4Mh^h5l`L2{DFJkYOBOAvp@Au`r+ubTyrhlikAB<`DdXyNbQ|rxuyH_EEbY*9dX$e z@;rdIuR_^F0nOuhcvh~N2-h!}2{)0y8|s0S>yeDF*4^yEK@#pFzCOrWB70PoDY3kF zSoV?n=jEF39PVK94?~Y2<=zk{8Q+VfEkF|9BOc2A*t9BzbIt3y=7O<_cJU$kZ|TQ7 z`iYg>$#Q=t?I1c~0OK4IZd>MmVyFCgiFKX8%+EE;;WEXDhYIAcg)T?R&9vN}12fEA z^f~$jHR!^&!|thO1J|ZQQ@s1#o$g^R3qM5P&ozIHOU(Pu9K`dks4Y@%cgsC(Fn!Oo&_<7Y8T%0rlRvzi`@G{5_D&)HduSa}?z5KLYY6XBLCev*Xh9$9 z>1@WVlT%Dt>xa1qd1i+E!F9RjTZj7<`A@iqJ;_M9avzl7>rLAIXd)Vk#%A#x?Jb^P zm)ZNrqo}{TCHLpK=G_Sid*_gUF^1hf*-cq_NM;z zZ@~`}6aHOK{vS~4eF^UUmOGKOx6oR&0*QZzmrOBT-%l~?Y`Lj_quZJ9z}5OtHcWj$ zb&%RS*>YbX?PK&4+J^epra!~piul*>__s3kA+n46B5?iQxhC~~t{qSoQf?{B-A&qY z4`i6LQ6;pJ=bzhN$TzFu9Z-FjH%H?zkzKNtwLlWL1mUi47 zA4_}CAY5KiZv1<5&1AUNCbNkApP;o!x!(y0?$@OKj3l(Fmm1&0Kby{0zO${|Bl9S@ z+u&;ddw}yYA7o!LqGra&i@kA@Nxy@%yU_zk#-Nb3wThkl%KODa`*Y2iPbYZe$onFi zhH!hFC)XQ<^tVa-5XHwc>{Ht$j=!snOwj|Z%fi$0UrqjPXwcBa?>^Pz`Tlx{{Y($j zAETF0_a>B4yOMG4_4j)FiM1U>Ps%fAPfFO?eK_Z!=}3Qf#M-&(5%!a!GLLe-v5xD# zcf3A4X8QuMHGEc{84pj#g-gkM1qvZ8pDN-2%I8heK0u$NkCA(Q9jN57_4_KpbMnmR zaP{|pOa9+b_G1ZdBg=h*w8dyE`V6^#UB(z7evQ%($a4<<%sf->*+hFSKZ0=@H9~4{ zd&}KKTEEb2**6{C*A6u4F%0w0@q+eJ;W6L;gkI@UAjq<@)0!rbw zka8JXCHVS3!CVGyLhDd>8uF4VUOi}P+pPHEb-1B6d8YB?M0@y^{15LbX;Q`{+U+2Z zn_iBzGf`plP;Iy2ws~d{Jim92$s~Vc)C{Seb-iQ0TS>bcNf=5j-;s;HU-0*9{~Eh8 z&n$vl$2-?NO8&Re5~SQ#-Z9^0PcmOb)6ui2?FXy_9PjmkL0iAx{?Xe{6l|YoPK_km z?_BbKhBhPRK5Dro$FdfMPDk@UDrqM12NyQ-?Cos*D(}HR8^1<7YWvONoC{E0 zq}<~y_e#<_A_=z=$KS7?)GuoP73r8~Cd2i|b2Dy`KZ2$rs&B)F^r#O+=94E^FH`kZI!i_yXktb?BA_2UC>_r>iNdu3cSWAn_l z&nN0b*~#=z=xU^XVEILY@2&`S1$~FUL_62Bo(2lHH>`2ntu zixsBuZYY$El-n+jHNNXeyB$gBM;y-k`|~z(T_W~|Cg+(;Ur2E8A^-E}E2P{z;v_z! zG?iz?P{$W}egiFIKpN1vq=`&RHF=f1ez)!h+B5@}e}0}hoi!sZx5?yx70pG;m3bw> zx0K_sY>}4WJ4jlke9zwM z#PXi2!sbaS^pVjI@=U`Q6Mndu{FkCuNV!Wa_YTq?KoZvTP?o&2ep1qP)Db^?m}jOt z+)bRy2y3)e2>djBJ)eq-Em#V9pOm`!8`S(#Q5+c`CmuxAhlE9ySZ1=rm;T^ zRY3Ayl+jE0treMf*m`^9eb3ADOnJP$e zs8=s1xKZ+dFoXC15$o^Y>e=a=u-RvJlD->#GAy;gy5Ll6tM)VDwRxsSe!{P*ui!V- z1u1u*<-Rk6z7W-!$ry@;pO9kebWSy+xei&G@AWt1>Br;i`>{OJlXjiYqsZ^*>L^wQ;pd{{{846QZAPo5`0Zw zWo-mW=uVv1nD-zwE7)$&rJrd^L5FtanSF3|{?VWO523M0xwek@&U%e!tkA8fBU(TO zsd%@?jahs1@k5$a^q*;8(-Y(5Z1TU4K0(UeX6^lO4r2$ZHkWxCitOjTQGEAr0sgJS zHNLcoZkFpmkY`4~4a9#PzmNR)p!<<>Svry6J3NoQov$<3M;%bx6Zm@J!(;qJ8 z$HVR9pN#U6a<7yIhrRnrEB6L<3{^%_AKGSn@4cIC?bZ8J!7^3NT)0}#s*?XQ)CMWn z-d^!-CGAI4c0q;k5m$<#<10~H} zq~DK*pw6`t?_r82wPSzTs;23Tgdc{JKjlrz94Qx5;@nM(nTIan8hdGmIRlkxS;EX) zpKhXz4}S(q#mleeE@Mt0x4&Igvl6cQVfPC1ujIEP<@)12t?{)Y?FMu=>Vc$xG>g6V zcD=oxQa?mHR5hp1Ow_Z-$sa+Rk#g%Bxp-(1p`pdZmUXwqklJ3P-eoD10{&ipZ6&jwXBbKv^L zgM>rmm-lj=uqMH6XSwIrPBm3Xmr#{Bk3L7&*`#eq(C6eLgR7dK;cEYI0r{Jv%aPjK z%X0HcTYx@9557^lz;oSH|wCYO-e~?EQpucA#==6Wqrv_ttg%cC->LL0##0 z!qu6N&_Becc=fj#^?{`!6C7UE+zD6h^?ydcjT#`e_gBlUy`F1t6h{3~W#+m+T;sKi z0rkCp{W0cf@&0U7RkIMT*0Z0<@B17!QtlbvL0{?@8KxzA4vj@Svs28%Ica7C^`Xpk zkE`{}|6Em*_G*G#W25(;hz7*Uea3Phl4Iz3B=3oE?|ThTs=uMhRZSbX>WB9@r_%X8 z^C_`%U$fk+zsz8~p&g@s$mO=U%k%Ge<}CwCGGCce)jR=L>+dS^|BBAol;G-pgVvj= z2WTOhhn8^RA7DSh@QYZ7AL03-1M8#Gj)OC+nvHPl#A~H7xm&pYL2Z!Qd$V`UH;J_O z(Ps1+8o@$jbRX@wTng{C_Qs1jJRi1O^1oKqoWa_ua`%(J)K@%vij+ISa%;yJkI@|T zJR1EI?d@!SEA|d(<8e3Bj^%qG{&%XHvacoT??&?PMt>sZes8&FZ}r+*HR6-r_4Z$k z=*l$(^>=|Sw@0q?#*5IqRn0XHw*lwefQBID%DkB1>${D46q2X6piPd~3Vi z^Y5?N%OkrcxU{O70@o{Yw%mTr9tm^_Qf@=b?M7NZbdQLa|GM>Id(u40|6x_L&9Qeh z=PX0(wkNpFEcdOQT&sP@xQhCtWz75YUr94<@$cT<-nyIG8{Jyf+%YHd{fXPY=eMHY zklOo)$6`O zqxNu3fSRCr>zOlg&wV!aY~AA?cQ6fsuFd!lRy8B$Cj8rSFKbJvCsKQN*!jaD(oWsS z*oQKa`+k}Yww@j79}ZVFs~zsOji>^J<2lpD0%2mauFE$A1t19iWee)0;hpB#Rrcb%OZPW%Sx4GqxBW((L zAH9xbY#W{Ht!wX0>L+96tC<|eNv#i?$Y1Ud<%5)ai{-{ht9jV7_YUHzJD5NJ$Zw@z zSDWP-VHq!CRjQdj4)-qdPe9Kg<-TFLCz>**F_Lg2@qnIOOK_c~Oo@dn<9w)UHM7v+ zb|HU1G!QBGn>fk%o*`{ElJE|(%y%ZzDJFBp-e~n|CVhUw56b<(;r<_O=K^Qd)c^nQ zOw*hxGh&1GvBlJy6?63VcXS&Q_}TkXGoDp_XndF zm(1GU_19d8h-I$>LXTzWhv38;N zBvf0=H;V2~bhV$n3%y6-agT0wtD6;{ESdRTuKz*z>I@m~(R~y9)$k#x?rf|34QczpghzUu{Jr}j4r;CQ z=pH6tg@j~D0o8rW>eeBx0hsXRpC^tNTE1Ei!G;-f?oziLT2rqZllK~r?s}^m6SV(4 z#F=bwe^y#Igl=&ey4QJhOa2eKVRRRutMi@K=naDD9$npksh5~6Pr;Y41zPT7pE}K% zH=JG0iS;>JX`3N?J^m*9lI3iu3|hXYJKx=xNm?T?!R%|8{w%-RiSx@DnBm9lKUv-QgQQ)Wl+1gVS;yCQ3des-h72OV_J^(c-21!iCck4z|IG_B z+VQywtu`i>xzDfn>%-_S_ULvc--yxNKLP!|s%y^m_q4iy^4vgK_YYLpAIy*g9^KN< z*?IjvmFHT+=oY-~mP6@tyI$Q>dEPK^YlhtO|3Np3?lO<=|Ee5<-7@5eN4NAjH*YzZ zb8h|Yb^E9H$4d7MX}`=Z-_qx$yt=1yUMhs{a~|D0@#lUR1EuTPL!?ax6Q&cNteypn zGvo)4?(PTT#rqyzufI2h<0XlDZNllqW$7M2$9-Fd)L-tF!z}z*03ZDB{NAZocQNS^ zFkuaGS-RRTBIpkG=zfg-fAZJ7_xCfa`%nG`dt}HGkM5o*zYE8~nVX?>`R?blzrlp^ zU!VB9=h}ZC_ZQtG9^L<$zddQk@3`grztWXn8FKgk2i-8bZ~TAI4fM{C{T|)Y{n=bk zzy9C!XIg)w=w_{O%l8?s_kXHqrd@n(>)EdVP=8f7bbE#j^XTrw{xJLnrR!N-1?DAS z!r8=SwF}h^_M!fwTiFhgRj|JdGQlMMOgXSDH6gJLY5n1DI24VOJ@EmkkS zVzOKWm%~zzp1k4A4UB*O!5I=nPv^5)*mmM!*QI5pk{pU36tIiJtcTrE#)%jKh@|bMqzJ$=XE@>>V9l>&F{P}CEWz` zJFnq%p1Y`8_PMCwunakduKN2i`L@F!9$mf9F)%q^tCDf^6J3l<` z?|sbcSGw)$2=?apUE)(*e`6Cm)?;a;T>vJeut@aoCul!w);HWvkif_cc?(^w59#D< zTHC){!XXx^ECaniN0K>qnAIGz>FJXe7Zp&A%TQrm*hdlm1gZ+yz3$%RCu)1%M z76B915tmiZbR8YIKSS!h=lZ(|d-EIj+lf_|pDZ!K7n<#pAFZx=&a^CD^*4gf62`AMJK9C_v@4Myj0Qs&*=V6a-cdI*xv_)2T1#wyaYB@yFZH?~G*tcU|fqfKq zg8F;6)y+MfbqJWyj(Ge{&T}o*>9@3=>F+?xgBkJ&x(lps7wmgLf6#txrlXq}B5fi( z1AACMNBI**({K9*qZu5VAsf)s>!tN;CVAA)xz^89sb3LvE3IWOkh8-N$K`5AwzCKx3s_KlUMysclvnWsrVasEJNmb{H=-J z70|(>Tg&REokhKcZqONu=o@z0vzYls&U#eqLGY;z>GOeG4wJB-0oy?R-C=c)R;KSd zkFgAvfYF`FUb(3QPyT%3{f)@N44H|pmcyOrC(B}PaE&Kc-COCK2);um?E=O#xEPjq z=b5wKPQROF>w>nk=;93d&Es!Id_!T&*q zT)o;Yhrh5-_2Uny?(W!5tN5mq_9|?Jk74g>*89^r>&t$2pwze)T$dsDp{rpR_Je8j z`-x4pHRJG4j&A&Um#{8}C{;~=f5rb{hP+Sy>Q*3w&#!_OpnhHMbn3phNc#}JfzO~V z2RZeeV3GCf*yC`*FR+@Bs`b*p|vJ>o`)DO1%nvDSb8x9rDwbnhmgdDqDU9^J84_XqBYykK?b z6Q4{sif)ay?tP*+uzzN(Pd@PIK4*15C+!C?;aB2boVC*5Rac)kZFBa4+%6 zo>9cU{N>bD&~lh(b?cDU6goo@47h-Cyq8lB1MGDxNQ#qc%zykpu#bRlzSZrH{b0Bo zRClS>eU!9mV8RQ;Mz^%Tr!fbmdyw!h_LtYWAhGJMvbqD7B*+e{yPMdQ zL+R^g?oa=Uzu_Mg%6R8iyMO<4 zhKxm5>)HF*e*!;(>ZUnMTVLf`$|?q``0ILbPi{Mw(Eem>CjBhEBde5dk!Ui?le9`lj?K+`crabtOJD=wf7Ma6-YishU?sThbzfvq(&K^ox{eao;HT6G& z?nmfqIoybz`CZs99^L0WxPBQDEd)%BOpln&@>KQI&fmGCoYIlNt1_h%)`3$P3pfw{juoVI1^*daS^oAbTq{%iQOOgVk0S6FxYh^<*>o2zaiVtzRz$w9{XUWOsVuQ_q^Ez?4N@jp#FBWx|8cC z%WPN$%fbI1^R1~or%t;#WY1^xrFqATIyFxEe-50FC50W+so`r6#$-KG~?RC@s!GBSv^hQ_9cMf@0!w;ak zuUXyRdEDcG=U@ti*YSI^T)Psk+v0LgyZDm&Yx*;(nklcLtL3`}`;G7!sP5-hH!Yt& z44T4~5MX*q+@O37w z2MmLOkbEik)oL?W=K3tK<+zFKW1e>i*2t8`8(rNo*iV7yL3Nv0-3o=tat;(gT^O>3 z=bB5Leyj2Y&OD=4RhlaH;o6x}g09x5ZrBfo;h?(rS=}&c3t$br3k^7jF}#tZ8?pYH z{UdXI{27^Y!6tY9Qi6RH{s7gTWObjHbA}xdx0om7H?|I`7-NY95uZ=dL|EV1>%mP0T*Q`UNP88eMSaq3VnBc2; zRkEB5CisbaRdd%jS`KEuWX79tex_WrrJMv~*6g=oAApx2*85Tp9BVQmu{glF2KWpr zFJ~{VFkXT@QxdgvyHz}^6Ka;pIofhE)#~+Z$UGl@0rhi|qvxyJnEnlx!6FE8mi6q7 zPJNv-#5r#|yk49z)QG=rru>cWM627P3F9~n1l8SObzg3pEN{Y>uoe2&ch`*_Z*a!j zr_eRmDA+ku0$bhdRr?yoQfLUOtK(uyGxjIIga*Xh1~7gNcKp?HEsvB5XV&4UB0o8pNJA!W=X`g`!dx!@xUtG)os-}sn9Oc|C8Kd1YWfQvLm^IfG`$v0n zrJB3CtE}!tq-BE%g~U5Qap&Wz%`t!Bwu6L>n%{zhmI>hI@P_ifTX0u!Rd zO)e|DewlGC+A~w`M7Jnr>R;-?hndCa7*wtfGmpn6zOKhR01DWo&HiltXhnUKU** zCw=fYa(kxyj&8u}zK;EzAr)jfvFc`7-ET?T4<;NX_O>%EhtxgJ`B=FlQ;N2`{aESu z^O}Casb=CkmG|=o(R~u#Fg^rvFyT7-61WhIn?7{uqD@G=fwVi}QRsS*@0!gsFspfY z34OvIjN_Zo_6B9j`JXvo&}5o|t(k|vKx{6P(L2q2fcfjBtpqcM={{nF{9VbPWxvdN zKHm)6z$BUcKRBNyp521J?@PB0X_;kV7afu*PotA&{u05DZ83}ia~+J1dEb}$&zdch z<#w11kAivM!X75G{`YB%lbv>{^FROaOiANeqF^j5=SQ*M14ls1tC^#lSgRHHBcK(` z@59_W-KjH0whz5*L7YTJFpi*?Wc9jY+Z}p<`nk*cdD_JZGK6#!F66(^JiM|4!Ce1)#*qfF?E z{T!1A)ZcTR%kS%YJ$*bp1P?%M=7Y)XlbY)ke$nYi^>=8(57N%*ug$eHVI}rw7bVLj zpt>!s?pV^EfQ9ffnBO}}vg?2W*5Bj5cl0pz30*CR71)0a-+}5rY<2Ivf$Id{z!n&u z&U+W8@}BV?{MMMge`21;GVkSyOkzHWu0Q52{S5YLH{vs>F3rjWUm+JF8S)R<4z36Ja?aX)k*C5WBdvy0&-I$>L=W*=HstZfXaQOd*;cndX%B!2 z6N$|}*ZSK}TxV(h4L_YJD?R=`i~W390IJLF2@`yWNISc&qkB2Axqsia)Vk2LUo)== zOwW{xU%BOwjeTQi2CDn4)xC$br@(}lh|PT@t!H}Ov|k84pD8z@>yKG8Z^M2WybG%P zn$`W8wDRp7-85o9zIJ46RZSC5sqOe1c_C9Kp{wn!GWJ=}5L7o}b)O(@CMIYpZL&lJsm(-vr+CD+vj9|IF?q24=B7=0=>B z!#M0G!3K0ht@*SBEK~uOAmS4*{)Q;Cf?RY(sa@b_tcr8=;lJ=h5x!(VcH~ zSI<9j{iStHb^Qx6CFg6mT`VNud+@zScaYVs+=cG~f5LAtGaM&H-OI~@_n8mad91dJ z==+&+H@bn?w-ag6mHm|~5~LlmmTygaAM_T|`hW?8iHpvsZ^&cZ^xVH+-8fDdMkKN- zQq+tljzB5eqmFpBtOy5Y5%vJqW>%$mJh>}yv| zkg3F~+urJKBJC^q1NMOTxyrCDhY7R`(@zFJ%#<46y1Gd>)9#@PsBRyt8z$`?_yRUV z?M6J8*2d}2M%!`IJkM?3&*J|$QwE}&Z~Z;<7S4!Gj+YCFRhL)cnc&MLtr3{elDG-| zyH)2-;zvOgszU8ZLu$gUZA>Tt?nVx&Iu+<9%O>KA6EMdM|Y<6*E~06 z$|1Ui^{q#@8}@g?2vFU{R`(s!*1=csDR{5jDyysSHwbOblt*{EVe&=4d zE6CRZt_RgUkFlHJ8${ZDV8Y|XW_@?GH+=;6MO0V&oxqMv>5MLaCKje)KLZwk>SkEo zFG%|h&hE}0D~#L0JvGkF-JP~R?BO|3Q_uW+G9~YOw;ZNnKLcJe`S=E=K0Io5my@;@OxR3p#^c)T zg=-m@Sj!>ubEb?$*B`Uyox0c`f}^0i`a6u5-Nw2cu7f79_)_;=VboI}%ykR@nkgT6 zbUR~T45L7G=UIPOlJ*_M_28@|aoTG3u&;=hZInX-H+zh~0X9=&?{C`AzRwSCySSJ< zS&##&yU6MeCv7sk0k1&yPw~s{)9khWYP*o%>3`9U+HzQpeY2jNo9X51erI)a2XYo? z5bM<;_&b<$Ge;6+*E>Gxbv4iVKkPhLdFG38(khO>*DOnZ*;P)0R=2`k_yKo-`unZ3 zfc9NGlyhXT6TX1;TUq~I7ayw+n;&(~C5@ymR7ES&E=z{}=+@t%!;)nJJO`?KBXxq{ zD#@X?+euTbjX`deN)|N z=PXIu?Y=MV7wnHg^1ZI^Jyy3pY4^Z$@HmX`%K3qt9KAVqe%6EcvJIx(0yk$#TXeO( zy@~x=SP$y&<5qW_{JiUohqEXn%GX%{!*e+GJ{f4GWR{atJQ?MhmIFyS6z zv(DPHh2LO&-)U6Inp(A6*s`vCWQCJ?K?8ywyEFlmb*iu3`_(wGqHoh9Fs z-}JM0VYhUzJBPr-K>r2vq69__~NM^8x!tto7Q{{^k$mw}ps?!(_x)%D+*C7+;c${|F3Ivu@>p$_Qv$#piq zd>@i_7%sh^eKs)b>%9f>5}`gNu{p`@LAh?5eQtYrmYl;gyc)C|I+9PX&o%#tatNV& z6S{sY+!ei1umRNHLDt_ZMkn*zRkV*W$x;&zaNc$EcHVW(bvyf9r{5ZL)Sh#AB1`W1 zg)!gizKQ)x_yAP5fm1bof0CB?pz}Xx6HlaFt^MxA_S$c@xfe|vd5ZEyx5(;Vgnbie z530*j&;(zLv8+kpd)NvIud^-lXG}!HoH;+=W%)YhkrF`uM5dRl@Z@%eYWNdB!UyybfE}uf%0n;uHz2o#*m2Y&epU%rezh_A+bWM9Rp*8mHpd+a6aH|_6tq+*+ za~sO`Li!#4*W1^2V617t=TUSE7$4Q&LF7v;Opsw7-H_G2pS1B-cV&~4@4p59$dac# z>cdz5NBo^BLR+o<+Y8p&7K< z7Ujjyd%}kD@*U&z)ASE?7ZPq>SDr&x{jK>DbpghMmcyNA#=ea2wKV~p zG%};B?KslDu4M0bb(>*-GmHY&^)ZGMe49x73gTX-9ur4biiCJir+HsmTf0woT(?tQ z8R^lzlst`L7^v=LR=3T3?kB=*m zo%<dLd|@)cv@0_ zk8W@5hrtL?-Kf=FOxi{;;V0t2D%wp0p2wo18*LL7cXZAH`=`~Fx(D6%v>*F&Z_h8C?wMfeY6Iu|@$wzk`b=OS~3d&f|78Dj!$J4V04 z*teIqS^Ze)=Pl|=v)^6a9oX-MPRm{0r>t&`74+xuI?RK;zj3ZGm1lv_ZTa$vy0Wsa zJch2;vqtYy&tL|qzn7isltZ7DoQr~k@H6b;K2LBVWoYJKcRBsa{q(P<90DKLl}+f* ziDhLU>OIOA#(?U+Yjx+p&;4geTE(@4ZFA$KIhcBI$hOnX%x9XJ2J=~6x#bUj8^`L_ z!Tw5U2&y~1lH>19q}>Z9OeEgJym>%*w~iV8IPN93K{xniU73fjKW5E79QIpoC?~Ut zRd=4%T}Ikg*ats?85d=}(=O8N`cC)lLObfp5p=b^9mYQG1Lm)wy02T^_euK&Dy^oU zg|vUM@4?FngOu+~yB?jC$umj#8~whn1P;0WHp0FQ^aa)Z-s+yYhW!-i4Y$I~uc>Em z$4hf`57>5W&X1UJTz;u5W6;&>_A>U%;U`etGo41`>#>geh_DBC!uZdq2Zy;AiSANc zA1({TNkjbgAE_&=(baa*_Cx9e+ykm>?u`+AC8X_y!>|v$^TnOE9JJq#9IY#-@i$dB z{Ugqq!o8rnVXM1lJ?A;0{sz_;FuxJc>Ml&6|6y)3#hE9mZa67hTA1$=b4g?*_D{j< zpt}35?%N740L-EJjZGnfmiJA!*c z1Yett?1#W?m?@h^c4!l)9cwv6t7S{&Kiz(EJNCOFb+fDcyVada+6veWQJ8uc-y+@_ z$J1v!^8@|8lSuV!xf5MKCc7w?s#|EoTN%H$ySi1lk3sM~_$_6oGoL^ z(CzNgy|>D#`x`=cLm9d~J-UCg$8oCV5JmT_qi#9$L9hSk735B0lWNL$hEpFB){yos z?1Qyjw;&rx=34pbdn2!AODA-+-Jbgs^&8Sbum6|!`Zpo1E11xeIJp-0zi&SA`cGoM zz}6QxrnBXFt4mdu{@9O%M?rOew7PGTRsui34yb)CYy2pC!loZ*zOa`JI~zOuUa~k_ zzV>`?tyc%hr}b(dx~E#6L3C^U<+g*v=#|^Uyb09bW7glwq}2u!a*55l=?lBBXv)Uee)_SZujP~C)!V^Y2ge`Y=gCUhcB+QmL7gMp*y{HycF@bYX~g04Si z&AK1^LGT2q?r^Jn&o9hRU^Og<s;eub8??Pix z-N{yW18Mspc`yAC94)49@vbN1=}xPw{bF!Uwp{nOTfU93Zv!1bb*Ee1F{Hf+CM+f1 z)0=odb4dDIEekXDnR%1{!)%#?u0LkY9tifE;8RfDMOJtJKJLT)#(WKKfuwIZ4{{~3G(s(Z}pKD?i?5w^ev7Pg*r-jN)$rVV1h50Wdmy7R4W`Q#K?4Hu=PNE$@gPe`)+Ry%Du z{Kox^F6?XjyVsKs(e+#1#@Lr!TTZScR)43b$3FDkM%oZC;a+0z{d)CR@7G7sP2~WW zUbj)$KMgZLb!S`M8&gwc1k8r#U}=B$6Si~KaW(e{Yx1;JCr^2Fw_(2v_JHcH zvAV5JPm!CTKimf1a~1(x&qkoTkna=hQ%|;dbVJxrgeO6DH(K4FNvoKaBK060y0&3{ z!-X+rkibJ-CRTp~{pv~A1h*WTVc!vYgX$i#y4h!>$VgZVZ$dhKJD$JMCx^&$6jV2l`=tb~vKtzod15&jUro?<9Jr^RJdeLR&R>iD zt#BKtZZoU9p0p_Z0=r-@^B&#DEVAW${M_S+dh!*zROMJWiv3wq!o|7UC;8ti0;g48PvlcYpKiyup z?evpOe?`XDlkOhf2=;qmFR1PdR`-lbDRMWMu#~v+5BR(5M1QMO&;E|X;E8(jqE{FD z4`C~)ZYB0X3BLTw)D^fJ`orFp>N4MDOwr6t2uq5H9>q$YPt9uLfa(;>o0@bZ$bw9j}{-I`y zd{>)31fs8&lbwT-q=a?g@N1p>2J@5RV()_vT%058(M_}d-kFiYJ6x&%pt_xF#y<2t zOxk2HVc_Wa6WX!4b|&b0B7*J(K3Dfy^38_@pt`FrcXSVu7MGbKXF@WVx@*pT8@-^d zzrWOW#?A00IdZ#4w|xVVOUY9mRQE3HZ%p0(Q=iYh{f^N#LErn}ubLw-qpR(>5PNeD z>jsbR<5qV7X^(&jPY|1RRq6e5ZO5T%IkFF3?SH3X{|2l9_4f^{TO%t)+QU%j3sVO& zUX*jzmuqeRYsR+{ra+O)bEI*STfUEB|2)h9)&0QgMoHTXQa45ZB=(l?fKufft&t`+W^-gSW1+=#v_#3E|BR`?rJZ3FC-<%?& zVH~LLA*=fmX>WrGtB6C4r&YS1sN0gwvU;XRt&<~#72I~Q9{b(!3#e{2);$E@xa<^J z4<>v|ykHgM&3h;67SS$h(B2~Ta^y*LHT;Bqe7zJo4NSLW)@$P(-Gt$!Jr1*g+Y-_@ z=x83|n)&l`pckfkAbZy6c{2Hfx$5~zT`*RV~L5$3iCTF<*7GQrH zYyj1L(dy1=M)^Qq^AxEG5#~t~=Q{KIq4xg&MDCw(>p((}YmP- zLV~Z&we%;j6z0PG!}Q&L-lb>Gt6P8Ta^05WZ*)?Q>_FEa%gX){_IrQ@+HqZ8oo|A# zHEBKJLAVcE1{oiDPNpOG5=Yy4o$fD$r_e6Wbl0g*V?Pt-fckrd)lF!TBIke!HHhc; zV7z5*V)nJQJ~R$E=SD-%-|Jkr zmb7^PdpS~tb%{Ur?U*xQ|2_N&s=JT*1;KZKv}0gG;*BX~p4%|%U#5liqUJ z>~o6|;N>6Gm*TOU3|H)`s`x*VD7(Y*=#!7vh3w~n)T z^JTQ<`$IqI2Htbp#dbZZ`;Vc2<;ZX7`i)0~`Pi43JfONQt!}k;DUu0SLLPX}uT;Ls zX~$X)!IB&aob8rF8|?oG`J@N2>K3cN-^a@s(oL91T%5yPC)a7mTF-Re9Nd^AW6<@- zta+{z`&XfAdslam)os<0GJwS}7fN<9ugi*;UGH;W=1OP(#brO#ZTL>=;V|Z)&^44GIe#Qc@J8zYbf^FAPyOv0hy7dirTn>W z|2yR#`tD{4vWQsAVWHD#d=>AdJ%9;C#AZI$obz~E1}4^VD6*nH`<08n{Rk!;BR0Bgx!+!Grza{mhRwcJS48(o{tOnJ6r@+y@e`JbGf+g@O9OXXq(SuIE6XaPjqraXu zY}#9BOMMyc(Txi+XTF~{2devx)qP@2id_F7zK%_i3t?Oy_uDxuY4%|g9&_r$aor>J zC8@Go&!%JlD!dM=`wIIL1m9y%RFJrFPWhfgY<|bM^!lt*9mik!yS_9>w{k2i&(C6i zDbxVfjac3Gr1b<71`?Nb{%Qkj!IxtexiT4Dt-r&te+*`V>V9fb<`RxuZXa%lfBbr4Jl5u0+zVa{W& zmj+Y5vEN-z&Sek6E#F75k3!-juI_ZJ`{j7Xh)1at@Gx{`-+26m3H;`1oIGjkSx?4! z^BhH}YOXwju9oj7*zbfrp#EmCr$q4mJb|)*EJdz^MlgVJXut~R{XjEqKY3b5d*7o* zuB<~>%l9$tr@=f>-J7lM*CuUZid+U4LGecJgDrQSCk)$pU&2rJIi!qSNoH(PfAg?! z1vh}|4z#*UNm~V9!6x{Eev)Z!tb7+(UGqMd#eBJFR<7KFuHSr9!mrqy{g7kCs{5?f z&3QaUnu7^#h|P8D%NOnC8Rt#?UC8H=>|9ys(d~kLUzi7~``<3xb>_f_T8ZesP01MjRfCd((VHj%W9=)WP8rKV3bB^>7 zvHBUZej1Zwq??fN3~ht|G-w+$@i=>*J#a@ZXSta_;Z&IQLj~;5hsL0OPOyIVc%HRN zn7a1@eff)t{8q6~(s*}9^QX!QkCuq>Gc+w%3enSG-m75NpGU}}>&JxJ85%aEi~ah15unta6-7J>TP%<8s(iS`5E!slSlhYsz+ z**$c3+Wtv(gYV|bVs!m6muSax=+9sXsP0m$d%;}Bb7%uCAcykN=lJ&8a+t!n5}VJy zPrJOx_4iTiXTn>cx<6Xoi{_=sRd6e`1M_=KO<0Fy@w}2Ob;?=&l{L9i7= zP+e){l&}9~){M{;CjS{H^INla|DO8HxIML0`G(i!%4~FlwjAyv&x7y;sBRUjd;9zp zc@4gUFJaY8uGfn^GeFyHZs)V10`}(^R|1=JrUc61ZZTEMssn;`85#-b_qUZnN)wWIU{ zzvjy8=xKX6jBUk*thYe@bdDd3FPF4NU_x8s;jHg=?ZwZCJ2y1rwV59W_T@@>zdKHK z#eN1vKy?}FP4Ip3I`@U3a1rYTnA(qhk7n`ge{w&I-={L|;qMO4Ijhj$xzY;V>P}wi zfc>p-8>sFp&S$v-J?!Lter7(u)6QG=?RNb2m&=n~=xRB{FJ|5i0Z`o? zR`*||?SqTnV1EdPe#iZEo~xS3d}ybgUuZdmlJYo<=9a^a*xv-jpt|B*OW#n^9)O48 z+I1(s58rR=!9L2tv@?H&Jn4t7_6v`b=LPr_RF_-(Cire#!hIol7)F8V$BO84O}QrU z5=awkJBuXe$$~O;-zA^wUhrS&rkBzUrsc^W=r)hJByz=@>^s0ZP+f+Ln7?D+re9pf z9uT|-a~AWwPC{a=AB)=gd>87jc^`GOW}b}Tx$%J2y=OW1hvC|HT;16HG|J(jl_`?) z9`yjG!mirvFJJGRx65klw2k8Dob#QLW_hw2-7Kry?0v>LXb0+VwlgOAhLScJOn8a- z&>-Glf9Hwg>sQpXANhXa>++;ZHMjo0hW&ad0oA?Q>Q-OH{T47`9C4Lw>I8dt=6Y$+ z`xjD_C%2tNSm~euC5wm_I{s3z=#$PSQVS*?Oku1f>n-fUcH9 zW$dd$T~OV7tnQ7Z-31e192~uk_vZ9*%Atv^4|<%pt>QeE34U8 zf`(84d+EztHg^0iwz}%Czf+!!MOXc8jr}b!095x$t2>Rfci>Yffj!OGO9NB3b8H`} z{z}(8&Re_VsbrzyTGHMy7sX@Uz>Hz$KXrY3?1Wm zR$-IVpBLMHU9VfXPoC7h%+)>pL)Kc53#wb){0HrL2x(8iJa`d~c4r^zcE{gs_PQBe z)83+Yi%YRmy-55n6Q)B+>aI3cv`k5)_o6oIFFb6y5+DN`^1kKlR6S@-{-Q~q)>qZ~RldI76$E<~S?Q-7|#)0adZ*_km?c9wfGvkkb)5Pen3yMzpsVBYmDsm|(V)7yR=43s<_z#Q%!S%V=nt7gneU%;u~RQh zf3}Kx8JU(RU!j|3{rw61xJ}HPL3Md`iwVBbq|Ji$5P{(P%u7-o-O;vx(0!W7b9s_Y zMGC~SitNTd?i0!vRQF!1n@?Ix=ngl*{3fjTzY+;DFA3RlF#Fl2T?AjqlOgD8J?o48 zUGNa7?ntXUpR|wQ3-}aFJ04f)T(_B}`^g!3vK-wa>+e47<2I*Ac~ITQt?pT*T?{5% zM!fu1^E=yS>~P17`SYCTg@QBlq(TkX-`dzWfB>lOB&&N9X#>H8`-zRe(O*uiXUF@U z*?H0xUG;Y?_A}sRP~8`-?h(??*utC-(xHexvUst17f*srwBnSuQp_y|Kus;Tht!^y^cvU|oKZTfVR1?-2T(z#Dm-WoO+Qv*vdkuwMwDg6h_=y1lp3 zUSI*tftftuyVmv(t89IEi0jrQ39;pQ@|;I^EA~IYh1*=+qqcnCCv7*RZ%>g6pzSQ? zr?8auO1^Dxp(Xq`{)Rrtlf53@Aoc@bGN`{_S>4K?QTA{T^o8+_;$%IT^6h1H-+nVr zuH?E!KgyFvwcP7A1N%h~0oC1Vb@z~V2r7QgXJD?|A$wk9L8za&q-N6#PoKl&f+KZH*}{aj$L*J)p* zNCq^8D`9?+`w!im`W4Z7JJeZML^tJ0PHm&$gx1*K40nSWe$BoQTT&(@EF^6md3b$xg1{S_&YzFHb&3HxTnu@gv6-@YsIGE3VhV6fyT5;@H1>3L7{yeFi;ns_iJGdW2o+F^TJ+1Dg z-#D7}iL=1_K9iYtzGKEsGhT$y?SrnCLv!pq!5C28`>k$`Z&Tz(7zn+gXbtDg?f5p; zwzo|7PJX2w2M_1*dlGKHJ{|j4VZlyU_eHCFco%EqA5-M1-R%8C?dH5EW^Z|E&ic65 z-Ojq`v*C`v!AtVx+)Q^oe*Y)h25bfO_aoIMEoF~W7L|$3yrfADrw(fQ>V9jqYQ79a z*KaNc;Uerapa@hq*6(rMqNH8$GiyU=3eAu4KJ{0ewwzAgHrn6vx6HgcR5M>zp<6ko z%6r+c9}TlXb%UlqMYsGf%zxoVxDJMJfmZEv{B2@&b)Fi{$d};hZaLhAeF$cN>e5_d zy5^tFq<;p>DzPT4LVw7I#?Q6(x*eaFWai67S?+cFi#)zx*|!1JJtHP7zFMSR12;o^ zNbbV?_ZCOD#P&Y}j`G{PltZ{~zVz|v_QZY+ECkhc9v@?$U@vt6K85v=@B_omE=PB? zZEr?*t*K`P`LYn*=8jL2u#am4`JlSaZ8Uz*i?l6}_#1O|^Z8cuUKdCAkS&K2#?3~i z{#>0ef1pc~jD>3CsRy@$>b7@2@-^Gf7yQB52i5(~d~!1Pd9E`4Hp`cW zb=`T%XV~wAU7)&St#14Q=D%PaoWy1UeR=wrrXhJFcNn=j+h^~bC^mw^3M&<#}g z3Fos|>v)dzc`y^a_rrJE{z31Dhp)?*Pd&ODvEK!UL3N+Ax;Gt6kvm`vjD(ig(qCWa zly65{4yqe$l`ofMyZ%0h{cG?SsP25L`}iLz@+&kx#99FMCi1?-rB1n4ZtC<8MmK?a z7U`5P_oA!)Ss42T@G+=v9OXsuU2~ZG?C=CU0%;|jzJ>va&(uL)-9$#tLKgv?_j?Heg@U$h*3=U<|FJ0 z!#sEqO3)3jcXW4IU9&zm{ziM}OE+}2U989cQ}_&2_j;>)l(e*?PCctee5gP7@8jLM ziRmZy(Jq>qn$tI57NMIKbBXO5?5~Gzpt@bG?ysbs@fUM6$bfN_Z-Y-Ae=A?&TtCzA znER^H0r`@eO;;Xb?ZGiRbRE^B`lxGP_7Lbs#! zcO~|p!ME|L$8|gN_X)mwXQoPxb5bS0QmSM^q-A+|^1&nt`OC|$6zBQU&dgKU{*pjq z0l(*yAfZ@R#`*J8WeK#uz}4+!CPe7AxG+_=!3`IsN>j*M!gI##Wf^}HDmnhv`z%iQ z8WK6bK)yqlrXC9k7pKZ4FdMWSez5+&dP%BushTP!5P^;_aGwc`?%o5AzR|6ZRw%PT zYS%XkPPn~Vs*HnILFa8WeG?L{N>7#Ua6g!HuwVS)lx;C%P@sN+3`VE2BO`OMc>~@8 z^>4VHH~m1`Auu8S($v`aTbYJw{L`T8AIU3_H_&Bj91BUa<9+>kGNf$c0(WOqT z@8yWLqh6t#kZGgA3IwNyC==Fr~`=b8QR)x6&X0rUE#hv{d|$3EJl zKq}`M1t*yMs_Epp987gG>k8YCmw8_`(6d0=l3(jn0r~ELfuMe^aio1OkhT^~*hp;V zbMw2FU7td|3uHXH;g~hQBZ>X#nW<6>a6jhP>CR_~=hjP=N8uZojS>y5ZO1@m>9LfmPPo}~qIJL>q{>R_lilUp4?~Yd&qgNejdvs6t=+-6O zgn#t|qmfvorFmaCsCr@`r0o^|Ep5v zUYHBh!Q5AjZm{R>b~w6P4*q!s@{C9Kd+hhYK~UY(olE7r{OVMx2Sv~Xy#A)ydNzlS z%gnd@FBizq=$iU)Iqj+=_PwAlsBWRv9YxwCFyT339`2}`b4x#zd2y`t>GhYruq0h`oN9x_p9P zuQUFZ;n(NnQ@E;NNJ!RuF+EiY{k zfj0_d3A!4zezhi_`ZfC`e#w#osd2SaUPdEGzT2T6XnDP3{hCDDY%t+fV$+^VxTkK) zO2hGb|7L;o^XM+Y{sUMCs{6UseeGxk`HOTDe2vQP2URz?v_RH*bkne}4h=wcc}+x2 zY8q*?U^y%VZ~vOk%{Sw->W1DfkTU~rIedZrK{yPm%k7hx?$v$DNvp=G(iv79s(6BK zp!E2)ynwpr>h>Vd9T|yoC$Z|bvAP>b+YVpDBN->2+bAlf8{*LN5s&WAy! zz?i>hHDN9eCS(ww^t!Dmpboh6?Og1eKwD7VsaE${(&oS#co%wcWJ})%T5QYr`1^b! z1@gK__gn1anzCL4)m>(FSCX~?j=+9M?#UkZt!*s08~coPV9G zJImg0_<^*lEm)I4Gnne*85r9xf>CGuGVhHlqTS0^)CY9^*58M)p9a%G{oP@8SCX~? zOxQ~7-S^Y>)~c%ASKUz{f1#`8umk%)U|366_mI`y-8xl9U7sqy!1u7~Y4#j0NsytG zL-nbSzgiA*uz+W)+;MzRQL5Yrqd@)D-$9r{+FUSU332kJ|9&3b?AMz8g23+uG8f&B zF>BV%*l&bRH@Ld*+V$e{Hq^hisq!0q1B+kd{?jXtpCt#K>vjkG8|h}|o>nNQHF3}3 zjcb=GVb~AqZ)0bM@9W%wGJ^IUQ>8T&u?JjzuA@8EmP1Q)FE;k+h0+aOUEeOlejRKC z)m>qAe);i{z1#LUNhW$^bV-mQukTzr#oNzYwRp3(4{<|e}1VVfl z()vRYTRrKNtqB2cIBX}s8ShLe{X3UteqpK|YuT80|LyO6hS0r`y*XXijo|M-2#c{lq-+P9ea_&!|i zLYe2$eVfCn+egRCmrz+iC{@?uy4rFCPD+JDUFC({j~ z+rpz;`u768RyH{nm>lj%m$t=ilz-(vc=H|H=np8N0hp%0%e>PAH&yiI&E-B4zs-0smew?Pfu z9z1C|n9on98%B4YN4Go;+Aym7X(!b+pPx)Og6@8g?y1xVZ@;5$L)(Qvt5B}G)-B(1 zy!Z9s1MzYgO4o;qe0HyG7o+~6T}03w<_6u7la?>KzU$m_sDEd?7_RSM?xecr^ONaHcA>QL=x(O|7&xkO zQeE@;$#nhbKJL-oIDvUo$o-vcZ~xG0NI99rUXlsZh|AJ7za?o*g6MAW=J>_b7H;|eQ$3qx>%-~vA1Bj|qTAe~`@ixxl2a(7|3B!4 z>laGIqx-+QZc%jOTe{`@B6Y#=&RvQBcHLqZ%>H9OKUw)oF6HadeU^T8(&>p(_xgVy zFZ$7rXW0IC-hb$SwVs919qrNmU)6^|9_8!N{a@7we}17H_2~Yu{EeWS-^#si)2R1v zKna-kmdX6LsdKG-6}zy0gG_in&c~R|xjTD5eyF`yaQr!}!a}(oUBA7~*O6y1yaTFx zuhm`Nm31Z5zA07GA+U;b+WZc;87rc8{nwFonmJG6Z&WBxdHfxX{bTSnsP21K_iNhj z0@9bke(n`}$Dsvw-uEGEB$gKvMfVeQb^g1WJR4vesP0Er_pe8N{Qe!9aQXz_3Az!h ztNS8>#*CXD-M`6m$<3*94X7?hSxxXQCG8t1e+zqC#6t(OhkKVZpG@~T>nha^HDi9( z+AZIClnv8SsYzbd<#Dr^ZtP$CkFoKVgO10Y>Nx#x7~S6JYB@}86ECwN!=tPB`MtWv zCX2;R>E{{M-w3+nJpN{*Hz&s@ojtl{f0p1|Kw1P$*hE~LeUZ}d6)^t(ihcOHLV4Na z?}96m_9XUCeVi!MJ-Yimx=ToZ50-;hx1@Bx)2~owdUQujW-SCC zd31mC=*FDoA7gW}b{s@^wMX}3GDUqAkSj^0o32dKYvFDCdZ_hauIu7*4?_hpLfI{xnD{<85```_?j>RB27em~iF z+~0ge*_Zq8-ZO9gl_8AB=<0QAfgkOl6R5vUV(zlPL)u6%VFGdOBF;-*_aCm?orRKm zqjTN5Q4UkEpAYYV>b9}E+e!Nl{)PkKy>1DQI^}Tuy4_VMIp}K8>vnp7_qw&?!&5DX zz}gq(3!Q0=abDd1P?TC=+$Nl#dN)k7sRQGS}%MVDE3ZS~*#bm{|Vzy5z zk#0iU-1rlGG@2%8JBXlrp-1;3@?8$KJh}(1ZbQ;qf(dPiz2DtYJ$7u7^*4BLp%i#@ z2fpHyj^ybA>hD?93xdy_-{@|2|LOcj1l=wk-P_664+eR3&3Qbd8~c}kzTmTM;4R-K zwtTf5{38nGEp)Zr9x!?XnU8_`tL0lr+BI+k^l4Q71l_%MoYej{a9^R6cy!Htw-fog zg6eiN71!gh`5!aiO)q1<`;(nF1<~E((KYL}AezM<-F`+0-QJ`P1rtURmv!IA_Nn{f1zZ0{JV=an0Fu6v{UEu^SdLxE64+UZo*A;LS^j( z9N#A#RVeK}x=qQ}60QgR-m055Fi~!DWTlw+WV&H=hk0~gV;{5~RWo;D!oTUhX+GmS zn{W&9$#f$R6v}jTwLj>M{U8_yUVrJgeeF)KD1Ar8%P2k@Ozdq3^0qVH9B&7sX$KzN zOzutO!xd0k_bSq^1rv&hy}H^TsBQ?|O&;CS_rdhK8Gnu5e|sM+g6=+atD8)O%X*ZP zOsEH?{mmn-5twi-@et--rR(dY?M{Ci98)MM?c8~OYwSBfXDF?E6KTD`g#N^3T{m6- zM$xT}uJ$wkRL`!Uu9zI=G4wH7yVD?#{ z8nnHNc~YTM54JI{GuLk9Zs-1IkOx-3^XRt1zAFU5l!MW|&Fc0gZ77&29EFdI~t?FkcN_2B^NGKBL}#7C>R*KMg?Pa0h_PDURtlnx%< z3&_(H+JNdlACnbd_FbuR6^wv8A?q8~lHWSzu#|g>-g1aMSty%5x}RZx2omphb?>m_ zPS;_~W#Dy~2eo@}jJjCnO4Zc_?M>@FW@XkG{vIVw-`paWlCipJAm-86V z0CK>TuesN3^paSds_qW@r09%7>C@5G?STCqFc4Jt8>>5uw1u!5R)DDwyKH?Zw&SE; zx6mx+LxgSqwkF2>_veI8N_>ep11*v0OO|y-%(y4k01V*C|{3m zKK3vDT|sUoR^2nK?wH~vd7AVOAp&!Du`d77(H*Vhy44N7Tqw;tx#vW-Vqb1Vs+<9; z8?d_l?qjYDZ^P>l*~{~6zdE`@8GDS++b@li3-LGd2J=O98IHxz{~yIZc_e){sIK39 zajshdY1cwGXm37eO_Gq~tV`19fA?dgzia4!ll$4|YS7;)>PJ4~rfF|g;Z*12A$0wn z9e?ZL??CkKhewS+R<|ZG!S^a@D_|>pWIo5=D%1zF?(^gCxj3T!%3F+^=xR`Zza^jg z%XZ2s`x``e61rN?zDMsUoDp*U?dtqdUn|mXgZtrbSbI0mCJb?|+e}*@`r7_1vW#^f zx_;~M6zpGuk3h>|l-0fD{!}T14sZi3{{-DR&U*m!ZF`&1!RdFxD+(p9i#r~hdEN-} z)EQUtxb6#9*Z%2PWafD%8#g292GBM2%!Ck{-CHHgL&WOuEa#(GKlvExCOk=8mhSO$ z9`6=Ps0@Fnd35J`be;cn=A|dwX9=LY5?u|O*c_OSW*D?S@VJW!@tcpv%Z8VH$LDw^ zF+~1@m6O*!e*I+(si!MQ+W;nPBMz}Qq5YxuFFjebeaasWMGB=_S64TR z{Tuu)andNa9OG#h1Yd2^8h{C{iCea3UEc7-e(SjIdxdfXy8f88NPFyi!h@jKr;78L z?=We#A7H-)Zic1hc^7Owevg%QmCoj#@!7mzjUtoi+CmwDu3qARu zC436&p;tAx9I|MyMpxTwbX}pm?a}=T`#o>~RJXO&tvEVW&V^cV33zn_rFB0nl;1qM z^{{UYEkJcUTHRYo8wlgzJ_t47{%V2aXHhBL!1_X|d6QcX6S1EP&x7iAv$}IhTMWyf z?@OG)qVRNW9`xw)=Ol`55ZyEhjy%V$rukOxLy1{=H%5qOR6l32927&6{Wp&3^Ns!T` zKLXSEZ|}TuKQ1w|d89Rl zPH;VVbrU8yb5hj}Z!DB49^Jm!4~Ba{{iRBo;ETUCK_-ws8K!SKalRiaRldPZtb5S) z$FlOg8+l%WmqB%3b3XHJAZ;g@aFDn-K>0Ffa!SDY*Q_HlSZahnDU`%p-0{ZzUPigG zlmn>l%9xVG#s%j;Ih%3AKa4l%7ND!`q9S_dLsgIN2Ua(qv}SMvggK|{t-lj(IcU2G zZ)QGS*lP}nLVmZ{JUmr&~$hJax&ZB!_uQ;hm zo;skq<~aj`@90bMQpo4A|KVZG=AQmR%h>3e{vm+wCQtdQZheogzIU&*?#af-5W1%Y z-F9&$daa$%oD6`(cE|H~ z`0!Ncqd{~dW$2#i(KYjrQ`L>2TaNaL`|=5w`dsubgKW_HFvj^Zz9Q1P!eHnPW}kc_ z&It6EG9h z-!;x3^?gU$?{LN=?E6AX-UZQw-!kZhzrC1`p5wW0!Ji7HVz+Mu(%6Y$0j|1{5yqWb{4=DL|s2fgOd(xdyc^O3I~Y4?B$V~NfE zg3`YSXXd#SiTHo!Je|j1bME3X@;nXdZ=CHCPI~UbwzuQ^S?C_M{yxm#c@@2nV24MS z>75C_(RTe~|N_=xWgVyPJGkA9%ghDc6S(y0fjnM*EkHL^%k* zpsW6x^(Mi0jP&10H{p!TviGx&_dCBA%I6;4zl`3a^k<;D=D9Y4?+ntafC<%zz4IOI z*Ht%!Zfdbx&(z=Q9$j96XTquZ`$wTPEJHWTqZ{}?=!Vd})1x~vv7+Ro+1R7o#OlVp z=AU9dy9K=EQ0$rS#OA-~eu1vvW*UtBJ#Zgr`8Kz@50dscnD8{QcOIqXYvv_p-zR*i zP||L5`v)^Gd67J`Ky_P|^4IA8=0;BAj??D-w8TMCDeR+DZ*^|tYn zU&cPKj`N|zg>o0Vrr#;T{|)5(77loH^&HM66PQ;(Gq@VMUdOZg-*Kjc{&y|y`2W%N zE^t;&|NsAcu4hV`8GKYEr;8f8s1#{x=1fgB(}fUSadb~1Dk`ZHAw`nzqJ!y1QA&55 z=!Os#(}hliN=Pb6_&wieuhrhoXFkaP`(Ka8)6P0;z2?2&d+l}GYp*@g(_RElHk1YE z+FPuq*ONsdw&-2=v6jp>434;Td2ze9|FXA<`^yba5t5%!k4-swke zHuag_7kb?yzc-YgJstn5A3h=d2}pR-)tz8;Gl^>fLFfQAa_NTc775{pD7qoisee^B zB$+ZDUE5ytA^iZj53Ic_jqZoUT`=CcZaEzH(l4oUjWa&B<;>QiFQ0+M1Fn=k#)Q9wE(Sm=2mlE46Puf&+zHbsZFH;`#*rn&IbESvLXV142qW|=K*%mDp!sxz>uI-N;L$CDH z_#Ldhc77mtBJVH5Pp}_m%!-qK=Q;Dm$Eg>z?CQF-{n#D6I8);LIJ&z3-MN$K7eFhp zx~m-%d~=9<7f!%om~n!6s8)Pyntpl#*PK`2PW96xRWoH6x;9upq)vAI@F_q3Q$N`2 z?yr_9ZyI~Y;+u2PYYAPz+RJUK!S^O{+aYNR>q|MFq@Od9`O*;fW>k)s3%vc2nwjFe z-L==(qNH3*zDi)PTS@$dz41pUrbronx6gw0kA=ve>&b7=x2h-qAEZ0e^NpfA5?y=U zFGH^m)CYUMw*S?NxSOCi+@{CM?!23UUeGVE17MZuO^{cg4YG+EtzOEmv?p}|s zuInNA&O|qe?hPK@gXsMNzj<_P8eQL1>O#Lr9n|3$wpctxfxDaH>|Ji4|YdM17dqk9ltJ3lrPy`@m- z(Y5{1k<)m-28&=G#P*3`v7(mU?q&MtJP|gfz`AjFV|#uak2dh;PiW1lhsw8uoH5uDsfH3zC&7i#@u3{unR5L-Dd| zit~P++GlmoBK~`$d+cv?Bk2C<(JlHui&t0Q`}@=Arabf4_6D;vrPiJ9b$aNfgwxg^ zd3DF|+p!9Z|sc(GNk}r?SJcYrHZ7# z92$b^b}LDn#gX8-MgH96+hzd4MT4N%miz1N9T|F))KcFzJ|{s%ro`zA8T6qdiK89ZD8Tc6V%Bvq3ZfHoJ zMV$Xx=6hjadV)j`uy57d@v@e_Tz?V|(uVq)OsU=fbUSCIBub|t&bnmPYlYaE_G^OZ z_D6RxdG$S`JF#Ini~;M{>ckU#y8qYn#4m)G;Bn>|gZd+WZHr&^`G0BlY1BSa@Y+mS zSd6{*oSSmWuQf?`ruIhAJ&bOIyt?1@YV6noQLy#~`HkSqdyZ=lAHX{3|0#76FAij2 zZxDM22ij*!&Ab2Gzqfe&`w;2Q)ZQ?D zhfI037<&(+Ys+nSM94<;P&BHex=$9Wu@9de3zk#S&xt*%kQf}`hE(%Fu)^}Z# zD332@Jq;W5g|KxXiDTvVwoIvh&wu;1$Ng?OAo&^F8ASJXbc_1+9Bi?Eovv2?jbFzX z@oTVarpznG-dgBdzs^APO#K=`_W-)uPkI~Q)J5-F=;E=roLY;$6NsAw8zBO72e4lg zlhIn=hOu`T<1IT+-EQD@vboE}|3)`^cYxoJQe=ksLvG=U! zS(ghnpc3fw60H~1-i5}$I)2dSC6V5l@=`JOZcj)&<=^s%o~eKReKO?-bkkxcG1oco z^!*aPCZ1YUgHQKMXn>s>ayWXQPintLgZ4vW^Izyz8~DF+e%J7~`$nJ}_Ug_$eV+iYA8zNjJmZJ!{>Bf1zM1l+N4Ep% zd&6MR@^A-!FuwP_PTV^99JT?k7D@C9r+?dl@xJ=k_Cx)5WXc7D-0{Otq%ZLT&$2*0 zsk&xtkzAL!CeRv|P{!;xb0d^7)lAw>`MNVxx_I>3k+vTU0;|_Z9ZCH)p12wCDyZJv zO3pLX%^tmAf9hHE0b~fnx4u_G@SRn_yOJ;gM#0px<0PdAYl$vOkPgkA zb)zGHXYWA@Oz8ehx%*ys9Q`HfeY2R01nW<`Ze!DI?yWhcB?N=vcoy|Q70P5FUTS>g z=x*o!()03<$&?7XwPPkxhUc=D7kY!${muE!xAi5~uD#57Z9eM|;qm(Hg_!P>5V}$G zeq%L!s`DDrmolaCeeQiQne=m@)B;y`k8>mVTED{lFFXb#;b3d}i#dD?z7qYf8=ZBo z_WFlj%ajnhTF+?E{atrI8!r`Jb#>YPRs(mW8&>nqeR22gsrMVveH&dT{n zE~lx%mr2|;py4Kts#_!IlqoG&8v1uK&%KvqN)mgHS=}zA9}i)${%vA(4-zK}OUt=% zHfX=umf5}Z?Yz2?*E1y#-OVv8cwR;Nde9iGZpi4~LEKn)7N)=<7BUp@&?{{N*UgmO zdi2AZqZM3{DPzzL8Qs~W-wwyY>W(tHzSo!!hgI-8l-zC%A#+^r9C@{G(ju8 zK2ttHcdF6dMf$kKJpTZzThplueeV-@7_M4EIfjk&!~AvPC9t0Nl+Asy>;>94GKN3O zl*&U~Kio(9aWDg{?#)Jb3vmab#Ou7%#<4dOE~CCeg93ZV_@Ut(Y^Pj?w`9s7bfd=J zGUUmEhr#OJV|2GI#m;5CKLqXJcy;y-Z_7P}AA(;xu-6yNxG0Hl@A+i&QQqI|>g-3`1$)_+fa}>vR^0Do)XX}L(tb#}bxyxY>+!ev z`JcAy?Tl0i-LzrIm3BY6{Dd)+QUuLX1iJqz{2 z9_Ms?ONo0AzJ;COtz*-g(pLFV-W3&0*2FZh0HjNV@DW(ux<+@-M%G8bMej03hN%mAUdXp-)ZTq&ef_W8 zZw1_M;oL@2dU&F2G`iQ4z7q@rtNW<)n{Oj=2O#A=${;kL-K?>l@4r$%j5hs{0vcnj zCnNcd1#qau)04vKlwg=pRxL;(y{<%LBZm9zKfJ33(NBiD#fWE)?Xec zlkh{dOCuRO!l{4DF~|26>96>JbN$fOZBIIa?~yIsYg>8Fyp8ezxpVlA_6**SL^t<| zWT6U@BZXW`5{I5{B-e%1GAHQ$R=1Gn5unw%mNQQAAKw@DxlR<_$>>@?T#a5A7!B4B zx9A_h-qh{*6gt55PKWOVC%&b_he1mRY%nFfrNT0f!XJ26L%`ojyUX*=z zq5U4lw$Oq5ZFz`t`yS6ETR8pHtE$BbuOUn1-9~cvLy0oi=*}bkO85k3){t=i6R`+?MyNb9Cuphnvw)|zG z2T*=+W5(Wn_~A|L z4eV+pf1o=xmX&b}=|6%(u)39uZpW{&71qO>(0VTWv~s`ouE2iy+;3XeF5tULEAVf0 zFZJZZPJdm?(?_I_|Aui7SlwzyH@c5`!u`~t2WW?&H+6dWt7J(-cl<9-d8jhP88?Pg z8p~{SZLs%o(s%BCJcFPA>3wYb4^pDB{E4o;-%6l&F;oU?Z#`r0K;lB6A1N~}P42AToH(i%39q6xD zdD&^_Y(;2TyoT;VBfJN_!*C3&z4p7D*BmY_&%h>F3rBV_ z2Mua(fw6ZoZ(Bo|^ zVqBp0PF`baJK8O0GfDp{EC#DP!RUTXT*?tgH=U#I|Ff&_>Eq2#2SvWbfx(uI0yi|4Hjk--6Kr|tMLt^|BIurJc?hHX z0=f}oCzYc=iQW`=4XnMow?4r)=@179S^w_)H~vL;2fA|+?t4CCL-dBgt6=TD z7e5eukDX+ni{IHh3|@uJe%6~U;#*zRXTcW}g=s>u?QvvWW4V3of7{#U57*wI|H8li zCn>+^s=be;vcC~}cfky>_U<$GKKUo>NT8{tvg$BZ0?YWG(x*wXoO&|KcwQe)-0Erx=Ug50DY> z+M8$W-II_i-zTQZ14*ee2s+%FApMReNtp6b$o;0~y-fYfl$7|_HIuzEF|pOR~(QLqWOaIC^Q+79&pwarN!@3cX) z)uAP`SZnLHlYL1$3f6%2r=6ePd=A&>Tr|&1mE#K-bRa{7m|U^C^>Hb=$=(6kk4Zw?J>m zXKuth4$PySRC`bLn`&jrSLjZ4^2$*1EQ0IGxVldp-KWc?O1%qGWk2kJ!b_O{$neSX z0M~7hGhVAuEl!@t50SQ6a@SMtcw)tcsj>?$Ebr>tb$_oA_YNF`AE5Ux#tAj_{kJ&s zIOXAO>O~y~2HR)J5|8dx7p2NIFa)e0x)}eaRY;YqU^v_h<*$sB!i(t}(U0yh-I*Uz zT^*-{x@IwucgJh%NWTpZg4G>qbT7R)RkEN5+zgw(WlcwI+8pY|!N$J_tH#L`{NV4E zCAsL%HU1q<`f2bMSY4`B4ZfU;sqziWwIO(5(nP7DrXoZ9BBH~tqhIcsrRevlzG)vy_=)Oz(@8CzUy17R8;>xK~ z9W*rLI5?B{L2;v&FB?wv^M+-~Nsk`_q`waOfYt48bfd(bRV7uLLMC)?6E7*e3*P|$ zRxx$XtEQcdKAa_OpLYG*ne_c&3RvCYMz{JUsWJeTzWz4HdzK!9=eqojL8WO8jO_k0t8p@u{8Xq?J((}*7*6`#k`Oidm{-)@@LRxR@ z<)>ZL+T$PZD-=by6T0^L51*YVW8q1#=WTVLChj@Vu;-@Y_d&AzE`+9JN!X)1iF29@ zOQ5LkTH?M%_bB`bTF*S*+qwP$Q{P%$nU*Erplj=|Lh{yPU0WUS>SCg=9&umsyM}`t z|LXa52;It)T-_x_zW-qTtGa9WZ4+qN@;Bdqkm*^{%cJ`)-$~dETcD`DpAxqRG?Yj# ze!q0Po-l;&T#xS0dY-isMVrH-x+nN8shZ=5(j5QF4}oX0WS>X(|H|G7x>YB;{%yn_ zVE@bBru9B<_MAhIr2MQG?5GWy#{m#YnSFH_*Py!MV$Hl;|7{@sXRs5jZjNbRs@6!AJkW3($3prBrFxuRU)QAHrS)3) zE&4H26UDEI34KZbAUp|HcaYKjj<~p*^qt`%7z0EH>>NI?fh4N|Eqc{gzk0d+WVs9L-BGpOfr6W8GH3P6Cu_g>&cD$0qx&biekZTYMQ=51^XTRp z-CJv=N?&*khJk+n+^**sobB|(^?i#an*O~kdFL5d_ifUDv66kTIqG#&KhR`r@acQB zJBin@m!qzqD|)}FuCCLLpnC#cd)*F_{um@&?&@-DYKZxF1@Y_PE%08qDnB~*+WXD_ zL6+=%*43?9J5?IPbztqCYjkH3w+Pn38{qvuYrpc&xZ#xUM_F?HbFLqLC4GrHR@ z)aX7!+yqzvFTkM;*AH!Pa{Ze~nTl-Al1(1n%PH?i$a7X*SGQ<6>&b6H@ZJ}L1FmkY z-uXC7;%3sP!nk#;TY8%Gi{Pd!oc`w`t{X#J4aqATq{`ZcsZz2L?FN%rTR%vV!jpW% zu6>d)?3X;oyx|Jj@)LSCyh_>=!30^sk<$>>Tkiaru!XpNFqd{m*bHkk>nDT$Y^ff0 z*12l3ll)$)G3^Pcs^-sCA+GmRS*h|ml*;BesInwp{EHYXvQd7adH-WfQ=UOFKN!3` zTZWs>)*uY^rN5#SY3wjF?%}^cPBgsBSGJHKiJms?^>g4 z*ZYQgXUpyA+IDdg>7RuHu)3K>w_FDESj4Y}W#Fx^`Wrvk`4j1rElbh0;T_U%fnA`d zujRL^^K;_Mtm{Z@kt(U6eZzKTS(aBRP8u*KliRc9eCDi=Q(H#Td9R!_H^OMJI`=p_ z$t&{cGv%ksL>M(InQvk6te~MoN$P^ zYAsV^b$#zD%sH@jA~+&jq`=KzpWnZknDNg3#qbHUo>z3=S53)Hz99?X_S=;oRGWEpzz!f~+vKbs;;NWQ9ds&s;9VQ;;7 zDZiR$4rLiPRYwj|HO3OQOk`=F=u;k$_Y7XHf4e%8)$*^)iW zou~SNe1E8B8`rNR96NoN5LX{Gn}sPn7%_%q^&08h$2ULR;Ebuy$#Fg0BK`bs!fSf$n2)uovwb<$1g* zN7gQXLAKnFt_`*vwI-jn>jUTd#A`WfN4(dr5cxkOKeuo!bmsTI@HkkzG(W+2?sch> z4fn$U7@W*=_up94z&*Rf%=6m!n!^jSrQ#gdt}y90J{T`^I9j{jc68%kCT=Ns?TV6r zpeMgQuQxpTCpqVJM)ybHm2BC7uAdX?S%&o?=zRm_uXoS4qPY$~-oSabOO>DDJLt## zkasofODQM8y$P}Pp4yKr&k6b0XUkdCD>l@;F*Wur%quzC^S#rQk1XQy!F#@8^501Q z+D4!)zX#zCu-8HJ6MWlOZvSZg7`B64!%YJk-VkWVFJ9@pKKUjPJF!q*hPyY(~LN{nIi05^nbywJw=MHx` z`-g_NW=oxU&V6z%H_JfMkA+oWb+3x`#Kreu2ii9H5x#|f`{?g~&-|*kAzYuJ=l=D7 zo-ISswZZzKa!1z>SEH--*qPL~A#~qG*N z4;rna&i#q+j$NE2qqZbV7wkP%o-Pc?BGa&`&DP#Q-CTQlmF~>#MOR*S`wv6V8v{Rq z_3x)nCFSehgL)Ho!27Ty6&i4>%8MnH1Vb+YmvP*2J@+yPcM zi}@#luT8I1xd%o=2)yH+y=6}yM}=wyq|E%p*t@gW@q*L_((i_|d%L=i8{KF6q)N{1 zJgb8huxWF=9NfC-{aE_YACp#ZYf6V^!v?wEQPN?^*;O_x;`LN(Y57&KIz|p9bk2<8r>Rqq)Kb(2i-x(r@Ib2 z_2E?d(5h?aMWgKkvJ>5mm=*LjNgsxJV0EuEx`&8MyOX{WTnfGEv~HwcRlSI*XD{cy z8{MZ_Is|xs$MtU(>9zmajH4|NV;tT1Yl-Uw-u;w<fASb%{+2*(w>Xq z;hO_8Vj*=@EGui9NIx5@_jh&28{LU_b3ekL@C%gXy`P11DcD@!8Ec$+=&|4U1~gic z+XJ!@-Q)DD@1f3Hau0PP6oTFgIu7{I(M_&9AXOfMFcdInFn=4*(dkoe<{GfYw(KE& z=x*+F<`Qhs^%dHmTtFV{|C8uxdvrDX1Q&SvlX^XihEwaT(d~k+mY1)vbrE`N;6t!} z-C@rEXX1PVnd^rCK%@cl^Q=P)Q-4IUwKcY$PrbAkE&srP%qzy;%gAT#-Ssc*4WWA+ zUH)_|)IzU0^aE>e3Xf_CzJ`NRDeMHU^V$PXgRpS z@o&7hyobrR*JIBd=7wK^*TCAt<cl!u#YQ#AOMg-(LkM0KYP3E29=}^?a_w?iWr_rrHwnVZ1wYvULKrUax zGb`i7o#gu(egwVmf5yK}9iJvwyN`MuIzxx;jE$IgYQWm6L#v%SxO5BF>^vNhFnVd` zI`kmzAQ%s7r|Q|~JD(7D0Llzzju(~>qTkF~(Ts~&4|IuB-cR+vMhE05y0)FDOZxT@ z1gqP}`J2A%2dJNhQ`SeM$_U7 z3s$$g;~QVM2YI#z1uz4a--W#coO5qy?xSv%oc&_MO9E1IscUbP^gqE-u)0HxZl8y^ zH{msS35GHLKlR-dbKehVu86H{B(yvr*L!q#ll~AK0joR7=vI1|YXu|VKIoDs65Q?B zTVQmXQva1Eedx`AJdbX`@u4I>LY)a$fYp83=>G92b^mDki;vN!K$R2JB~h+DWg+~D z)2`$`7bgtcL_QA4A&C-Kv}y!8eb%kKkAM3Bnuce{FE=ZNMa@UcWo= zgZ9UR+X8acGPhp6X)JvlxE-wS)kb$EafR?F`~njjy8hj3{7}I2W10o=Zx6^QbOSMy zXfGa5mAY^xSl!M>w>xnmmIjP@7|M^^JXhJMwuzE?n-G-v*@DwI$gctuC)eYw+b0*A6t?%u$~k+2>Je ztA;j}Xs1aZ{30MhbnX4to%93YDX_YBUcU4=`~!pFHpu&kdC|?zx;uHpxqjDE&XO6= zh4<3VdhDG*`WIn7SY4*bHTd$zGY<(1p#Y+v(2xAo(W_#{6_eXL{XPGW0co-_dRM6#YGT0Q!P=eAb{yy%YF}aS*!xSXTB|BmENC4pz5~(S3FT&!XTH zSO@w%Y80qn3rzi>_Ue5cJsObh=-Tq|8|lw_nz|6I?qs9ein#W0C-j6Gt=Q9}g`=Bh z{QKl*&V3R2B_I`6y4P(e>Bqtxu)41s-CrkDk4@n@%2euK=*N9L`U9ujrfqfZ<1o59 z{}U~hBi+!gZTxWOG}i0EbWq)R`WnVZz6#S*IR&@=_@~zF(}*z{h(1d#*bYc-QMQ9X?>>t4PTZc^;fyqZ5rvH zh3CQQ{%&-ggY(}F{9astMCUDH?Qr!R8ST;ifb=Vw+t}>UW$3Gc((Z->f1?{g_cM>~ zkEH(&cFWm%(yyw|8Yzy} z4)PkO6_Oy_8ICmP+^#4Q31$F8ItRM2wj_(6T4flmxL z*R5WT96;CBXUoaA5w?QWoo;jw5qA>GyudvPx}L?>lL2FI;&&pi5Ig_2}CBcrEF-LKLj-a-%CR@@yEYLOIBwU$W8oH)!l_ev-AS z{N3=?Ia2mbw>_>)`aEa{R(GAz9ZK9IPykb))Gh2k-NU(V{f+K$+D%O#%FL0w(Dm!d z5f+lZC*O!%$oa+{8lq1VMx+M$f??4r>y8Df8 z9&zoU7u*V7|8_UJx7BjWS)_4}{E9B_j)i+kKN7}+)&0@v);}j%781V-x_4xbl=j%J z;}~Uh?em66R*vMp<@(`0@@#{BV0Dig-LzTUhfo_bz`O3G!02jywgd~K**UTkU2AVs z(rdq@4M(f{o6+q_+)#KL9)%j*bGDxvGS|)4522hKsT^_b4U>K$tN^Q<#Qj6?)tSxw z2iyrgLHntX-{jQmNpp*ctiS$nj(p&;x8ySVjJ(fq4o9my(&*MAE(`LZ<25Bu(~THiYj5b09Pz*7 z*6SU}(-nGx)g5PaZ&}V<8GH%bpgeU>;Af}a@$(E=>&kbicN&sD`ULGJy1iqkD$;31 zs{Hn$Pr7lmy3362P~yhGOqc=%RIauiT5ImNey^gdT2JOkfydstq+bDVfYn`VbQ4xF z-wy+!A83DP7lT~2vusPp-fo>laEU}F=g2{H`x|>pt!CZ}DuUHb)_-un-Sh_QPT|To zS=$Y@eR6ej(8sQ$jIdyCP%U^DMh!IY1gmxTs*vBzU0 z#;_M8NU0p3^k?3yYzGmoul>h!WHGun*!lYGtJtMi%vWWN5mbB!g0Zprno zuAL`s>d`%BbpOdbY0P;T8AbOtk8TU}u7i%Ce_HK*+3`c-4C0o<`=ISlgUXI?JJ8Ph zf1{oB=vezsl2)rN)hYNF_Jz<*-Qb?L^`~reb-Vowe@4;miEfIyP>JZ3hbmypRR(nu z!MBjOZ=k}bJpTf3z1Z*G)1T8xd=pvZ(H%wlN$@OK-9|?Dd*aUej4}t6!CNl|zjo#^ zZ2c8XY9c4mwe@XB(qGELjBXsQZcC#(fw(#F7Aym=Zh@)C@2B9$>RVqEX}ZyEcRnNi zZ*Xa$tJ~Y??j^4LcCI}%g&K_4=I?jPz+R(!s@*xeiHt+n_M=0j|D$9{8N<=qJHzNk zh}#Mp{>VK`dQ&e>Z0zW2ouFY{q0?^)r#6wp9(#9_ul$ZwX#!T4sXGn6RW4X+UI43G(iy4wRuZ=!cEQKsUB|xJv^!QeT&9Uk z_2{l!&3ZfX`~X%r)#%2o=09icN|j_dc#+#aBu;SZUDeg`rN3+w`2$^Be(Mj4muv50 zpCIyC-AYAtRbSJ1%Y*tt!>MwHZvK02Icvzgdt=D(=w4BbuBItYSKD>9H;nESk8S|H z_Hds^SKnVI`0oFlz73T9g8Kuye8f6SP&?cH>a=G%Ueod$^*51kJi0HCelaWq>xX_u zH*Yud!0-SJ0-Yb3e}ki2vAR;FiR8ZTmfsbm{}{G`)g5MZABZwv0H48oQ2tul z9U4WocjI8w{(k4!8@jZKJY#g%eNMk(4|CA49<1(jMt9|J%qhmD@eUGqJ*?#$A2nWN zZ%x{r^KMI#L^5rXXY(3fj{IpZ`?;(74rtOYDrK#M4uB~@Eqc<3y z0c-E`jP(e-XU4JYq%biK@E0-qcfVH=>(Y=hgE1?bKfcHL* z7P*gu=QWj`9(y~G{w^2`R`*t;dv^IWsRob1Fo+8KgDr6G-@!wi@}Ty{>ffqOCE+7? zJlyx9G#N8GQHF7}y8Dgp7sMTf|5Qkmv!PUVcN~~o(rGUmQyyaX+oeqFTmJ^CH(+n**4Aq%YT#YXp4;@*X?;d7YLhPlUf zPI*{PUnFKP^`!b&>NS-ztkJ1$bT6owCe`6`u(~yj?zxrHq&eIJx5M(gn8z4obWJ}x z;dgT%U)@wXp=G#)8ryJ zw4Uoud#KOxM&Iw0hisnv#m2*(o6242T6+hO{wbISR+p`dV)lMsGfnE%N|P605@^3a zZG&U);69EYbo{ROMYLa2S%YqaSXPnWFHe)wwW%M#>eftkbkD1sCXc}P@HO~9pbyK- z+FHJP*LQT=@p2n(m(T-E_V71z#!}K zjx#3^HGRnjjMaj7=E@lKY`MZ-b3Lx4H+DZn~%5UKiEH48gFsyfjXqmgltgP&f`32sx%~DM_dn>PdlDV z8?Cn4@XKH)QQ)3jxf?wVufZ)3C&~cw3|ri% zvQEsLjDJ9`ylnI|la8NspVP_cS^IVoj}Omi9ZU$_Z_y2sH-o=59le)esmD%kZ4JqV z#O;Hl(5O4>U1&UXuk|$Syqmn8DL>JHxl(cKsY`gu&bVQ&om&w*Q#%8La^+@pmy-c$)NtTVNmWpLCg$B>l^59 zN*UH2+48=E^zXn&V0GI%*T8p#xReoTaz2zjcy{bNHyK|$*WZs1v<#f;Cy&mRR_NNG z{jEz`Ghd0k_Ihc(pnmu#W`6JOLzsw zH)mbyz9ja;rru<1*nkYS{QIZn%Adv9Tkb*E-doWg#Sh(i&ddBt-WkIe?Lf4NCeW^Rjl0E~vfVH=S(Y@u- zG}#R0N2keoFlrj>S$JL$+Q9rU{;fg=J3k&>nJfFywc&cw-vV91mf!LGgYppHkGT86 z*43IPv?^C}3R%zRTw8gN-=BudA9L$J%}+?)JvL2dJx*Wyi8NU_ihI0ovK(g&6DsAj zq4QV|6o}?Z&+V@N%8pBuN>CN-dH!V1^9tfxfQB15>U9a!Io*G@KNa4SD{DNuok`yn zdVtln>l5_51$PjyVIari#qE zp6}FczR}}pTOjaMn$(5xYpmb8kupTR-JzA!|C>yIstNv&{Fuv&RPMa`Qqr%7kHB8H zmPWVC1nNj=2~A*ikUf_cIrnI7Q*RGKmu{g159dlpbnUq42GZXS_k-2#V{}&#w+;@$ zH&Fg|o&o)UZDslXu9;7^-%F9BxiSk~ZD;)F(|$co9~W)`t4lXPgRkDCG}#R|Pfn8? zq2Tj4S-mh>g6r6W>{;F;BEzYA@T_K1|8rGvg1t|lBOjM5)-LLPw*Tusl~T>*Y4Y3q zbT0W;z%QWYXuGQU3CZoJrpfcL2}Uhr&;NsbV?yf=b8YlK4VP&qk9^_UW6M#!X|6pF zJNBGWyC-Fv$zF8J#!PX)*U$i6>%WE0pLJ$OOuE1OUV|UqYP;R*-3YxrXzkHmWOT11 zt~+Sx$FaEk-+r$lP_CKu_2}M1`ukxxSbG>WkChQ~Pmm2Mc_SJ8D+vnMR+XTpnM zb(b66-5NLDNqHg1LyUR+XX|qbw|%nhf8e5K5*Ph%|5hfS)ivFNGxBc`-8^*d{ZtJ- z_3srPUDJ&F8W7hCH2j@^Llv6Ic#rO{tiMZSj`;?UF3pdI*!Q=~@|%W>IsTP@0~a@w z!eac;*`xcN(Txe3|NLD!3!;189@h`UJCu_5E>4hJJ-P=yx?}lW!+4H=Wp5PS>pZ%X zNZ-DGqIC1P2l z-T)p4Rn>Y>^Amhc=QH+$dJC8ngtVP;(z=;XQf^=j*V<{PHgK2dd_rJcGwFq{4YocU zLq2O){24r-vg3d-x^JLs>%(#AO@$d??JacfRNornJ_ij4IF@h1J~)MR%*s1+VcO5I z`*!)CY9{CJb#)JuKJ^vm{J`pdWpu~CnkK(On}uo84A#=0JakF2gx1qG6gYnPyr#2` zS)OkugV43*X*TKKg#RpZbu+Y3;NP9E(Jn4V50=B=S*#Hs!anhAZc#}4r}pZ4ZuM_y zaWi=rU0c6gv?NVx!Zl#+eZ=T~K-_WgzfQS;gPZBc)pO?c1EwFauux+AABR>nlgeMa z_U4fOdbky=Zd;=}i@0^L8$N>>JVTED?DRKt&2yPk>!wyWlLtJy2T4DS2Rz3(THR(w zH+5;6R0a)oIG*gzyp@?BRUc?j-B>w$vzdJ6(Y=cFdGHWe-8YSHr{!sK1ct7lZw&Jp z&@}pw)7Q>>&h>BX`N_6sQuQ0x56eiu5%z%9y^(u^;On!JIc<0wmP5v2*6;FNNwu@P zd46KATW}ZU!K1sA^xr|ZRj%$Vqnq*u<9sND51|z0Vf=f^a)|!W;2h`qs?`k~ZYCe1 z+dF0w-~4=&ys#Cly_YbDsP>Ln!`SZaGxaa3%&S5k zSlw%l?o#63hTX6Y*!o2ZvmD(5bKN#@EhGoGFhJ{Wgr8r?j1(=E8>zi zaQ;vOmM~W`F`vEo>3@te_HG}{1PB?!Rh!EIbgjMlq#p&(fYtrd=$78db%O>_3v_%p z-rR4;O}~3)p)(KfuijkVM%O9&Jl`aJM;HZG_hP51_5DHI)$cOz3LRkBx9lNb*Qp-{ zGhd?R*tR#3+Rdfxe)oCASkljf-C%X=8r`+;F`o+;zt6Y_w0;;&pFY62rok|$oV{1h zSw9x2-<)UWZh7cM`r)t|tZpx(8`{L*gdMORR5$N+r*9YhrpSHVpt-~yaCOUmK-q-L z!Ro$hbUPB)12hccSjhat<5!+Oey+qlr1e9fVRO03qx&G~ONC3w;~cH-R--$ExVfNV zF-N^_wb#)WaUZL1HQ4eS%4{yLplh$&D$;L(@4)JAH@dApWQ+!nz;M`1e24muANHE^ zyOY1E^`t+mxs;*<=jY!Vo+JG$@ETa%H0DtVzTb(f^pRt4U5=%0jbxWbotzy244YjZ-Rzh95>Q#o@C$kvM;&i%#PE7gPY3%bnShym-N3u-OpVAerR+n zZfCp-W8opF&Gnqx&?#U2c!r|o%-$E#k?oS?+-Pc`XTa7bD4#%4R?`V$325Nayqeb%Y3BtKGt#1FyigFN6))xXk?`P-!_-{ zpRiZ^K7@zJ_YABBYwwT7-i#laGd)CI_7mfJ@V~?yZVhLh=3dj^Swnl=8!dl&3%L>9 z+GsvflXrJW{~&ZZ?CRF#*%rZf<1ywoe&N~1ar#5hofjn*&ST#p?u!mrCCgp-H8_Md zVXB+mLV6u`{m_azRh@60`>X4RyU@iC@jBny6RaQfkA=v;n*5H}nQtfG8u$_H`D%WG zug3|Vd&5ic0u1Yp9n2?c{k_(df4yJzJ^N^r7Si))*DhPn7Lw0ip9YRyXH?GynzoQt z#pv$x=+^%ix?yzF7})E5Ri`WVqxTc|{&4+p(Rq#^ZY_~6ubq`Hp|jIvAjr+EJ9;LC z?~?NTyqr&VQAz2zatX=(vs*|fbZx!0I4xb)LSj1byN<8tb8!g14aA*&PP$wTSHL0K z^SwKm1E&96?<}W2u@T9*FlY!Y zY$4Mh>dFfIEma|8~@!>qvW;`{j$aM?9(Lx#@bIMsLpXW5B?+!iBcXiX5CnxxBu8_`p zpLDsaV!CvLf=}Y*ye26Uu83Vdl12C7vE?l2%ahUQT6>37PM61EC0KiVlyP)(s-(+< zun=B?vXqO_WfG(|><5A&pp7=ma`|YSL>I<#QhG|znUjX{>y$b z?G-YKm!!*iPzkJEnxEjipSUTo2xddO>a2^JLEn(^!d~i^vSiTln6_8`bMxeWbZxNp z|6AmPA&Py9V7nBm5D1-@@Fg?sXew%2Ufr)1~BP=`t0@LV5Zxo2K!+o%yiG z=R5NhJ9sbTcG`wetvosJS9iQ{TlI7q3?o6$LhHldjqVoWeu8srq)QTXX+r+6(|>7e z=B>&yUeM?B(K>lD5Z&>{-twfs0`kD>R&zQ{zOlqDhpn&){O@odz0VvIt|110sR=1AP?O!vU{j#0T!E+o}e@Wfm=JfjZSNbnKwB2rqA5OUK z?rhR0_Dqpi^l1Dr!04_fZVPA_u_WcR_oZwdcB-G8nJ0IkYlAJnyUB0wi(%+$yYNrS zZ*3zLL3fi!_bc=c!Xc0DeU7~eCyDdbN_W=ua1Vz*#;=X?r221ezcr2DD?&cl^BrN% zH|_FtX$AwKA3Vz&>ZiYGG0@BZiC17=h3eT33bxhUpZacKsKzs zihAx@+5qa)Dz7@@4m-a0x6G3^Ctck^q#q8Cg4Keey3)2>XHd#_5D6L1&~&E%VfZJ7VV-ji&)sQzev z1>XbE`}NK|$^6~DZk4a*zJg3RW$y*CKk2)LxB)N`9)}M1;>Wl+@o$V{e+P7!6kpYtCH zk9+)}_NwmsKa=Gd;$MJs*c{2LJKkJ3z2CH)1qbEHrykt}tB4@sHnQX0xZQG3;|8N}CwR(no=Z*pM~dxQ7o$txaR z>xTx#=>C--B1Lq=gY)F*{~vxpx1J=O^1}liOG_TM-cXFa>WA6<{xU3PGePfl+g!xn z&=A^PkM2_P^hERS|Dn5`-}k~7;MI*5(G3jEqn=1Qbsztq-52N{@z@)}&c|Tl|FCx+ z@vlHpKO8DzumAo$sUPS1*ZN__|Iqzkevr4E`p4dHQFQM`*Vbnn(fbtk6r+2Bxa3BZ zZ)o@B>FcV}jP9vXYrG z;^lKFsvCVdQOaSfhM(X4YuyOC^E|qHutVAVH}>l9e`RkJ-S0iR2|p&tQQq156^hzh zlHVqDawZv5IiKQm?Y>~4;dxRc!S(Me53-*dEP|rCF$b9c=&Jh! z;cCz*x=J$GX^4{B6E_sb!Z7CV6B&$ayXH4#VQYYO%b`5khF&Z)c_)%q-zzWRs4b1^ zm2#S#2aR~{Z};V~?WAhO!h?D8hv&RMB>mUWps`cmsveK;H2C7O(&a*E4gomX zop!B@Q~nFhbEi}53LmBZN=!P{zj=uC(_ka0KULT68?!l^@ns-gUW8}hNa+O0J)9&V z)=y;2bbRnkHO7_XiA>9r&FD7Z-x@ZP{;r)RWCus9JKQ-nU!9zE$pH=f-bj?zbhdWs zAKvQDsdm~fawSpW8F`YBlq3QEt>Jp|HNP%Fx^lF-la20R;vP4;6FHVD&%Q_XPw$6B z80V;N=(#+(3SHaJn@;+LupF%JY@=I9++O$tj=<=>EPZI|eCMLJDFd(3&-1HpI8S<_ z+kt;;NN$oY=R}Ra`f|OJM-0BuQvXjmnYNE&2wbs zEz-XWQLwsp-;E1$Da+6fT0?L8coQ$>kK*4B=K0W1j3d<#(FJ+3(WBdo^n+m-SltRv zx%E9q+%nh#>tQM#nJRUi{V@W@4=E+$gsC!T)-mOh(sUxACNZ9%g~ny~^mWByK%uDCC&7m*)&gJTt|= z_I|V1EwDUKHlQ1frRH4#(jS4#o4dL>Mt61##$$()WjfV0Dw6y4W|3xOt#q z6~~E3c+HM|AsTFPubY-%hQs3DiDF8U_+zPgSC#Zzp%AQYC8PUrEBYYt9=r{C_b^Yt z-O;S_v~#?mrZcVz@1cD_*ZSd0(*F#yLU)>e0}n=KEguGw#ct}@*{dFY82r(X;a&#OFgi92aMkP8h2f~Tn2MT z@IB^M&KjesrtMK5`u}7;q$Kv4Q0HORXpsIEuzEV*Nk|+`+!S~LbiU#U^8k9j-ML15 zNuF;a^Zlb(QnuqH%?9`atp92`I==GPr^{8)4qC&)O_X~!3skKtrJVc!V(t-^CrC6d zpY_kK?j5AxoSz`~akRQkjqV8ICV+-%90ziOhgP{|UiGbRI6hzA!CtLb2Jp9Ll71C@ z1Xj0&(JgTU?KlLW0qA;+?sc4Zul8|m&L{uN^iH)L1(WjScaJ~YlD-r40qf6hj&9-< z;$DQ;K%X(5Z0Y!*Y_)jy49=IvXSvtq1JZm7+d-=jEjR5Qo%lV(9Ri&*NMU`khA8aH@nRc}g{T(}Fm!RP_(&C-~6D`-daxYnwB2ld;BT)I$dzPyWWp|jRiMv;Cp ztN>en%re{LF&()VAgdGg#czB+;OC@RTj!tS^nI4{>|5&ROS4q^f98U1ChZ>R)Y;Wr z;}o;xdN-%b1-GQj9EgtRJJXZd%a}?xYSuC(GC$|PK40!Z&jx+Y8-FYF;$X|A?w>-r zD*iby`Dc+o4S_{)Hu)}uN?`q_`3b%SH527Z;#)vA=z6=}m-0)6IO$LOIGPN$Umm<6 zUkW{T+46o3`K(=y9lQQfc|T-MF@o;dY3})6kKQeCn@6{jIp03S4FvCVr$D=W36MXa zCxpHC^ZQfq3fSwZ`3cE~iTeYp2Gb>F3uT%3`@_N}l0p&%cGE8^3_K6`=QV>zf@zqJ#3~R`P4xr(q4he*&L^wQH2I>lfnE zdN_7f;Lbd$rxt%IGAQ6paJ zr6tJRvdm4JK3}Va^#6wEOWHZEo!^o6BuG!!&ZWlAi-~Ih8d`DuD?0-t^QAeu(O7Dp z`;z{4xD%|M5o70T#C;6=!T%=DJl4e1S7+_7vGbBV>Vrq~V9W*_YhaTx1-yU zWB*;e|HWE}Lmu5e+&c?NADxgdKcQ>euiHpp5b{Z1j#jsw^P_JFagT$Br#X7}m9qBQ z_8|OpzEnBa)ty25pPQU5vpHJbHb!?9aUX()Z5&m1V2#tu)hXSH`O+TUXe_nJ7o?Bt zLwyTYH^t~aMBE(M2Rk4oGhRZuNpgtqt%uDu8$Ksa7;>`klKzj!-lL@Nab<#>M}7Y+5!?JPZ%{Y zFXqb{kM299-wvOH_3vb(`zLV~`Z~H995-FUJW=1%bvsdieTlt+S^09rb`Dt*WE#X<4(pLcd^a{4zez6?dLw}u#k0SJeyU!r!#?53Ek-Wd?|Ild)=NSy^e=x zbF{j`GaZ62u|ImCp$SL*u5|;(m|j2VIzjbA=)HVtfv&B`uOWS3m<3jMxzSC!n?43y z4K<-uhPyA%VAKCP@;zH5VsCg;zTAhdZMSYC{p~OUtS((m4Zb*Dyf_=C@>`8pPJdoC z*XW+=pL~!nvpu?V$nz?^>CtUwbZ7G}-B#jvLf83xcZ>3%ZJ7FDlo=0OUHLFycA)Eb z^2#^lIRwYS+S}Ubo_`PhET|2af$k&J!HnS+n)+dj@vr}*d?{1Ly>1Oip9kH*>T-!S z_?{>34fqOnLjV0buf?~jsdomN@tj__*mrNXaNW@Lld&~zrEdUp!|*#;-CnB7PjBDL znEgJk-4NylAS0L{y{W{byf3~{oUv?&N=|uTg|CFrwP7OZpM@}RS!3gp7W_RO?|jTR zehP@U{WNd+vi}~Y#t?$&MvBpW*`u5NFLWd53f~a3;rIYw%-&Z$y7i3iKY8EV+Ut*N zDFKhJ^}}M1Zk2ywZwTE`F}lk;bU_QTe1R#%c+%6;hCd5kpjRfDcz z?Y)NkkKjwbKV7baIWQAs9?usl@;(mz?5LS@s7QZe9qB`0lq*Y?jAlYSdq^`NW! zA9XbL9wzRJhteeo?I7|Fd-;@h#)NB4|KW-uw8dPmK+Tr&F1r3$R^FQ;{VJ&bu&dk5 z=++!fKNaddM*j>_sn&4E-562-Xiz8C@Am z9}+4;IXHBQ+n?NQ`cZZrm|WXZYE^LNua8sMGf4jcdi%#V zBIKXz$={#fhr)QU^8k7J4~8?J688=K2Ko)iVL_)aTEI0A^lB;lJUZt-$+}y(9IQ@F zqjM*5!{JHL?@y#$?dYtfOon>5l#Gkr=Wzw3Sq#g-o=*iwC;lDcc0dN_qG$;9!5`$e zLFdK3B+b{J{4A}D)i?iSUaZhaMbVv$t~2xz*^k~&syW`heiIzKe6@&c2-iXj@Xi+$ zn(@G?asBNrC5oROzlP*K6Ii1P`=LK;O2)sKAX6!8Vb%<)?%T{2gzuyMMo;UV zEocsUI$a)yC&1ci$3qd~K7;S!Yp8K0>nIqk=^k}a?hD-`@ioR|IzEmJX(@xywLz~} z{@DTL;S*|3C7+13apt3ww4q*-bW;1V|wvHzW{Rl1=C}8wf20BE7Q^LK8>? z1XMJuq7;#0K@gBtk&=8WDp)BCB4DAYG*M&`L_`DxL~8bb=iWJ+o0|m0@ALVe=l>^p z&zYS&bMCY|bEe$6n0q?`8LIg#UN+pg9?fL^A&=KjJ`Z#d{x1Wj7t7LX=N^&X4RE^# zG+JDZ#Q}pcPOFbY&ul1j9|ztML4i{Jv_6e`54mKhe7YeV#q)7oyw~z^K<@9V^yffc zKVXnb?m*?H#vYI292K~aT!uODX64u0DgD-2nJl4BS$>kdi7I)bFaBHdT#z>$^2khu zoGn=ReN-i{p_29br{J~(P>)CKvoqN&gr|ObH}-Gs2M&mRT)dtr!I|k4&N#RTaB~9J zE8A~H^WL^OnQVtj?t2LL32=M6vX4tGx5cM=wpGae9Q;ml?Q=8PUn;qCv7c;2k)ACA zr{|mE``B8nL%^MzG}Prg$z{)EvU+i4`Jmm;rj9S)&sGEArZ)JU;=^E<#JEL?E-Kc_zO_aFEXdn2h%=J=lo38S|#^A z==HuYLC*oSa?jz~ZNLxxg*U+E+L9G{!5X=ag_-OD$hD#@xJib*mcRq}h8eXdyq+Px z#XfNSGf2)9Q7Zk_y^pjr#k)>iEvY zwS@pTOTq6HUl-&qQpwFjdE5^a0NQ+*47VbHn>pZjk}ECAWM8P{{;%@E3Ax@0W%>KR ziZ6RPleJUH{a?k`0l5#V0(U6NSiyPx!xcv&~mSQgAZ3DBtWnj73qjO5knf!## z#`PM;Lk+O!K}041e#3w`faG-&^4h?yCy)nZC+pd!eC%I=Jg*m&aT}LsUj;oI@@O1b z0Kd-xuK>K9c>Fpj@=QD7b`-b*oCExGuxAX|kMUK!kjcL%TnA0PeRU=~47nC1EDjdO ze)?s2-}<#OxxIy4ug%z_3OyXC9%5jHdyH5|Hn71^KzUo<0rM|7GKtw!v)H(X zW&K0ZS6F8Oz5yt{UnqHPdT|fdCIM+L+8AJb2fQcu2J}0eyLd{>7cGa}Zx9bh+bq1d zTb2)f;D0(W2OznnLayIF>^}iU1H%9p_Firn?9CQp4@&$y$~=^3ezQXs`$`qxr{RAg z@B%<`dvXi(cs7MwM<5$$oP>8Uk*{Nrr@2C= zJRi_CiyebJs;|A_cOzi_rYxT0M1DHI#eS#*c()Tc3$(=E=J;bqwgmAk>@VgwBb5AP zgR|JHjmz?L_(ANM1SSAnbK%c{m(uhZr@`%Mfaj%l-vrM~ZlobuY(M0Yez*YsmjWvQ z%1>`ao@pc8wgKFH11|Ed}-+0(VWpdAo^ml~Y0AMEY z5Wv^7cN_2y0iM^9sHeyR&v@H5Jd0T%m+LWqBEd`H|7~CgK=Iuq z{#aDta#umF3(qOFtB#RbY#8KDms5v*3-JFKumd2uokcz*e1~~mU>Wc{a3l!(6a6vA z54lUkzWjGk@DD@2Z9*1X47pSfPQri4QM{`Gkle>8f8llpi2EM#2CDysxt`Ckrv>#O zL$q7;yt*c5v2BoR74hu^|2=?S0M&yR6}iSCa2pG7y_47f-H=D+wI@Moprr@1*d@rL z`u_m@KLQj1ByX{hw+wD2fb)CoyTcx~^(uKZ-(Z`T#p))N%|CB~|Fgg)fYSYmNO$}X zsG~q8&;e+Si6?5WZBC_r@p)oC|Lk}ui}i-wmPj{_s$)Ij|4HCofaKOx^2GG%F^tE4 z#C#zz0$7jl3S4=?8)pOJJm~tE<3@lEx1sy;1U{3+o`zg9OX2@D;0=J%k4KP?yYy?} z_8y>~&#)o<7KEqqz{j}$CD878S-eIl!cDKa(9WO0{5J3)upjYSk26`PV?E;l))sl$ z@b5bw!i{aqvY0WsEM9-W|8?LtK=G0X#E4haPslq!J%4Rok;NJ#Jn8+-alJE;3Gn>t zjrIbM1ve%;+?E2|6oXeb{-N)iT32SV9LS}1V^D8j7K^!=_f>Ld$qa)KB8LdYFo zUm5>u$3N6=I3agD}!ORuz~HEO74Ck*K`uk5x`9yaNZB`{oz!%IZr%~_7EB6 za%8c&kSoc)8EXXp&4Jbc<--l-nkgG@{Q++Bz-QKlT*y}MZ|3Le{mSd(t68iVa;e+&$Bg>YL2aI*@W%cbvZQ=HGDp1*_Zw%4-Q7pnOF2mbkYpq=0(x0;aq z=OfS)gxnD5sFjtQP4pj**R$9~mE4O6r#ppxasbH{O@e79-1Y+8`~c3|du@FAK9~|* zx39@!)h%WDdkX&l1g--lcc_SOzn`(E2H<82_?_fR#aXN=wR0CJXm*i4>?U3sfau>sY zYshrG2uM}0eLEbscx6T8ne7Gv&`yt$R1IK~G0Iv_E zuh^aC%T0Pai}i$D3AZsKZWrL6{Q{XBaO3ec^N1sfBhO%+5ZDLo0v4V?JAii|c|M%M zyyR{K;LkB%w{U!%#omWpGL#Q}el5!fKghk;d|;nsvF{<5+TXQUC*kNK=8buLm26<5 z8CPP!uit4rY=zuwkW1~(0K{_~FcIMS&=+!1tza?!+cV@fX!WQ*X=&CB4G)nC%DT###lT#M|Ru~*^$9bh{^ za?gnR;PV^y9|HFQ-GIWKI4>4wKOe!u+DM@X6&zLeAv!&lcZ@fIdC=Pz4#hWrC7jotqpaoqIs>{Y;%NOYikP=NBGuE>W0ADY>7aOdWM6hG$E82cXL z%hzA3XO3f8>|GJx!|=ZX;obx`0$d!=hxUqG@2}x@4EPz~`p68llRR%7PEQ-c96x5U zeU+sDcZ8vQwf=+jv*XaWRq6i&@@@idfYKj?_`;ZiFJK%BaFYPe>%l@)c(p!4>1Qs~ zTl9})w&LaTWQ0itD86CJMSc5*UhD|2Q+?&mR)lYW@IFF7GlXjkqyZGK1;7e-kkLQ6|@+TrAy-nu zvRm*Ua0zh&NbW`<_ba&l3K%Y9Jqr95B17-*RS!_!|K$4D2KaYf#QY89q8XP>PlU+> zI$SA}yIHwpT6+~|WBrA-BcL@#^nNqDb3#|*jpY<3lLsXlyn4dXcA z5%(oBgOtFV|VVL70O8$>sakxLlbE!u6IrwF5TD zy#=|{4xEHM|J%?>0FoOoEAXpz@JgWwWl3ONRGbpdH`L3B~vl)_LlNo zjY0eJp(?(%_Sx*PD!yY@qR&K_DF9DC@Bg5~a-*LHw^_KZZvPz!@7uC0y-&c;Jm3Yu z(|;=Az21S_W?(nK$K5UCl(KO-QP+{l0_wY?UpDh@RhAFI<`5PO)CEW`&Ff5t z+e%;q@E<^(57)$eWjEx57xLFWD4WHrqxceq~&D*|2u769sT{1Vac zQT{rHWwUOOYgNLsUGRSdsODcLm-L+jaJvE24G3Y;K=vtoe*yi-`a016MZXti*0I%y zuVYj;8wI&!Z16t@xF5h}xxTkiF6y6NrDs#&uCDKFbT*r#O7Ek%{w(k!KKmJ z!q|b0&1N4%POuUO_5;G70?q&wKltLtbPjIU0B&@FA$J@AC z8S=OZy^CDOxNLSqCHL$3=s)dxR)jeaZG3a4;CwFLxxy?3uWYkOpwMvk~8iWJ%042yWwnB48Sz9yjekp7Qw*(iiOGvspvPB{L8Hp9dBLy#8>x zcIBe}#-c#B8t%ORrTxJ!gwIfg=l#R|xAg2yRrp5`9&PSD?a#DM$Yw)@+%*XQ4&-eH zb_2Zr@OTM5+}j1WbHHUlJ&rkrw2HY9CQZy{4^$G*QiP#&F8T-Yv_tM($hC>eq7OoT z1Hk~7+YFHvb=TMyZn?nP3ygh;NxKiBzwmm_4XqovCS~Jn%d+wq2>*q^R)D9Q%X=9d z#%pFZxC5sFu4`IPU_J6H=tO9P?T==&^^n8$VSe0xix9Ngz>@&4FI*0${<$$FhK8^{ zz#_m71naQpr9gR}`wuj*@1fxw$k4HaXd~H^sE2LJ;`b5!e+rxfD1Kd(yzqLhI@)sJ zYki-I^d|ttPqYuF_HgS7OaStM|MWrq%T>mIUN0(n z$k&JY`{0h**{q8yelOxYn@165CP48M<3F$WaP4`xF9)bj^Rfs={MejqHbND@*WqUa zumhm@VY@Cjrqgh{4TRT3-T`ehpzrop;uo)qpR6xFlg*~8;#VL3Q-O4V;uo*T^%?=U zNx+l9Zsgwv=)8Q)y9#}wbzU~xrHUWr-wW_d@k>YKYc>io&fc{y?eH!&lLKq8>0Z_UTT$Wn^H#@KtSOjd!Lme5e%yGZa0s>+A=Aa5)14M6cFy^4jS?EvZm(STZ?I3@HS zim&6jY_Wh`Q7j=VtM_o-+=dsfGY` zkw~6C`_gQd*sd%eisAoV;C+Dd;bB=U)9--WK7i}KZ5t_$)|azcM^*SExPB723Q+wi zRJ?lC8Rx^oBcZne>gR7abSEd|tW?Qq4nLiNz5vNVQF7zO=dm7!`y7DF*@Or441Z2g z#?EEgY$N1&^kw)d0X_gIpGp)tro(Xig}c`ZVYk4Kpbb3pAm*#lrtT2+@CpR+e3DjV zIf4LSOAjyu8`XkZXI5!^tuK>SAm8Jhn<(lbcObA;ig|OAJA?y{v$A$Cu-^Bj4IykrU zDdqhtz7D~kZ|CN0wn(J^G{PUP6T;2{R{<*bhCCziY3Ay2&}D%{fVYpiXi)4Zt5f3H z=AN8eve~vu^0O_%P=4ZdufLt24ju^@X=^sSTuD5wkW2B5yGuO17AtL#EYF$E;?gRX z`%qOp8ezG0eY_E{pUx&hlyc$4Vfbx^C!@+pp2e%9H57!{iw=VQ6 zfZ|yo;yDj)Zv%&b^@yhx=fN!bT+ia))3ZZpm$R?Z>m(bCtxilPaEP z|3N%mko&2SI}_o%L0)g5ze?^8BAz4RRtTu)Hh4SA=QixFY<8)V_)SyEIrdND2f1+> zWqR`?kT(;U4Um4@idR&OFP6Y<4ZzI?@FU3;&*i%fy_t`HohPzcYn9wh@c#?&8$fc= zRB&Uu(hzNEqY!o&*axh|!3Eb=D*EColo8JZ{(UX3H%gbX*>K2hDF{uA=}_==lE`0oe|2PmE&ig+G}+by6@VhD=_ zb|1q2O>BbaGG~iEkJeKh*U*nbE}0JSpA8HG=sDv1P++`f!tDj%bwD0t4OQa018H|% z&t~UTayG!vCSV^xa@Gnte4XMt+yX;gDBf$h!f*Vad=t0Lr&^TrkS_Nw}>8 zxcLfv2j+*SyULe`*8t`F+mb0qKI@pu_YnNMfU5w-^C3m9v6%()MZj2KQ%~rJT@;z8 zM4jPf>@?@FHxWL!HPye1K zNOxoo&OXQZie~}LeE5A2*ancits;KwnuM_0O`*R6JF4M5hf9i_-a?*Z4fZ57%wbVt z!!?(;5`H%Vn*oxC*G{&E|5dxzA*Sn0#X4g4{V?0 z#`GQB!kdS%UO*1;!*zVeYA@!RF#fYa7EkLglQRBww8&x4KrS9@*-VH37l3U5$ra}p zo946#VF!S?me7{~7tS7*W+?0IT_02Ol0V0MT+KS1z!fT*8vZtzJZo?b7NwGUjbD72LW3qW~M=+Rm75 zk0Q5_@*S}Ah{;xaW{pv#ySyTXcNM2f`{X5-)lHDo#$)3h%evY zUI)*cvu6%_S|zs@!ZZdf0Lc~0D<)H0%#8rE0XxvRqmCUJq{z+C$Yr)1_7>!hkxLD8 zT=2gI*bb1~ks`iNwSzn02Cf6)$$Hj1PLVrO$fa|#?c;OUFRJ*~Z6Cs#0a*aa#kNLn zO#9*X18^0%2u#NUl>>P^9Sy(jj3U1po_k(y&Vn3v9dfDuc1T101YQA1ZjvmPnT}dR zSY|rr`+(;GXAt)1w?-R>`s;r{sb{oL$T}m3RqI+-9}+uY4i?A+==qwc$TiM@+iYMV z=h!2~&(yFYt}|76>v%MW#X%mK5pxp&$$LP#=+!SH1bqwIQh<+N8xK+H){aPT z=6EuPwSgRJ=Mp=i-vPP+l-^A7ye@=W3Bb)}@EPN9cK0Pk7OzvXxvlIEaLmeKBO%u& z+9!Vg!Dk5bIe_XW_m4f5Yk%wf1MBP@HXZV)T(s+FyuTHs`bq9La61NYa|*n&^)o)NCbuiHuYZrYr7i{1hzG}xA31j7sMbC_OUoIb(FG|< zsg|S`ZoOsN+y2i@@zJNB*k(F?DExHc@F`<_M~|H{=D`t3c?A=a^QR7@F`R($j=aVDk7mgjDKdIg5JaU>cY3u|Z zg?3XWJxKmKcIh#!Q}^@^*_|@lS%k+fJ<@x2?AmVlgptjgdYpRnYBz1{#E}KlCVQOH zb26GYZ8tSVI84o(+zyE=`;{~)f9lxDV+$s>OHCbRX_?Y8Z&b?^OKQ^*&6~7nmO8R! zO0&FXDWmdRG-=U1C3Qs8CixUoNJ^SAc0zu;R7+};L`zHj_qH@`ozk>*YV(0A`AGBF zQDgH*wi`8k{N#M|_0*0jPlrpB*b^Os(`z2V^HG^;9{iH*+(Gc3f{z#c3BjKe+#&dS z!8ZxMSMVPNza)5YHAQ~B;Ozy^6nvoIlLUW4aEIXQ1$PR5K=3nyUlTkqM7d9G!P^Sn zSMV`{KOy)Fg1;sBCc*a#enxN>s>lr%yrJMN1@9_&U%|C`>~7trwOOY#&tTrHZF<`d zZF2+69dcSr0p_+{Q&`&$J(>H6oA-pQTSgNW^NbIhP}r0U@eQffHlthLwy}wcxX4NY z&fVCj$bDbyiwD7bnXnK=4KhZ*zm~{MooFBFu)vO z=Ix@~hDcbH7NHXp6U{6jGJ*FcuqR?VnzilPJ11M_ozgQn@7$w1UsGw@p+^R~C%NB7 zR9M@z=@Z6-*Uio7%)@c{+`Y%>(U|eWS?(7$|MerdE>s_Cz`Bwll-uCoADz;51j6^` zPa1fy-UDRbyIXJ0yL9W^vc+(Pw*t=?J|(}kgmAcn9DkSl8t0DHf322(A8{X-d3|?% z&aGj+!Z?@0n#z3tD)%b>+g@{dP0n+pilStHYp1Q{oULsvbGzvsll=RQMzY*X$(NJ) zZ+|I3;=Gfgle{%?xnYw*!taf6S%?;|zEoen-au*~^R~S@_UxA1o3-uMxo3J#C)RWL zq}WKb$J|IVt;oF$27}(9Geom6=#~*mULreZeev5yAv6{`sMv(g7L;t4{O_P3l4 zgsCpV@i`T4XnexUpPM~r*Uuz?|4s)60_0Drk)jUqYP5d-MW`E$?!)88jdRXda25Xe zjXXUu^~i9tyWQIS@D(PbQ*O^r9n*Vv;uRalELZwY-7_TlCmUTbso=pWV<+Z|-yI7k zPR!4nf@WK}UN<(kS7Q3ef)V+=#xoY@OmMbkCTBILq5~=NI&|vNt-B<9@DTaYkjs@j z@w9N>xd#+pnDlO)J9CcvP061)C9(HIh57t9`6J#__)G8GO}f+de(8PjByq#X1Hque zWawDu&RBn;-?g%E;z4e$8KANmgYO`XE4%Kjbs1M~)pFDI$Xd`UYe&X_%BFe|o~iZW ze}*f+9hhX>50L!z&_%xl=r=<}>;ZUwBU~H6^V?g;5&-(`LfEV7@QsriV+7uKC@41; zJdv3I`A@ej#t!BcmX)BgS(k`YIFr{UgL1Pz2C)Umza4R1u8MCiUap%8&~+EiCA$XD zZ>!HB9~~R&GZd5?>qH%U8KCQSUmaTs&~F=ZXFNc^ou(UTV{V(=N=w7+*w3~SpzFCv z%fqVlFr+;}m3|xi7ODI*f8`xy3U5QaiU9iUL^)jp=(lBEFXY6qb;Cq{IBK3n?9SJ` z1}Yn$M1;2Zv=`~Kul;PTj_qCh9Vj<;$6t-xsf3-;9ZnJpi>vr~kn72ar6!@Bsd#lm^M0mmyFWi1oO# z`zdk@I%Bq^OfwKJUa7K+-New{kx_RYl}=<#FGJV~R*P8>UVO#VnVIe*er z$oKr#>Aie{C9Azw^YKSYa$Zi>>GZN8#?z!SI%@B-^Cym;GDhj;d7IBiH`Je~e{(yB zBml-@0NxdF@M{5pB#;iy`mk@Pgv+}(87|fCEDvh;h+|r-r4vv+ND&hxbC=kD$B03s1|rK+C+5&&57zkPl?BatN1FO1ZTlN)w8y4ICKvaPsCJT;!+%oa8tPuj$=LeNQJlf_e4cHNRV8lUSdNGt>`N-P2` zZ!GBLbu68A1|7~uftEKPuvv!v`mv!8Ab*ZV92HM-nV+Y^pT_eL9-9r&hbn zgVEclW5d9E>!iP=!-03; z!+}wB5uDdY?ite^lEuJXU~JnGHa5a!c_**SY3) z+Z`mzB^Y*AD3H^8kLm0GvZ59WOxRyO02PYYyH;*eN_KZeEP`y*LLnw|D^P;NoGR9^;$q zt7Cn9^FT-W7J<6fx+$=naJvY8 zU2|PRj<*7M_%v`1b^M%W9Xkzhx8K083OmVXXRyZ%;MaG79};%Yb?7A-LVwByA0X^> z-R`4fuK+y!8t}J;-E%#n1gTvg@j2*zx&8Su;?^{si*35P7~J z9q-eC-+Wi`OV=4%_c(xuPXtdEcDnAs?@xsrKilS@<~l!f{ab*CKLUPJ*eSdnzgGx1 z2lzV8b%y+|CGtE5oP*0EW3QoO8v*Y2A^0(2r|bJs-_D3ScM<%$u+w#%0t`(x$dn11 zW9k8F^BIRcCSyl=d??Dq3I4gJe4Nl@{t)`M8=RvoH1tX2_b!p=`@z4{uGAN!e8tBxq{l_+!@bv^)3JAWqpvYK7_JCmm~Zfc@rEHU{0evV_BI+# zCLbSPU$fcI&)+|QD>4zaQCp>mMxd66HlWssj0i8*DWZp5i)VYyL5DlXHtI$4- zlL`>NL0rQ)e!YibShe6lTeS^gy^R~g@}>1YBU2piwtFwSuetg4VJuB@#aN}@Qgzm( zv?;XOoYEekY3?-n`X?+x8X6NVwU(lpA;}xNZ_P;oNd^|36f1x3RALTh$IJ|qFmjU2 zxO1{JOhT_{VHPf*F)7O0(iU$obc}a)b@gT^q}$f-Y@gW|Ii7W{b8QTc@b@!R_X>)s z=4-4KsH<5!+y@H~(P06h`bcw)D3hYaD&uHw-*o!Mn`^>enR)r6FSg&xt9##)F1yaA zZkRjh@WBB;9y<1R%Ne!Om%f*>?KR85z280da;ovObIlsf4{o>F@AK=M!&|f-eE!mg zl-FM>&Kvw?{+2((zA>Ep_RqnQc_IA|E&uDaAFuyN(=Bq$LGUz{8Kq}dC?7%aD{8kg zpM2D=Tq8HN9PVbnB6gVy4;8NaDDx!yV&9zd^UK4lZHboS0TZEmusTMy~d{m=2NS$-Qc?Q+QIOsIp^=vTT&MJNfLTVzk$53wP~x zFX3*y%XL!FstQl~QdQR}Jyl(&_*QjYO!rktAH|>axvIib6H?W6%0H0}o^qhy*3$Cz zgWRdSoe5TQk~z7PqpO}$f9SXNx>M9Ix=x(@@$Vt24Y`xs-NM^m>>_)O1;w@+`5PZr z@IinLcm&|{h+6%57~D991AM%9x9jjCn+oy!RmnfJPH3BSl3p@MUXr(Dl<*p;D@r?6rO#h= zEDPZA%LN}G>_fqa344`c`33YikpK@L4cfgHcm`xQreJ*%U zVP}_cXW(x4XBZtfhgQb@S;6}VyA6D_u&eK*w=x-FYMYd>fa7u z9s2;_;WvTr6ZUVw-NLT+U%?LjIuqdGdw|ap_66W8g}p);wL`cL8l6|TF=r$M6_WE)rwPrQpkjeI5AQ!hWal?1+v%b5yziGVqnc{wny} z!hWalcFdiw6Z5Af;53)I9`<*H`<=p9oIeV7M?iCob=Lz;cXyVx$f_kIvNxeW&h<8i z&j<;Ys!2K)mUPo{N}pF6;4WtQ?)jW6#gf3zsIu)RLkQ^BAd>6v^~SUeJ<#ll-A2 zMoP-(jThQlSlx?pY+w4bV2Y~&2R0`yM?c#4WRjbxA1Wq|Jt9FZqlb|d{9^G z@h-n99>krZ-dg)AdgNV#d-QbjXK$v|TgT{sSbu|*aJH0x82+~M{QcALf4BZqdZ`@f zw=+qJxASb};|TIcobsJG)mz8uzo&juIO6o&I^Esq7I)+o;%`#oFD2h4|Fr|MU~wBs zaI4^VVHNH#%3u2J&iQ92xg>xFhE}?8XC5dn)AL^yuSyEuGm(w5o3d=5hre*Aaj5uN zfz=T%F@i@4j_tg%sVVr~7?nG5Dt~D(-*I#Y<24iWU$eZDv94f`nhlM$QS|ia9Og=N zCt|K_^-9cwC6y-AYHI~SuUc+cupV!5gI-K=r(l*iwKNs6Xwt6<<^tUX&>tRfuc%Us z_)Pbu&HzPycFf}FIWY@ja1waTO3<}2Z-Z`%`6?!u-HN#ddle?YA1e-l0l}al0U4m3 z1G<7{2J`^!9gqh)Dxe6o3KP^N2pUMxc+dxeUIJYjv)gARax7jzV~a&x}s zMaZ^+k_Vx?&@i*bTYlAt^ zSiKg#cHl{ddj3#t-<6m1_>~rk$NNVHyxVpCnupJwix~ISXALHM0%|POZjiH8FWP^9 zg;%8qQn^y|CBBJ?Z_Fr?sCgxSB%e6B)BUyW8ObHRfWi@{@Z^u~-|`;suMJP}CwICJ z-IqAIlfSC&PwAs@T2A3f9_fE}G0)~WS!wn0h|$WYe%qR;l;7R-2<`ptLjQ0z7U8>( z_1vp6ONH=aewzAU*Rbr$f_dDk3Qu~3>*}5LfU3efNDn-n<++#Ig3d!Wn5vLXpb!)+ zxHuz#VOgqjgC566%#)bGn+tnO@J_;>3qD@hD+s~3Zz)z*lg0jTAiCE>vPDh$GR|z?xV~qiR zPYZZEVYh;J6ZY=lJ%n8qQntDZ5VBCmB>d8W|20d*b2jEL<_i0>$RmK?Lu>f_+Z2Fb zOUK$C-^<5!j<3NzYo$m(<%>2v!(J`D488^th`m6{UMf4dTi7pRf0a9^Y>!nr8LHkY z@J0~&scJVuZ|GU|8!`+`w0cZ#1Z^7t^DnctiQ%oExn1F>fz}%=vF` zJwE>DEwA^f*ZlY;ZuCgG7t>1!1Y3U`MdXdr>+kQy>PZIt2DgCw^YIalk>r3X!ga4U z0N+0{9pF3GHv$KM%Rn_`t_A20OyC)ttwjH!LzOQ0nxKKYs7is)M?T3^4G0nP#DJU!^A-P4GF|cOs zdP&XOdk55ruAA7botJ<0D4lP$h}Z@xt@P%Q$T|&ETO0gBYsEEc(k8xfQ_rh46kk#L zjN1QaKT)pGb>ifY;;D6~@YMfMx+s7C+wdgkpWdJ1bGPtSrJsg3|1|u6dwm*JHK$XQlijF6QH?JSg47tGYkc1JVN>*~+>rg(FV&kmOLlxgJ&g zJ04KDb9&|Bwek1#H)5TZ;z4rhzQikp|3fK13P<(e@1~#bW6x0PyOZXl-W@`>EXOI` zln-{wcTo@NzIOe{a^V=(IK9O>rw_Op;BAQ?cr)SN0=%WLw*^lF=za|C(>Q?Nw-9`W zu-n0B3;ROwrNX`(e5J6<5pn655#ZtZ`D)?9UJE={*yF(Cg}oklLt*FPEAAim#*BvE zGo#UlD^4mMQ9Gky57Duw0e=74;Bx_<{%63S748ebR|xw`@O8q@@6YbXI04|{bHN7) z`ylY)!kz~{P1qj=Um)x}_!i&8z7edwUq8PHw#Dx-=yv~u{-NxUfBS$jtY5&sfa&ab zK(ktX1N@~VOP%0k%Pa1JeJkB7-TaPt=bj}%uPkAo;EjcFDMrF>PVCjvu?|W8mM?Sx zmLQ}*+7bhrUYdbfG`-v8_GTm8c_RE+HV$!5)^*cI>c;3-=$o;3^_LCly1rihaXiV0 z=*7`Z*{bNZ(OxXE_LsF^VGl@MV-K@#u`?PsDc6-z{a0dza;c*JQ9ZVw86n4?NQLm4 zdP~ng&Br>B>3-A>Ig$p;x0e1(Q)T?A|I@VlRQ|T3 zO8nD1bj;|~xl7k>nOWI6-FxKT*RxmeK7IT3A24wEh`f>cqehPzJMRAR6DAfEJ}_zW zln19yoBq(lmXy>cO`A1u(Xv$|zO_g;+VoTVN&O(DpZY<^59RkaX~R?bNkZ@Nw8Nrb zw0V`+BedbEp4!EDh30cS>Hocacy0Z0got{g$v;XL)dNbuHaw-5(n0>U&k=>!#^2t& ze7|Gsto*js7kt-93MzBz4@eKC`#XI_I)X*GASIm3zkK)#_owGqq@VK7F3Q7cR>JGl zlctr~Z`}9vtS7f7FTTI%D_z&WeBapLX5;4{&RO2&txpO*sJ*D=$h$0%JRbN2b{5PG zd>Ru=vjXSBJ}>Zf&^H3tz-4XVX4sY82Rj3I!{zh9J#g6{_#NmEfyY7bY!b2eVTkt@ zZ&tlSpfNmHGW%4MYM}iNONzw)f!0ZFl61_P6lM8AXR$aeg)F5s6|H#x(!5eX7T^vL zt$5Y;?bH=UZK1xSw>}7@&?4#t}!|u}S z?i=ie`{rHcGu>T{UdR9Bx1;q2FGR#-!~~1CN$+d&_A!`ERPwZqF}Wzt{Ge(o5m1ia)ti z`YB&n3q_x^1`7R7=xNk%Q9tas`uF-Tt$gYSsh_0zD9^qo(yK3&9|ux=wVcY8+-ZF3 zG>Z6Z#(Si1lDG|Nt7jZ-HWk)JM?@Fu69~xhh{^=Q?iRZ$#E9;K3ZP7ZG5Abx11|K8r+0q=mm7w`$_<^U&7&E6KU6ZS7Ki-oTy1RQ|TmZcka0RqVui8X5ctitHoF?{e$j=>r|Yx;p=w}MAwU$HC){MEgReLcAAH{l<%teK$(C2SSa z`FT7E0GFeF7g_yY0)K~gE5QBm^KOO#a(qy}v4Cu^LVkV7rt^N(?>DR8b#OxVaUtIZ z*+oKr9mwu@7y0V*R@CqJJ1|H5x|k=PjQoCBQDPMZPvbAA)N z#$m;6*|0vh@xQ@f?I&Vw)dL2(2pX}wjxIe(#TKThh*dR5FEl?&BR()Vb7nBLQkJL_@( zR6c9pSB|AULE)+>%T~${ZU0X0G(M!?Erf;EnJFCc|CM~oN4jrS`=seQ-CtYIRmH!Z zh$w|8u8lwarf~`VCcUbHJ|*;K+8^i;`wQ7!-gD5#+bY(DNq;5%joLZ7FSSRmU+=63 zY2{P=DLl=;Q+=oBf$nend;}%EQcn3t_aQyjmDXAIZ%?<%+*+t`r*}u?_cDb`?C|!0Mzle2RN?#?SWhaU^rK76(NxSF=nBX??{(}8dqoF}^4$Tt%Xc^Em%e*J5BvV$>&=e&9`}XL<$Dq? zr+rI7%bT+E=-&KCbLs2|Kkc-t8TH4_Pnr>b^Ru7}%!@#uH?IXPHm?VL*ZdynM)OCY zo6Mhq?lON4`lWdf=zg=y9L!FbPr`oM{0HcDvm3OWsphVRHz+L0SOHE+nV*8IskKv~ zA*VjZ>AD%~;PRi>q4BIgyc6`x!#6=4?k(u8w!3$Me&OB+`i=WA=u!6%plWklhx1eP zI(8C{ZJ~`=Q!d@mDHjJN)VhrU2?kntm;LU}-HF#TqxB2bB(}dj$ z-UZ-k%mp7H>}vTsKZ753Sorya2KfbphWgb9ZRlqKP4#O6+RTri%+=N}1GI}@SI{iK z9MC@46@c@y{Dy!I^UDJrt+0k(G*Z#dfA<{^MIt+k{)3X5c3?N;<=4iIJFO+cAVBt%0$aH zt$b?VY2Ul`PemW1{p_rzBA@y%S4ZWytG&WC;$@wdyHWb6{iS}83HjQ6UerEOe4J@x zwW8(U)c$+qi+LGscx!^l7ooRPJ4)%4_M*TlG1~mm#-GAdd+F5dTcdc;y0rEd)IRfi z!41u8Q29~%DZW&mPB9PU8j`I9tRuMc%R?*V56xGJ{Y~2b(i7i$N`6s%T%GbfGSwEX zeCppRpFHuW{*dPTsDBanaemlME!Jb#<_{C$NG{!v(n0w~dXnoAWxs*dyZpWbx`8(S z6rTD?&-#0ms6U#0VYDu9Pbxp2e8TTZv=~qM%>|wBw-EF>zZXH5`n?Rg-0u}XJzMGb zx*xu1>9-bionJBB-}3tibc^41(4Bs}LBH_Z1G*nOluYcj-woIm^8ro^j?jOtw;Br! zH%xu}1{pdB?hLdub9l$_R%}gV^QZ;7N20tfb3;=s&Cmy}u)G3#%Tfwj!{NXBFYkTp zPOl4Ng~i8;C$P)KSBmkznY&Qa%h2i4WzVl?{!czlgr>4?ro`|6(rg8s_WpE{P&XH7|#I@Dy-& zZ*Zfq`-6uHdkyd~VUGZBChRT2@o@n;Y#KOE4VRM(-e1`Nck^SFpCek#KE}?$_4*H? z!#VZaKwbJ%pq&g48=A4k(R?0ydi1jBIJP``E9?(QMN%MJC@q)poW>T#qD_eZ74P@V zX#8knv?r@q;7!xQHP_b6X4lsYF3B?tDH&FxOq^B>IV0EAKC~5#jS)+)!Leukp-}P`g6w6yiR#pU<;@gW4h5zc;(LBKR&;dw)v5 zQ>4?=4w0TB;z8p^8kc#VcgmmpbMA6yBpY_jrv0>2TeVt z_)$G!`4iQ*t6G`Mh)ALUC zQj|N>v`4lTeJZ3`b}$s+P06Rcp2j*$maz|Z=@lC9^F5*O>DwDK5$hxQ`TzT)zKPPY z15qx}pQ6ry{vLHD%EYckU5DKneI4!c&1g5M@}-mg(nYk+4K0b#v6fn1235|hmr4^W zJx77pdEV~wex1)p^0{2D?{b}#x63?l`~g1K&({n1A(`Po6d(ch0SnL)umW6jumOdD z9dH0nzy-Jgt{u-%A4cJ*%h#a^h36G3isUF=!G&j8vQ^6jFF&GM#+fx7mR7JryDat`x*;C zA29v^`lHbenrkY;*>Db@4R{mdeV<*R-};;YJ?X>GtjoQ*4exk$$Z21z)T%u)^S#?-LX z0*$})ZVyGCYN?iDQAU9N^q&JZs z<p7Yema$L#u9Q3(=;pNBg@UZTdwNx}>w}Y&yHnp>yh7m|V2#?Rux48SMDz ztR3&q+r60)-H8wLwVRp0-QOMnp`rLlcDOyl9?5D!d|gcK*0(prZJMDYv9hlAOx&&y zv)RYVx2z(T^7;9NXf<(NdwzlEEd6K8&M)9+!Izx@|1XROHSvtaNj7|@+6p>|4F$E~ z?Auyw23D1I>{Ye~bRFK`(zE{{NA>I-yvgOwwz9*>^S@ZI6cJNRN|3M@MQRV4F7*QK zBMk*z7&{E(E>`!!1RZ-J!QBY@MhYO%Dx9k?g$cBfLKu5)SUN?QD( zh!5UlU~i*%Hn0zw7u&A?4CB9V^v6MemcO3zyZ!1;e~-BUdOM~RRD2C&P0ckrCasADowH^x=%A8uB|+@|l6P-*$$d}m zsoJ}(Zaq8cKIujpG^RdstqF3hb8XN_^)u0Yq!T6;5XazeY`B--9%$8uZg4HdNpwX7J z+jaJYl{PD_&03UpMElpJbO74IL8U`r_i?vzH(`U^!`xnYb8bYrSZezf>VGI1G_Ixj zJsRh69fupzJGjop4e7yN%1>Db;#O*fsh!Y^>s%+}hH|c|eHi3U{-}LmVthe*y;k4# zj6X#CbGLSf^m1xvXx^UM8*4Lus&hp{>7sN>^^|ss+F=_1)BGy6-;#(I6Zt|@UR2H2MPOp@CCxY9sE;azY6}Bus6hBrA7b`I~07Fus;X>ys%RoIj4F^H z^MhXOJ6ApSEWgRNf=f@wfzKT>y;B};GIGs(@4N6goSEYlw`(pg$cD<7o_kOEXvd!- zeO9XHA|EL~=((bNwTtJ#Q=XdV+>_t5e?iQ*+ZKrDcuwWdGsT-Y>D}7;N%|oZdY+TU z&!qQ=bw$z(J$fb0uZj0*Nx!tlEA^s6JrL*6QhHc@QGXWQd0xhg8gP*ioD3uz?<(Al zRk-V@K^JliLXM6aeyuxo5L$Pt02+7kvr1MW|3$k%=c7`)Px>s)n^8TX=hRN~8ba@N z3OTgyO8p46&(zOQzd-#Bt=HO0o~bg<@&&AK}|m_guM%RS7FZr&k^=qaK0~?_uG7pJx{og0v|8zh2T?!y{bgK%icrW zKVqBEgKuVAV87yf9Wy(V}~8HFckZs3j?NuHVkSKgf;!p8IZ1g z_33Ctp|sdIMS4iWIhoQN(A?NzvCyevZSjZo!{e7h7d#v92A!JlJT$`Fjh{<-(d+q? z7gL~pr8dA`kFKdbK<`T(25L{81Nu(tR#3~@W^3uGteA>I!(_})J!qH)`mo_q&?0Dn z-t1|^Y_^yD&})pZdnhX&EV?e@**JPI z=!j^(C;$HFX`l~9Zvkbs-L=cFel(12g#1s9?H(J2^Edg)o3_S9SOclEW)`&EXVz>5 z-M;1v&_CC>K`kW%u@W-4WF+XQlChxdrV;ZrvF_GxX!h=bpj8{1&mccE9;SAVo?m)i zsXwLXmilSxH>f|*_Nz>+2U5RE{U$xncF{gNETWwi?SWPF8`AW7l_cUK&e-H8-YPRT zK;hN}3ZMO{!pB{cxqW6*I)m9Ck|*<-hhLI;{+>OYOT!%c4&dlvTX6o`3y~ARtv@ff zyav9o_Kr=5z?;_l^M3!1%+1pAMah%*uG~V2*L$MSBM1%Eq51;B2<`Y=Q0-gRf6>pT0hqeZ0)o&Ee*v zz~aEo!Og0*n^fAoCO z`MKv;oi9G`ytx13L)X8${`^f!McH?xb;8L>^O~ZcwUIt1+I7+kwEBNl^9vQ)buq4> z`bqt+rykKddSj&?(fkGVBhFX(*I~*G&HIrH)px4LRPSkj4b^w5$J8&mx+(W_r}R@iJ^kBgAy4RI^xUzKt|53sB_szlH>59U|B!(=lyXqW5ZG-Y z%9%6#q?v^w{9AqRhHM1=Fk}m;Gh{n_ej4%_?7Kq_fgTCreO^dt4bbq=fuKX=KEfWl z6n1;!;zY~}C$0uvoA?&!`o#A^KTO;L>P*}Tx;t?%=>Eh*phpsa1l5%o(H8lZ1cFv8 zsR=5T)B~+wk_1|cR*8Qrm)Dz8jMCkJVmH99yqi*raj_dv+`VDvXCZR`M%azQZi3w; z>^`vj2)i%rzQS&X-7M^Wu=AaNT#i5N{=yyrJKqV&-El4?pxA?8SH6>3if?4nH?w0| z5({8yY>s!PcWq+~=FSgbCaN*hne-;?mo&BTY0p~uwDa*|?R`f2*3;$tW(NOk%nBY6 z8fF+BItIBqv1YTdU95SSA$$+>4bO;Zqw5s0HZo7QF0uq`GXrZ4s)Zc~wT6MViE4}W zn8)O=)3=q{N!XzvbpuUGYMX>pE-mg=x2FWI4qA;7BEEd@#iq*Nuiv|NANt?qb-ULs zWuLDbQv3oNDt{sKV(}lvI`&&h&(hI7`Op1h?K{;hr4;Rrx@k?8#d!ur0k;c zI;hk1IZ`&tw*XqkY2OQ=qs#@^O>o+L0d$mKfgkLC7eJNwqm=h6MgraJ zAnJ&GhJ_T=0Gfz3xLYu4Xz)@{S6VvDU$NUC@f~(^*i~Pr%dIs4`LVv%N1#^u z+qbz<1CTe;>IO*te&uV_>wMS2E`K@q;=1dwE8hoIzJjZKMFj6O$$JuZVuum+)93W( zF&i}n`xA`#?y1%I3;Wr48tJ}b`V;BCVT$yTSiDbtl;{J#odXYg?F_sX++2S+tYi3i z>_?g&^|kJys7Dc(JMV2!_A?YDCMP+WwZG#{)-FYIyC6`!sy9_sgab`%k|my!)WO=xfLz{-1Pp@*kJeNZ}#|yo*VX3 zM%a!ukF^^)Bx17d@g6_aX}EB9=kp&{|8c0__pa2|=5EIL!P~$6&xl1Yo_gq)-7O|O zd$9Yu@qMqH&42hUpO2^4O^RB*Vdt4+Q)03heS-Q~&t9SLXz5J>6kU`qIRp^}Ro-+0%F2K}+*DT5h$z{>tN*58s?| zvegsIlHIeK&hMD9y}j9>3!Qs^>qXVldyM|!>`RyS?Y+3+^yJ0=nNsJMH=8~6)Abf- zq8>axvCAKk4@5WkY)-)kBLa)Vx751Tw|&;mZyu6f{@z(Seb2xvF~`<6nQhvY@=i$b zfCT%wVYd5<);g!#SzWjp2)h6eyhJUW#{o5yPpX{}CcvvH^$3C8RsNRXO z)${tq`akNa+y9@|e?CKrg*2?oc$UzxX5fc)fdK5s2*SK-HLQ7uVoyd5RugZvhvQ9V zzMvMxqFHUcB`dL5R)@v0czJ;>0edwXu!gJ=Ys?a%86{)6Erq3Gg{3K$-I}u&SbA%P z)v7kEE#9bT5538XvGWL)$427IqNCVoHiq#N1Mg?!*#tI`6<}%Z0XB(EW>eUMY$}_E z^Q#}iSbGo~jCJdw_>!ZIrLzvKBg9cQuTvin$1R;25V zrM|wbAM20vO$TDVX9m{1AH&<#7ymDtKmKdOzZzV%3FRLYCKG2cG{v`tGgSBV)c>k1 z=m6wLLm_IrqO_|nYOSbR_^Z<3j{o<2mw+&_uOhs5R22Rdqkvcm>RNMc+DEPj9+0jYlg!q44Xt?4+~QQ)eMV_tR4!Ve5**UT9M%q zp*1+K6<(u8WMmY!j#Lk?ju1R}L_~OaWLRV^v89AxgwIBJ606D2BKFwgiQwzR@1QL> zjMZU@T{Reu!FrR?2l{V@)Dt^%AC_iFIK@<&2O1u0jjhkpV>4p0w=8yHY$vuT_668q zj$H=oh+Q3PU~k3ljg{EG*l%Dz5PJpoKV#i>bWDnijl&(|mSJUedE9%j{}6Wq^n<$F z>YCZLy6(F8zG6LR!hO1J2|E(-URuJ>pcfO|psc|Y4Y2d9!C}xJ8r%deZQyQ*8L&nf zjW8x^lnvV8=7`c(hLNSCFs|`)N4cx9Xm@RlGY7keVubmV`&Wz=&$`dSHhe-P;NpEK2d_~fq zNl&(?DROAOg4R+0uD-0v2G7rhx930j?Z>Or!b3m5aW(J#v{Mfqo!5V!Gi~0Xo2??9 zpQSB1w;^%pzAw`J$LK$*xoKZoYg1r}DdU^8xwZCWO@H}7+K>J#_Qd{lD9s!eGw0)4 z-=#U8X!+M~UA|8XKAY<5HTqcEe&d&8o_hFr+UnManD;hUTHyW{Yo}~Ik@n5QX9pRa?uTNseo32LxaFX4{WEEM z^sMG-_G{XP;N08a9sD)zKy~|{K5NdV9Zl`C;Dsr_rS)-~cx`$6b7_lx>P<-V{ylB{ zpJ^pacmJL?dEAKicFsPZ*2lQ-8CRzZV&0MFA3fROvAoHiF+6K{&0z6f=zYwX<}=J^ zqt8!1Gkw?jzT^9&ua~)jImO)6+~WVRcNSoABR?(QBe?n>N^xVyW10{>exJ?D_@X3w6x_qpf)pZ~)12{k?4Lr=feUG;rcWh!QB zWEx@`XPRV+GOaPKHytn?;Wn%_XEo3$55Y8!1^Vq0e0Z#!r!=RU)I zhx>8&10Lm*)=gTEe#JFOcP8DP^g_}k$-+}wJv(@I_Vo2?lKOL+UwrHPHuP=myTNzA z?^WM-zT^F-WzXr~#6MGxh#aeOY|61S$H5#Yb6m)ABgd?O5E@70bNS{z5tR^?IVNXJ zfiK0r1b->2{yw($M!J`@%yi)!QoV3$(B;Uy;cqxknkLl6^(+)lCY1qL&tJ*K-`Yf%JOb ztCL2Y)v`|!pwmi)#!)AB(r`SUxd_t5L@QFG)(W4~@h`H?_dg4?xtA26LM@jXZ z?8hEZ{o~l{h=^m}z!v0OiJ7MgVT&N*+bN0_b8~mVugE#8q@K4uDaf%v#BmQ}FQ|TT z&R+@j92VvL1*zw-6untutdiJg3Hta-BI3QXv2#?vIOnp2dOkl88TyEbZ4$3L{El;3 zfOA-a@`Bh>hy{N}N9P>qhAPZCewlgF5%JzX`$?z1=-STJU*oz@{Ph0i>bG{~aj5;< zu6T{B-~1orZn>0ikA&rs7krz6XwfmNk(YRdNNYs0mbVxcX z9VbupG*7G#rME;~ze@4k3lv!^>t#3DEZbxcIhmYNPA&V%>E!Hk4mnWHEf`D#KzXn{R30l&l&8qk zP5F#EEuUw8YO}MR=h2rvl~h?IO)4Gt1-Dd2bSbaW)NhfAA{dR-2u3h<+Rq{w#RDn@ zn58NKRRg#-1C>CY>z5?Z>uvow5ln)qAcyqR?{A`omA{ zw+>PBheFhO0bKD&SNp(~ckYTK-t3^(Kbf3%ms;Qbn4c8xT3=CJ=fjnk6t2$Ov`fur zx~b+TEy(QLpDQl!%9nHHE4k`7S9`@(ze}!qJB#!EuDJg$*Z-x?^K#SGUQzSdL+3Vg zoG+J3uR5*^({e*N%R#?(}vIkcLSkrHRs1>b=?2e9Oo&S>ver_DTn+_s&U|q$|=5W=DC% z>?5MS6SZAZIXU%RDr!6**_S#mgPd8;CI`rQ<@|Cm^;F^Ymdt(^&Pe&p>BqIMgrOjKqlvz3L^YfF_# zC7Rl8t+HO($T;Dx%64TZQMtY3i62xBE9aG)%5BCBKUAJ6pOkpTps{L_YEo*vHNKjh znqr!YntGZhnx>lOnpT?5WE1rhx4z%~sA-mtdzg69#ffYF)PJpGRx`H(`?`H)=mJh-m&1?u+Ut~j1=8^^i5xv8bYR^(c( zN&jp+`dqux&$>aHquDRrh8_MVj89?0D`7rz7Knydx5pWg%g?voF4g&ks5z{7Y) zxYmwxH$8^;N`B4n8-8EOr8P4(lQe5JQ#BhjGc=p|Yl~)YG%MH>l&3U$b#g=>dUCh?!*gBIvj=i7KyydTD zY_Wi?XR*~nN@lQ^shXtP+}h;YyxO$dAgx_nT$@f?LYqxnfzoiFyxM_2LE1q+#kGTd zN@$1pRL~CdX{K$??{J@RpQOB+oLAHGs-0Jd@|%t=vhiv&?FgR=%R@H5!6;Age_(^r?np3|;Kf%aUK=dl+=7qthYOWVt%r`l(t=h)|?7upx0 zm)Mu0BkWPUE84ySf3EqISNw?E4$QUax%(yb6Ra%vCBRzuKGwwnk$aoNaB;!%^$&6>vw=>?& zs7MboKE>B%(r4nFWGaz~EWb?6@jGPdh~A(10DXt|8NVhoa$^R)h8G#X##|v;zoDD5 z;)No$i7%RPRtic8`bWQ@GymcDS(bmE5#h|i{C!@8Gb{7HBP-LH9pTK)bmmAnGc;Q{ zGBp1vQ$plyCeD;_=5IPz=yqmJICD9_&z-pZ7jq}V{JL?SbpI{`bP(UsQ2R)9=pST& z8Ujt4#4CG~5t>W>7ulfB3=QXs;m*v^efu z5vo55J6`ppv3pd1ANH{7AH|A!cs7gVU7^K*(m zq3IoEsU}ZFiTj0y(RZu*yV`W&r0kD)sMqIQhhDF=n%1u0c%oyD>k|6r^NcGenD&@)h~h#QvDEY zDb+87t$>K0+lts~YI%F?P}N_6-J<$uvCmZB4esnJgGI5mRX+?nQuQOTyHx)+_Ot5y zz*Jt9uR7R{sy_i6srpB-61?SyI~n`4dA7yeiT7Yjj3>E|O-KK6QBHPxY-Y7DxeWJ} zYHGjf7P#7~vXzH^(7cE^r(LnTkjnT+u*cN$d~lOrW#|$1vFeL45Mr!@=uiFGn1&L` z=?6u``Q3xvi-=?GOu?}b;RmPW83O5vzX_Y&lj|S95WNhA)qdz=+~I-{v3*JGO=K>9 zUbrfYh}`y>Skd>ejEzdrCtV5=*Ia4rbfgCU%eG|sA!0v)aFbtUXnd!C&TF4|z9%sk zrE3n#4*0Hl+yBaZlwvLQ{D?T#Q~J1HAi|G($QT4f_=)FCEXQ|T0TJbY=jY#jzc@$Y zM|?+#e_Z3mxU3vMqJL8SxEfzSZtv%KRgzrRHT=l6-H+C_f0t$HwEw4X_ zUzc@l?>f$p+lR9+@e}UQ%p0QaUyR2QKd$Zl9Dn_DJJ%QB+Wu$Tft~Y5{l{F}izt!! z@pEW`TIzN#>l(=D+Fp`EIAjAU6y2A8PnogYThQAW!%d{Y5vAXvj-`IYPM$hOQFqhy z*O(YZJ)ChfI=w}2ki5xF)=D9)&^A}PO<&(2siiU4c3FGQ{UYRl@pzK*r7m&Lo{~xf zUAk0fd`@U@`8@J*lOFp#g`ej>Z_w|2KA=DQNPc>a>}U34)_h0nqm^G6em6%OB;3&k zS>TwjT(W2688WjyE81UeQ&h&Us*W)ljX%MjiF;c}h6?D=49+-z*X;E8WuJ--E>hHpyRQ=P~1l14We&U)_t{;AXM7(z{ zcE0LA!HT?aQT~fr%roosdtnEteiU|<>VIaWS^^@r54HU>wvvXcG!r7qt7B`a{(kIH z)vv*Qt0f|~xs`;v91(tD?ioc8;Xmf8ey!d&>T?aZM@0E9UwX3<;U`{OH=JjuX^1Gl zd78|6MEId+_%0CPAAHF9L4@D=DTE@zUx8hv`fIT3RbPH4OF0m+O-^hv)t6q$k_8dv zt{aj=>5XQcWHXpe97E@3(Hk|2yVcDkYuvSp zS#Mx-o6#g0ZF-HnPPSSMX0768HAqH{R&P?=bT*6GUAF4AMmKkjWR?|+&SW#lCaa`3 zx*4?YHjP=QSPWL1h60n!8_X6h`#0+dNoceN#Uh*7zuqWW%mzNE#->x;v`qfM6o*zf zqn6DLicPU-WrNAAchhOy$w)NX%#;}Tyv*jvfGNFJk*$C1odH(6^kF!8s$P0?7a z{7-s!vurZ*{}FeQ#TnKZw0v3u5=MoSDjO{}h5y>>uF<(Evdy41xmo!>C5_ky#ub(G z#BHfgI@(-t`;Z&7Xj26veq1z(=XM+bccN|8nQ}3E_j{E?F&p&1)5h8cQ`=Rp61TTP z;L8nd;K?c9&cE(mdcF3BUr@xq9iW1SoP@VDO?XS`-cjgyYo7pOLTcAVpHm;IRTyz~9( zoi@+1Qs6&i6lbT4{mv_~RC;pG*B)dLmk)JgnLT75|JcyO>>|Zr|1UZ%Zy4 ze$cs}De8tU>)6TvfO37lzk4W+v52vt6l4sc@-1(ygsx(&iXP-xS0mOao-JK#W*o!6 zVAPoWr67}dwj6AVH5HL|ns(tIHXUVN=3^$soL|zIgUm&w5OZ1P3NL4_Xx2!TSjoW5 zeBwK~v+e$FR`Fw$TrkU)Y?5N(VL&SGSl4ZkWiWoMWf!YJ?RKmYbx>U+>L}&THKG)& z#!A0}H3VJ8S`J;oS_xg(I>?$`8qAt=l~{A`6eSlOtIfT(zQGT252ofD;GW%Mx#aJW z%R?s>^eEz?k&1fM@klMz^=Rf{mYRFC;BMO5qXT-d#}M>zk1^=+9Sr=saFx_G^*)O}(4CZfZqpnz}i)N57!tUG$xp=hEGn z`!U3EVjiI%$2>(Zqs>dkq+{-~LE5o8vph~`(}zp$`s@0W(j)yheR3&Y|K9LX`fLm{ z_mJP1Kk|)#HV?22m8x2MTeC^ByM}KhnR^O%Qhwb%@l(6|qVu{Jq$Ji|v>*<;A48vT zKZ$m>i066C=UbTI828*EWr)`q<+@h_XS=C)Th3B9@88gpUAEI(Y1gCO>_&8QdrD$k zp7yjvwS4XADalBiSCInjh3(|$*elrGrAl^Z%XgH$h&0+h)ozle{WO{;;%KY>Aa?eK zaw)wbJ?(|`zUXx6v!Ju5?~Cr2einLt`YY($>HpcLp5vHDTXMwFHap^Idoq3?UM4xB zV_}(E6BnD3c_&)Rl8^bo2%&Cx4Q`sV;VWae zzx}jj?W)<_7}1nb%1j`)~J+3{iJ+Hm5eWrb-eW(4Zjn~RLtkjHp>MrZ<=pN}_={_?i z#!a7GpN6?oEcKUAmaQ#^QEPbSYm42OmlYXmyr+$zAp#F&d zl>Q>K);`cb)<4s~)W6q%Wtfed!ECS@k{D7MybXSaY=#_$T!s)sB||ksZ9_dnV?#4T zYeSf!uVJ8JxM8eevSE&4zG0DJnIYP+(y-pJ)v(jB$8g$k$#B(h%W%)|#PHhi-tgI= zaWlEOyCrk8yJc|8?3Udvr(15f5^gn_ucLumBeMEkSJRI+-O4N%X5<`I;&{s!=_i&d z&^c$3%1=*z*|lN&m5~FNUfJ-d;D&N<8tkc4$SY2_@l}#n^=4P~TD4?Q@T61&J6t~3 z*e9lhqFFp6+Hf(pQ&?%a!QiB0*50iWJ2Y2@+v^j~?d@l&-Dzas*WDV$c3CqmWs&$b z*TeHAJ(w{$< zTWHD9UCCarlmDX}gYPcu7(Jw0g|lCZ@3TvSH7`s>fB`3f;F!(HE<9z0lA5^ZXdd$zJ{J>BKDu6Y*nYA6@>66=k0PyHKDSOZe8PMu3ylX?e!UY@Nyq;}q2c{+&pjzQ;Veja)X z9Wz42C7N6PgJW)W=Nu9H(wrm$_0BQR`Zvcs>pOgR`YQBE{@MJeFZ^F|2hJIgE%1w+ z-Ld}K%)mL^W4{J=TGqAuZ_D~E`7eTpo!YC5wLWab#;Vb0v3Oo-E`U=sDyy(r-fMHa$3GZYxrR z9EDykuSAP1Zbe!vujADX@+N$d{it>1sPQ~VZW^GCp?BS<1zoWb{Bd#_h3be(*{6d zE?phiT;Q>vtM{PCaSy$;AlW;v+X+5fxdM0i>_kgxr=(TL%!^06`MT3r<(wrgi*HW+ zg1*6M=Ui#dS<>40cA{j2?|AeK-}&fB-&N?%zT44E)hv9ee@9wXW`um6D5AwfF`4j(V z=-2)s%c}G)v8+AoTZb>3g-#a{5W%$((GlG{q93|{#4z;eh_UDi5tGo5J^cl3AH-WN)oxs7JK)z18l z_N3_VGaR$o6|T%2ln2`Lpo7$`#=-U=N&0{ADs|30xPg4zY|>42&cOs~QCZGO9hFBe zfG#YTLsz7AqDXz@{^$YBrA|woQ7(!!LLNiCH%Xq#wKP+nMfp5=A^u`oFU;I6uOQa4 zT3*jK8|5vO?~r#=F7kM(0m$Da{zm35t!Mcv<=5mFXpzCo9gR^jTIq}IOC6YA$%8Jc z1S=XTgfTG8fK8UTB2{A)3@cD5b2uWmtD^gEQU+UZ69CJ!8*R0|iUZXjIjw72^ z__UfYTuD#RrOQV&>rIFKil{9ImQpe6tyD+U@TFl&zB1~i8`t)$jP3h;G z89&gs06N4mLuGa5rX*k0w>2eUj=3pU`>w%{^^NmQDxLDZ>FX}t^1bJ)m8#f>*z-$) z{*9?EoBFr(*GjGY+f!S1_3uF~I?(?P{!{Hl!Axd3GUlMShRKZdQt@RSs6_`Z zn~hE%k(2r`PednlpNQYk1DIJ-k;X(!jL=DwBc@PKPLGJ9WCL?eGEZE@AMLTxZow@X(*+N(RD(@1Z0Zz(bA2^2H-&WiTdrzI@yt8c4kq=dc$C9e4a ztp+kY4WH0~-;KZvGn%Du#vZ2L#BO_9hRZ`NZ>?c+Ra zOL6XJY0F%4zl^TnQI#6$i$`d(mdc-x*t_U?nYN7N7_nzaWpczvMPxK>YF}D03sNsb zN2XqZuJ0X6E9R?r0=kILKS%HF@;OM2cg82BUrCLppP!#mvimvLktpcLmg;H}CGpGp zRY%wKtL>*qbsQ^8eDeQF-4*YjfDU7tpb0$k>jQL>A;2ww**XGj0UF6YASHgP057z6 zKw3(C1F|tXFgp{namE4)p^F9tql*WWWX*+Aj!}bT2L-N@6~_t{#mN1M{cZ$d*Jb^e znWfjvjYw-Z(Ky17k)LV%e2ol<%FR59O`-y&-BHJB2VIZ4fo|v+S$IAA1}z}hoQWRs z8EYhoPf2^nD?TvZQ!4FP`=We&B}x*HJ8Tl)l#({_ZQ~V*yr6_>~yAna;Hgxc0%*CK-PP1wzO^21IPX6Dx8#g?|F;PaM86ehzE^BFb}P^QgYa@w|z|P<{)0TP;_(^SS2E z4#E#c#CwZl|JD50V(#l^h?(uh+}HV%vnB|Bery3m>?Z_UT=h$1S0n8xUxQt%mT$ps zL&W*nj*V5zcVkzPC-9u|)z~$N*ym>KHr0>C29ht(h4Nh3+-mMX5o}S_55g`-I?*Zf?veC{%PzP zM11C}*c+;U7h4D}#cFSLvA-Z=f0X zhJBZoTms(v9$UQ=`D)c9sRnj9BKDs+@3rMA=JrHHdE&fR{`}pKt9~U8Ll3)it(qeE z!ICqtu@Qa~G8=uEk87cnftogkTvKOVD{>rNC~UrzEbjzDLX2&Q_kU9dGfna)2=%B@6^5?e#JDd^?O8JTUxDa8{;P) z3FhV)Ta}g7yr_*>&Ff!{hWeu#+F9?4vDt}hSvOYvBJSl_>nkv@7?B=l&Sm0}+y8y_ zZqT=yf0%hGYT4%TZQ^xOTSxw-tk$w7YFSHyJ34iOH`-Ut$Sj5*oX~)}wh^oD@Z9aJ zYkzn3O485USE6NA(9yCg|EDdhvGOEZP*aHpX{A}rCGcbWDw_So(8^N2Yh`VfchJ^~ zrL9FzCG9KCckQc}w67QgsJ5>}%POx@h*r=awXY^qK9#ux$VvKLyJ&)DxyDCY@fX@f zUp0Z+yi%?|Z5@T`MnLD!T1Qfv?9?-^IqzqQy2sH*nwEAhbF5Q%5$M(GjQ*SOV}19~UfQe9?thSyICYNy3-~vEAD~@x{C~hV*==^M`*)?S)s5B{ZBGBbJkvPaV0ZnW`nyTb{onX=U-;8D zSYSjh+FE%cI@8MP6449)`}Wv4$|pulMo)>D%B#*+*{X;Q5qfFU@7iXcBLZXcYjQbO z0|CC$01kqWJNK1OwlS@r{wbRpS@*D^r+x zfb_<(Cj0;@ZS>Gzv9_Z4)MC~HIMu2kJ0_V(g*+hIq_Wi?lRZSA7uul zqCD*%WCnzAwK-?ftMFZZzy!)C+MSVpXN>>%5q)RmKJhGhzn>rPzcYUC%&q_XQGDrl zYqz=L`XcAPrz4{8TFou%m)NRn9jm#0b*wVlEWQQL)GZzJ`~4cPO_=@NEPu`@gmbRH zn~C!5zy2;8AaQ4@iHL3fyT%zLo=fcy9)F|)FcFN1WA?_5RQ)m7ajHK7 zJ4f{wVB?TLwm*gas+RX8-rEZi`#EG{pR|{HS|sTl_uZ?AD8Ge$rTRtNu?-^1OJnD3 zC(2x%KjLVsAflWDNSV}jNLFkM)o+V!ulj?rLsWkZHcItZVjrr$becON;y4yoIwQtc z5s1XrK^(`rNdMX;r(fVQV-FEg-T~W9^?P6ktNu{zFx9Vmi+ku(;_Nhb1D^4&mty@( z_K(eui2Vd&C#(Jf>`K*NgWak6yRj!#{}lF}>RVsQ(h5ZE=RQ_>?esmcMN~foTTb<> zVXLctD7K~QOK-U6B4R%TIi(Blo&HViQ`LWo{i^zeK&7sT*ghP4QT1&jCF`8$7M%+Ln5ZZT3XtD=!4or=%d=%dhnLOWx~^>p=kPHU96dYpLzdXjl6dZu|6dX8DlYcS6|AHCST1RZIPMz1t)KyNZ{LF+6Q z3*%-i9_XZ&Ea+^OJm`FuLg-LSQ}j^F81y*H1oR|JBs$u%4!yy$1%2Ie9evYs3$3$S z$WFFdJooK%>l*Yr>o)Wb>kjlT>jAWE3$*c{+VY@7Y-P{` zZG+H5Y(vn)Z6na5Y@^U)ZDY|>Y}3&*ZS&C!ZHv)MZA;M+wg_~zEe5^9wi>Mz{e{FoDdA+hv6WQ`2b)ZxxBN;j6=U2$J{L9|QH43lZ~R%-nUhRTLD zhF#>!elz573nVYLv0GcW1#So3&bW;+ih6!BHM^+Sw;T5v#h8zy#uLU1{9ZNQG2S=E zGpf>L5;c1=>hGea5~i}Ia;A!=%BJf4)}tP8W$IxXNd3Isbex(wj(Yiy>AvZe>63|( zsMO5KsD+D~OEE4)j0&l2uFa^BhUVtxR;-0Nh?;mDHSkR8Tv6kS`gSGtY%HTi4v<$E z$L|Gx@6*p9QNtFqRJPQ%)VG9Mnp?z7O+Bemw_A=|#MqGQmOGaFme(wiQPo<@+T7ZT z+H)55rKl~B@OzT+AY%Te*VeaI*;d#VY-?Z}NFBG!cHAaby}D|V=utwWvR%JVsG(|G83Y%DiO{~Bs^0`F5fs}ks$^|JuvK&Wp zPe1124Dqb#8S2^9Gu-o4NWl`1?{bgI><-m!E?cCSD(7en|h z<<-F}%&VJMxL1tVYOljyabB0{2k}mwmYl``th6;D^~}@@hybomy^G~ODtcFA#6!6E z8}F~)1$>II;#Orc9zNO+jgFnG+(oVriWi< zzd)jYVSb&NXKIe0=qHKud+8_HN8827e=+VqG(*?yJ+i;?|Ku;S6>{VV%+WeWryOB9 z2C(kjf*dsh!Wm&8#uqro{|8PBoEex9sAD|;%UoaQOAE#<5n}`5mSkTRLWEDEUrely zNuF1v7{ebzye~X*f8+_)2D=$qlPKSBQQ@o&c0DS8bVzjNXt6d}L$VyNM8A&~E7pni z>cnbwe&jiZk>w~>4U?8HzOeejfeS}3e7PWf>hL-2^QF(CS55S(rJ--)%$MMA)xM4Y zHtE~JZ!hVkkeD67kN)Ve_^-tNViWcx985Tpa5CX^!i9v(30Ii~K#WoN_NQ~Bm)5M- zwNuvoF7I|f3@Va`J~hu=74>z|_4G~9Vfyp>R?-Es;u*7}zl(mLe~5mjPh!YGK5j5i zWX^otly081$GqLrqcf7z&e$S1fAm?m8|XW3kI*mOG(2+^W(*gZQi(=y)i&0pq?xff zdZ0RzYajmiBe`x9$-V>CX(h#^;Tb9jrfC5{HJ{m330>V3X7ZIfo4T8{(m>N-N@7j> z(FaY3(ML_k(6^zSc8TdLS~hEVG75rm_5;OUsULyR~Rqs)e;8kUMyaw1K|E z9JJ4t^~HAu4CcruuN3o@GV$()z83p?V49fJm)S)9DC->i#WdU z3t~&F{*N(zR~%nT!uE*RJ~KAA>WkREi0g~;aIA>$3tzNbBCyLZLwOA>z>^*k zDB{>BR>ayx&VY!wUr@`%Oo@r(>@wGP8n#ieCPch9A6CTQgJhPx8#a~ddt>dYpB|e*^)q3!seai<^bfvb?lvyOT-fr6*iSX=uc{x09jW@f^wXbz zr+;NPy(ZtU^!bz$XKzZFrW=&^_--BY0hIi_f8`yoe$a?Ml~Lq|e&2VZMnWBZCodd* zCw`7zlaBgM+>3wTck*2Sf^ugMN`gKC-_?(jllygLM?cCMp04S0GCW4R)*}6kFS(`Q zPMz8ZG)r-9+pmlxJ|B3fzXHN4kweFK|1I*8Zedrn52J$X(zs^v&!r ziur*~@C^S){WM>VUn&24y*2-CKg})b;7_y${#9>HzMu5gbT)V9`C+hmF#6x`xeS#|GY0}hh+!bTuaoW^NJP--{W`vI)%CW z6tfmXSFu(>*Rs|@H*xgw^sx@W|2sWB!yJ7)W4`Or`SV_!8{GZA@5O1)Gt3D0F=+LN z_<(DEo5ZoW#Qi#n;|n6T;EE~Sf?n6WS7MHoJ8GS^fO={%;y6a!&*KHI93~Mj=!1yu z|4O_d@jOr>R^W;egyOsAgp$tw|B?6nNBPGhHkEj;tAEUI_42UKa=FV{&yq= z@BcfJlK1}|@#Ot~M^f?r|D=dK=>MdMzWM*8h-s7lQ{q}vUepJP`FGU;u6jV!1uhYF zLSk{%4?nZ6dgEu-RiFGzO^g9kd&b`Fm#n|uEMMx-;c;z8?&;pE_qez1f_|BKt@D=58>`-m z^;|LHWvk_Whu0TA(Jxhn8_fshN_{UhPxa}g2h?nKvuBGnLsqui=Cfd6{FLl&pMGgm zF3js&>G8wcU!St+W8WI-&vcEstyJt%cf9YNY%#T48L~WCtJ$+5=d8Z_hb?t0aOU;! zEP-p6?o7Y6tww1$DCM*4J|{;_THib3N8zgd*~)+k-~C-0XOdOFw~{US6(KfiP1>K+|;d>UmBDyF|SZKW>gTA3a9D{mNE zYoe~vzRsP_>a__es)c6wGQ(^7qaEjul?)l#bKa%aJ4!rUJ!14oL%{}K53W2v)Vr+d zw}p?~OZ;{??GP~xMH)OT+*s~e_T0&8b=qW)}{~pJ7dFlg0f(-N~n?Jzqa>;%x7#`*(#e^1Isf*NQ#sr%avH$Fz0w z?R(i4>?(OPUC}h2-bu|?qiw~((XY2eZp?8gDsA$iUa#s_GIU?H?b^)e-$Dm0o}Wqn zu>D<^hWm@ODwVhYmj*qumK=TcK>DL?zCPR7{MFsfN3Q0&;4!p$iI8;Dlldh%Fr;6G z3PV2@+jcrh?oTT_EX;baV$OMK-UP0_`n1L{YuugPJ=>>Tmwo1zu&B@FrX)$%;!)Xs zW4=bF4t}}dqJO_SFDB$kcd$zN;k!>2ycECa$e8@*volT(e77vi^*&28joWm2$<7tQ zcjp%Nw@&I+ZT7JyZJU+pUu#dYvF{&lzBr-rhe84GR_z@W8{TOCZylK|c$XQhfx9m9ee*gOk(QYTV+wVV2 z@#50#2U}0%?^NNeasK1;zpc)?YVDF-xzYz`3!Jj_z^+z{@)g)#rQ5P2gTAhgn{YG5 z#fUr=W@ul1xcs!Zt=jPcIp0t89DBZUkIJiGl&n=b`q&Naw7YjUoSNr7qHU$kzW%!h zRBu^E`?&GkM)}6bUAqnc98lc+rGA>$>uQ|7GAU0Tk4MSMp6@WG>4jN+EDH;aOa8Im z$fC)fJkK0;BH!Vro1WeCxm9#c**^7doSqZh^>yvuCz7YyS>RyT$Hza^Y!LmeN%Bs` zZVbCps@K3btBwTiYqP~aZ-#}rTA29LT5R$(Dii|w>fv$ zU!1VJPK%~Pj`j`PnEPC}hV9FhsJl51{HuX~P4M3f{?ow!DEPku{}}L}4F0vj|2_Cm z1pkcS{}uc%fPXmnj|czq;NKejXMq1L@K?Y;Dfll2{{!Iv0Q{$d{}b@P4E{O5{|xwN z1^-gu-xmCPfqy&jzXtvr!QT`7TY>+2@J|K)gTOx&{7ZxXP4FKA{yyM81^j;je=qPK z4*r|KKRx*02LHO?pAGyC;I9GyS>V4E{9l9rTJYZr{tdxDJNQom|Civu5d4pW|2gpY z1^-dtKNtKLfPZfA?+*Tjz&{%N_26F}{6B$zG4Njr{$;>_1NiH}zZ3W;fPV(?pAP=V zz`rN>?*RW1;9n5@uYiA9@P7pUhXw!OKN$SWf&X&wuLAyGz`qXorv?Aa;NJrL?cje3 z{0oEs8t``q|I^?<5B#fw|03}J75r0zzX|;BfqzNxPXqpD@LvJ`TfqMi_zwmDO5nc@ z{J(+!eDL26{`dTk{2PP+JMfPM|KGqr3jEiBe-ZGH0RN8Q-xvIi;Qtoe-`}Dga0b<&jtR0;J*v}3xNMJ@Lvu7DZsx1_}8-agU@DBk0`ruy!{PTc+GVmV*{(ZoI9Qcm}|L5SJ5B#5j ze^KzS2mZm}-y8gQg8yUiZvg(u!G9R|4+Q@p@b?G*Cg9%%{4L-=8vKice`oN&4*qk% ze**Y71^+Pc?*{%Qz&`@~TY~=*@NW$M?ZCe@`2Pa_8u0%N{vE)-2l!V4{|n%M6#Pqp z|6=g35B}cZZv+2b;NKnmUxNR1@c#tL|8~lU7 zzcct(1^*S`za0DvgMS6^&jtQ@z<&Vv_XPiy;J*O;vx9#d@c#z>?ZN*e_@4oP1^mZ@ ze+>9%0slSV-xvJdz<)USF9rX$;6DibeZYS`_`e4K+u%>q%(+e_Fvm_zwgBXW$wrz<(O} zPXzz{;O__i6~R9>_-_UOY~X(r{5`?n3jPPdKN9?-z~2k}4d8zb{6oP%6ZpRa|03Yu zAN;d|{{is-3jVLa|0?(o1^;y5p9K6ffPXRY&kg9{kUP|7!5B4E|d1-vIt2z~2}A ztAqbz@XrVS-N3&%_@@E?)8JnR{L6xWQ}DNde{%3I3jUeF|1kL91OGMPe*^rxg8vEd zF980>!9N=OJAwZd@P7mT`@lah_=kZ1UhvNd{^h}cD)`IbzYhHGg8y#t9|Hax!M`E+ z*9HH#;9ng4J;6US_{V_%T=4%4{&&DX5d3?9|1t1a!2cfjX9NFy;NJ}V*MR?4@P7>c z@!+2m{40Tf8Sp;?{^P-a68Luj{~F*Q3;x}}|0eh!2LC_#XoQ-@v~F_zw~M zgMT>qX9xcz;9np7ZQwr?{8xg14)Ave|Aye-0Q~cVzX|;7g8y^ypAG)I!2c@v_XPi> z;6EAs7l3~{@b?CPBlwR7|Bc|E7W`j#2#KNa}T0skW4p9%cyf&VPrqrra~_@4s*w&3p%{w=}3G5C)G|KZ?o z2LIOJe+B$K!2dk>UjYAw;QtZ)lYxH}_%{WAAMh^={-?qJHTWk7|AXNF0sOy#e=+bc z1^%nRzYX|j0RP3{p9cJIgMU%*w}O8p_*=k#J^0rF|D)ia8~odY|K_F5n;#hR+ixFd z_U!q5Y~Q}`t*>7v>}c2S{F+XkuGiYXe`2-3z)+1WD^aampXir8dmXR%_y^4{T-b0w zCZ_VN9zC9xK5}II+(CnULk=GvIlN!L&nZ5Ce(|JUy|stSmK|q)`SQ!t6)TFjK6`fE zw?&JZJYKb`^v*eR(tlX8q~^3PUG6s6wQKgCO`E#=eEW85<>bl5+GfgBsebC)B}_UyLWDuRH*_NPMcQ1U8gf`m^CY>(O|IUPntBt?C@~!Vz+PK$n@mN@n17% zu5x_s+5z*scYo|{G$x%lcyO9-{{FuNq)weThqrhBwH-TNeO|x*`Y#I>G(=$_n>A~VpgVW2blD(^0b6J~Hr?v=o{hvMC9qQ*7;`{aM zokMHZ^nTW$!N%COZO@iDdUWii*x1$;3l-{ey+Va4XDd~j@$i>lR#!NAa%j7_xNX^9 zyx4y)I=X7gFJGSRFIjTfh02v@)y|Wr)s&$_lbkGFdX&efPmlD9q8&J3K>W*U)fSX0 zTC~^J`SUa0iHxlHrh4^7@rxHX+7%KKK5G1U-HJ(*g166|YcE%@V3_vZyH_{1Z*RVP zKg_ zeR{rQrAmz`eO5X?%q8!x_9r_xgR_@SMt!I(e(-x=(wpvhs$He zj+I-SJGbU^l`3;?Mn#oh-@g6D&voi7H@toOCgbDBCs(y>d1PFlK5rkbTv;}io14eE zty?>d=+*0Gr;HgZbO{J(n8C-V;HzcJ>KyRUE1 zwTcy|UEQ&x>9EnGtwTqRa-R?ucC$oK&~N)TZ0H=_s@1WJ<;qRaG4-?j{{4rfHk;4l zrcL)W$(OI~r@D1l#%%?KhJb&4}duHY|X$o(dH!pL+TemJH`}pz6x*0RF=Sh+z z-L_wUJso!GQq;(C;|vi~rsUZ;dv=a=Y10;+G<-{sn+Ml zjiuwqjM02txUgRM$dN`*t2OoIojY6Rx_|$|ff6N#Y;MygZg278gI3R+nYCw*9QBj9 zyQe+6dUfBgwQ5D4-?pto;gl);!G9_E4*~y~;6E1pt>C`{{MUegE%2`f{u=O)0{?#C z?*;zN!2dq@&jSC_;6E4qL%@GH_@@B>C*Xe={LSG16#QF*|2Ob|4E{U8{{#3>1OEo# zzX$w%z<(w9w*~+D;9ng474WYL{tdzZE%@gJe>d=-4E|lgzb5zxgTDp*Yk+@C@NW$M zS-^iG_`8Gu2Jkn6e}3?v4gSTzKNI->3jW8ze?Itoga176?*{$>;GYBh*Mk3Z@c#n- z@4>$^_%{Xr6X4$${DZ*1Gx$#j|99ZuM(_{*{@@=9{=VRU2>hRce=PWy0sl+jUlIJT zga29Ze+d2+z`q^%X9NFx;GYuw_k;fh@UIR2Q^5Zu_#8W z68x8de*y3x4gR^oza;qA1OH9nKL-3;fd6UmzX|^9!T&S(8^Av!_^$&0ap3<5{8NGd zIq)9={++n1-vs;;GYcq*MWZ?@ZSdhVc71||8?M> z75wjje@^fp0{%6@|CEFO-Tu$O-w*u1g8v%uZvg&n!T%`u$AW($@UH;=mB9ZO@IMLu zap3;~{G-AD3;34=|H|N>2mFVEe`)al1pW&64*>sa;9nH{=YxMF_*V!2#o!+T{^P-a z68O&r|AOHE4*a)+|3>h?4E}cT_W=I{@P7mTr@{X?_*=j~8Tda1|0du+9sEmyzbE+b z1OEu{?+^aPz`q6fHv)ez@b3!#q2NCd{HuchRq#&-{@K8P0{D*r|1#kJ9Q-$fe{%4@ z4*re7-wgg&!2c%r=LY}6;BNx|^5Cxr{|w;Y5d8Om{~7RK4*t!+eI?-y8fN zfd3)zF97}>z<(_Gp9B9Y;2#D4?ZLke_`e1J$Kc-*{QH3aO7M3B|E=KP3;Z*Je*pOV zfd4Y^Ul0BV!2comUjzSc;O`6m6~TW8_>TtvQQ#j2{z2fs0sLEme>w2ifd6~&w}F3C z@XrVSb-{lN_zwgB-Qb@F{O5uHE%5&c{xiTo3HbjC{+Gai9QaQG|JmT57W{{U|0D1} z0sghYKMVNZ0RJ)IzYzRKg1;5~cY^i7Wi)i|CHe0 z9Q=O+|DNFA7yMs?e>?E+1pfQMKM?$7@NW(N*}*>^{4aoi4EXl||0Cc(2>cI&e?Rd5 z4F2`NzbyE_1pgJ_e-``~f&VJ-p9B6&z`qOl?*ji#;QtN$Cxd?`@Xrta!QlS^{EvZu zUhrQE{`bKD75H}s|BK+C3;a`nzZU!tf`5AO-wXb!z<(O}>%e~&_#41KDfowj|84Mp z0{)r7e=YcT2Y(~@4+ejK@J|i?-r(O6{Og1N0`RW^{zbt5Jov8z|E%DD2mEt_{}Ax6 z3H}cL!T%Zf`+@&g@LvP|4Zy!G_#XxTSnw|d{uRK#68QfD{wKjd4*Xw$e>C`i0soTV zUm5)Kfd5eNFAe^mz+VCX0pMQ^{ELGBeDIG1|LWks82m%Pe?0h40{^+-Ul9D?f&X^! z-w6Jf!QT%49^jt<{%^qlH25C}e+&301OKPs-vs=pgMTUT_XPia;2#10{lUK&__qN6 zM&R!S{$0U86#NH*e^v0m3jXQ9KO6W@0RIu-Uk3c2ga2mmPY(Xq!M`#1o5BAI_}>Ko z+~8jr{7v9r9{ly-p8@!PXzy|;C~nVdxQT2@IM6p1;D=p_>Tqu zbKqYE{G-6XJ^0rF|F_`(82np;e;@E)3I1;2zZLv@fqzEu4*-83@LvZ0>%sp3_&)^y zYvA7v{C&Z{BKYqB|Iy$-3jD*sKM4FcfPX9SF9-e_@P7~fHt=r>{`tVaF8FT&|6$<2 z8~oFN|2*)&1^yqwe+Kv`0smjY{}T9*1OF-DKO6khg8y*ve+2#~z`r*5X952k;6DcZ z7lQvt@VA2hPVm1E{w2V_4fq!a|C!*Q1N_~=e>M2m0{?B`pYkJ#ffrf2`F28r`yJ#i zau2zWJU|{Ij}sE4uL%jkkDR{yH~c5~PmyQHbL0i`5_yHZM&jA#4fZYa4tbA!Kt3X$ zkk7~$MC9ImB=PVQ@|gsTPkbJcPbY%mpGh?OO!*h_I)8r=e`7_yoXB|-d28awmA@qN z$V4ue$fpvyO=4__=u{WEj}4J8$kzdqRYB%Wh^_BUUA&j0-ccjC0ysz~8}q4zd3Myx*Pj zU_MJQpGE9r0G~sAhG6Lx{>_90%`M~!+r3IK@VSDe*OWiR^1sP&p@9nxTxhN*Bp7ZW z@S)*47yq~Xn)lq{xbUK3Uk3JNfEx|(Gr$4I^yPTI>@PtBKN{E(oEg}k*pJ~U$AuI2 z<<36Dc@W=)*xr|N@%hF7D*m4Yne!#XlLSwcCurXCI^TnaW3!(G4WCEDu?-x{z_AQ$ zW8ifIEDBZ)yl!AW2KHm%Tnb+!X*w}ZX0Uc7<76iOi&3mUj$gfzX#A>J;YpT~7y=Ex zQm*e-m3hM$m~V!ZZeEh7V{Mu5N3`Z(tV=z{qBEPS+b#4Rbwq1XMyCWhRwAtayRod> zjj={W+Q}&Oe~xH9j(@@E9MKwY^kyue7ztR^6vV28!QYK*txWmv$F*)}EkpMC-RRci zZ0Q=^nt<;d-CC5@4cX^+V_YjUszi)t|Fbc!$9eSvW7owPS1lt$z8~XSnUdd+aoui- zweYDNDy1&h4pL(bZku@ZP@fzs>K|Ia5^k^z?MsRMoAz7wcfRiK|`@V1@kG;`U4} z6}PAKYS?_lSsaBpi+^Mt>>x3!PerVur`51lNK3DVP22^Tdc8X*W+pBts;UD`*2N3_)r0UTn)uILijn6Z@m7XNL2rf`a=mdL5niBs3F>v zX%F4GOt&&BtovuRNOqZ)Y?oMn97UZ`1*_oYb%qk2a$C(dh|^BqEmRr#w?On#__+A8 z&TvOgw&pIB+0E;W1IRh5c}){X(|oI0m6eE*u>^R$Xo=dQ4eAUBvCbgB7aCX*KU}LU z8v(x;1}qQ$Eim^NwSo$21$#W-ik0ubt`)M&BI0V<{Icro2)tdOe&Va$1w8BWI-reM z2Xw}BUxlx8KUD5yISp3GpLmP%1DKV#s{MPO@2M3QVJ(>3H=l14?J>+$+Z?N+~H_IX`$5p~H`!(u}fcJrI{iV13z5OaCGG9yZr&HQG) zQZJ?&s~^)OMvd)-pN+5ACEdij#2smBY&s&tX2foX&W_DNs;E~?x z*1tKP$QA(g5A49jKos;%F!=#!jYSXjz+dwR;Do#01)zNuKK@CQZvZEN^kOji2Ov#; z|FgLM(l>yWj=W51-vHB*NB#k5&c75~+D||pFMkkxgzGPT29U1+dSCJvK)wPZpeY8x zU7lasXFyB%1+eA50e;JWKxba&OaB3*k*|#7j{#5QWn95CxTe?uPTYUMU@-X;=#KIf z2Vf7+|I)8O-Z%UTkUs(XT;x+Aqm(a!#;5@(pL_|l_zqtJtx*F|dGg(_@Fm~~P5uOy zBcJ^Dm-Z`Agx6G_{P%y&uYd%#!q@x?I3u5Y3()$N?%>is214+fj`^jJ0gBQ=`G3~O zKs)X;fcy*i0FF4OFIW*n;7cC^!MuEF9|MoaW3@U!=VLwrwG=@5dwdVvzIu^lvFPp~i7ao_~59Ztg61wi|<^Efwv zbW89=u4jUm0JL^vJvf}_M}U*KCZ7mu0PXvuz7Wi>;(Y#3 zywm`s;f#+x0z{3M=FA3K?ge28Mi=0n1^sb&*(>F1GDD19^EHo?yHN9e%Oe8&rbh%H z^yvJQOZ%Gq0Z@+NcY2=k;2!c++Tv+vyq|NIQ04^ zb6=C>)98xm&FHS^Yw{!alt3{?$@dt12#PUA-@*qO^$Fi2Wg652v=@7TzxIW&miGzC zkJ0EdQ;<#-y%~Lv{{!-3_NjkJUJ%Ha*(YBJ@O;E>iasmlz7Rf;hcn)9{C>X(w(x|8 zUy`r%FuNhYw2#Zt@S+6YMWPoa&+qVYnfQNfxNik{Iwn-Wnb~3 zNuC&NKlA_esTKUWZwB%OMZVwgODcMV`fU#l+280zD||MP*QlFiA0d5G_8C(4ndgSm z{c5@AhCXOH41sq!oI|-ONag+;q@qu$-}d4_KIlIAojMJDR`feXKIz~MyWBIRmr%_=lQYJ)hu zxRbdzPx1qy=+%GnZk1mlANi%X@2TIuRFI}cg(U6CVaghI*UtJFsFZ57<)VuBq z9#wfeYQG(PbgXpUxc8S@@pBKny-*Vl73)UVuhfk+Qudg8<0U`5@+i!1Viabfj52B= zxldk-zf3-Pdm`;C`f`)kfpU*--&Y4_W8d7*YC`!)+1G1AB~9u9|M}YQ^Lmeb`zq?a z@AdHe?b?sL{mN@U`FPxK*L!l$zqVSAsBIJ;>8Re5d!$p;d*lmPUhnd*4&z{ZTK*a*ut#t{Z6_Q&Bfwf|h&1`M$c5JRK|QM)G$Y zSjzw3mo?-+q5mqNUrPPfW~jJrz@_`IQr>4x1*dbp9sI4nY-1gHJJ$rP=+}PPmrck2 ztnpqM;9Oq5bYGTy-VKzz75??8Z%jV+ zMkBu#*nszsYlG`?-2klUH=Ci)+>G~|ZA$f_OZ(lUJ~Q=^=`;QeF5N%AK>cFmi~Zzk z@F53X+V39qkDCKjrnKL^FZ;*6d6|CT(tYJMJbx`%(Qh_KKe@DTzE-^7O#Nr-JNLkQ ztpqFl^u<9Z19T2s!Kqwt1OKT1zS4bb>PL6LG09)wYJl!T>Pu5UdLZ8HIhgv2YV@@FYIr`0G!HRzK|CPQnF3qnuI0rHU=sT?g zZoqXza3ii=z`eMZf%kD;0Dj3eIT7jy&~b)f-Gj0V_=>-Jy*<#z;k z=Gq0^o9n({0+s0x9>n!fuou_fU;>r#0sC_u2u|cW8BCxuTfy77&IIRjod+gRncd)h zTps`*O=4FHzIPjr9QK%fN5ArpX*t0Ls?` z*W}s|+>Yz^;LcpTfctRW4@{ta2Y?Br2Z0HshkzGy?FLTcIvt$NbuO4d<#&Vka-9!8 z!gT?-kn7Xn3tSh0?{obW{G98T;CEavHpJL6K*v`yl7qB5G=a1xxDwY@zytyL`rw*e z*98*<N=K>H=-U4jRbsO+1uEW3^xQ+n7<@z1? z1J|k+7{3L??-)642Ft+Io*O(Y&f=NMiOq$@M z29T}yFoE(7z{XrR0ypKlIoOu#)?fmaw+FZ3+7aBAYbS6D*M;C#nBYU@UBCfc z2Z8r<{TN)rwd)7W4FahA3^0N8Ebu$7jXuJ^EI|2f!2P)%4bJ6yH+VnShrq|VJ_$a< z^?C3`u5qaU4>waxPd8IhW#$%Y>Kc}1Bvu%T*RpO}mNjc`!&)dQ<6q*2|CV8zsIq=& zYiY~MwQ6l=-^RhQtzA1OXV$($$DcZ}&Rx2?bnD)uXRqF@59`~n{{ZozG|8;gHb|UO zHbiXa4jVpVWcg8}$6)RlO&zPCty8g5{sipS)ik!ytreiV~ zO$8ITS=Fl7m^}v)6TRlm=b3*6Em*jS4zn25veeyU31gmKc)8SjnUAlZ|MLG43ivCo z1glxgz|g36ow|W5g3#bxwR#PX8oV}S9e$xg`5T0RH?Z(;znzS+2*rOlieeLEsLxm= zLLqptm{`W*;!&@$gv2DY08(bKtt=HU(|~OVx16~>3rao@knPA8^$#XFxxe0F=dZJV zFDLKU1$OP;!}k6<`+IWsp%6c>{BM-s&klU!Kc%t{mePNvtXIE*al=N9o6wxf@7XY^ z0~=X&;r0?wIf+smT3=sm+P~kvZGtkE0R0v;1>10K5AMJnQ)Ww9&-oUZS##^*1M+{HQbpm^ZUk5 z-<9pZyu7#tlrN8_aCx+Z88wAjaPPGtpml8huMZQ7EezNY8X7L67uX^w*|;fmb7W{} zR5W7Pqve}`A+Y*l%Xcf9y=mLhGcwtB9FAJOXzu3Z?#vSpzKiWE`0V6 z{sLF(V(2BhV0_zLKD7Mh&`^94S16~b_tk6HZxmxvBi*N;ZMS+)?0x&r-FvL}{oW6H zKYaAKckd@pzj%*lU%dX&m%rM-3{8X+J;P&K80vs84ygTCzkZHQRaNx`@gLcK?|jg_ zE4}^b`Ip}Jt2z#MxHj7%MjnZ#ble%4MjB>cr6UF;tQtJxj7ynHJOc2v z--$Joj(PPNVjSQcM48d~N;KeiWmGlGAP(1$#sr?GS(#1eF@e7)%1i;qb&53Q@ntX{ zfT{gvG+;%1nSq#lKS*l`X66qSqXAFFY^RF95m{yfN>X%66-MzXRah*K2`rB+qgvLQ zseNNUQ>(Il%T{Oo#KNc_l;)rdYv>I5N@5iTNxVa30nJ?GmE_E9Mp1SHMqfshLAOf{b<}Sd#6u zUC<5grris=zxE)c!?Z_ftFY19leIP26m3`J%+w}3^m1*cGmQy4?P25XSg|uwmx{fS z_N~~zq7oZ`=$o(^SM)~egD9M^yH`v`x)sqlVW+K_i!`s|Zj{`E*qj18Q1LXr z39eYF3Q~&IiMe8x0+0%oC&Gd{MRze$sqQ+YGTpmKpCE20+ILmU!ggA|st!`asuoD? zt9C;=wCY5pldHNSb*q|+^kP**y|&Cq&jB{owut44e7z+|m+HkJrMRAIECsPWaZLSM zu%Wsjt|#I>A+je*BDNLA zk+K?fV9)Gaqbt(>HD)8dQ{z6;hc%udeNp2j(zi9NjasTSHEM2z*+q!biT6T`PJBj_ zD5NnaiAa-8(vfDGBuc6LVEmxOeH$|Eke+?-`D8-dWj8a6;M3hqGAWkXn2Sh4` zJ-@`DM2Q)e7?k@n9w<&Q%+P1_AsdGsR@(W8^y~iDeh^DY7Bc>^? z|N9c8t{-M#oz^UhYRX1`obnN$>th&F8DgAb<^rOeVn!z7oC;X^dj=`RI>niMW5d0M z9*+w!2yg@50!+YM1wauKisC_q0x}MY14VOR+%SVV6p#T0KoLMOp%~`#)d5U^j(`h5 zaU9)%J-`9r6u>ZRFAR_Yu|P6V2%H5<0EQWO4FGds1TckzsbTH_=GNH*y?~*>7=UTu z`2sY6=724S9e4u}4I}|Yzzd)Rs9py1D*zk7j)S7GWdJn4?l^D~pm>uMYtkA}tUaN1 zClpWB1?US51;T+mfYzbh16~453;O{Sr@j}^7nlaj0agGZ0L7$_1(E=U8LAW=l_HaE z1@ZujH})2w^(^Lq7(X60c>+Ljz)}E)`AQ7{bD$rP3>*fEfR_NRb?FRr2c`hD#$^{! z0Ne&118)FYxFjvEjQPz_Dk z7oZ<76rf)KHy{(p0}cWVb$T^`=GM^M8FRo6V5q@c0y5w!@DWf$yjKmb7VU1$yqtBLy> zpxBeN?!yJ>2Mh()0x}>LD8ihS*Fds?9C_d;z(*jY4vte7>vsS*z_A`)n+wd;3fvaw z?*tx;&ods+4=@gx3`_wEfCm80cXQC1(*#i1Ofp2$pTvkuqk-H0a{P86redU z;Xo0fSU*B*N0=+3H7*5vpdT<87y|qfC3$TY+^9D2kS^^Fn z&fuOvA7CUf23QY706T!kz!QKymdA!O2d@NVKq8O=yZ{t2-)=s^@4{0&+dxae9%v7^ z0NsG0z$kz{!}IVG*BiJGJO=o8y0&c)rpa{4Ju-5|90<-~Vzy;_B3sSf1_xQS?Z~VwIypy=`!8CEc zA7!Y>v&A`iB;{jia^D~HntXoHRz^sSqv(x3TVWJQ>m?6YXpK~?N)j8MTT$6Jx&IX(fIU8}V&AATex}58AuFtsv zXJgI{IXB`=eo<&^A}7%&3Q1G`+KjU~XA91joF$wUql+}3mA0mG`emH4Ie%@#xdrEz zoNYO`;@q0E9cO#aZ8$q{cI4cab34vXoSiwh=iGra#y7={203Z#Bqy}tw2uoCk3p%y|gsp`3?t9?p3L=aHO8aURWi z4Ck?&$8jFdc>?E&oF{Rf%y|lDSI$#8PvbnD^9;^2InUy(80ekDU(e+{kMn%a3pg+2 zyomE+&TgEgoZUHla9+aMld~7+rJTJvFXQaP*_X2)XMfJiIR|hKJT$N4xi`4Q*GoS$%h%J~`R z=bT?~e#!Y2=hvLyaDL0Vg!4Pj?>T?q{E@SKW$-Y*CU_fux3gFte&u(u(`XZ%WiOGw zX1`ts{7^}WeJv)sm$EwZR+g^-UaqXf0+b`ri{7OCX$A1-Yk!BTs*B-*L`A03I#FMqMTF1y6nx&Bq-(K79dEJAyqHu_uIN43>33i1~Eo%VlX zgj!bVMI}7@mEI%$t46EORJ~YL6?5+YnsMsrYO2)-GqoQWtzK9IJ+B(xNCRtRAuVf@(UcJ7N3ae&R6S}TZBO@i&*vJIh%*Y0*t&ttlc19hLb}{lWvSv$+Sd#^s zLKD*_=+ieDjC5#|8%Xapd5H9BlV?boNj($v#7#_0)cEN96caZS9VY!lWAtXGs^+H! zHFFE|#>~>(+8q6EjM~FqD302PnTJD1h@+Pc^ zBWH0`7*d%yYF{M^JEQsEKaPJX z4)+5e$A1nj{N^~md3^tPton){ht%~u#`IyB#ppq$lB!7mj`4k?k1ampyZ+c8>F7T= zzORKg2EJ#E5zv}Rxi$v3;Mx}4ifcPC*#oG&!X`jkVHXg!l6=gcv|`+!G>!Qi0HkT$ z-=1p+a0jl*4lt8zvIT^3Ed!HXfc7QZz;Ui!ROI#n@%U)PkS&0;!X6;zqb)&4}x!St*}GTzV>KSkS#(y4w&o_q}{+|lOV0ILx{Q@Y&w8g2EXL7 z0BMEoK`c{2U^M{J3Ohs@Xba@E`0kUc60Cdbs;Kp2&jl+v;xm8+T z-WPdfpQiEw;4rSk!7*HuUF0&?s`!N`n+TOx*hR$mLY^_tZv-~y+7c|`+8S)bbt^F0 zO)B9yWG@-U^T|eH1<)~_!5z6C0w&uD<&*s+iR-=KeO!}Gg={I*zm1a` zx?Jml&A7G$w*lz;QrKLmJlS0ec$ur<>%0uvU$h7)QxMvdQQ|4+Jmc`C(wP z(bPfyE-=|@s65$gGyu|?U{kK`!P5Xsg^?d43mgSAgED8@M~y3R?{wzaR330d$<K(28VLJ0ZemXD4*uR&>R?QhbZR3kd8y%7G5S1 zyq)VE;2eP37`fm*Jbxcp^_2XW>R_5nL&vB2G?ls51=rxZ7TAXCmf+T0+k@M3t(b?S zg5&&zJQtqd9ZYj`==d~0Cy(ph;PYHx1i$6_9k}utd3jy171vF{UAT4uPv+Vc?9H_g zIEL#u@NTa6f@xk5or7ZT59wxTf71LP(%;n6a zpKGJyOZeu7FC`)-hDno>m^3YoNi#E7;Hi1zB#UV5oRrLD889W|`;!F)i7Z_krbe@P z5LJ`OJUy9g*|I+EeSBuN_w~Kp)X(o_Q-6Q|_RE)3`O3{!!aQFAWj#EYZ0S-a^Yvvi zfB)=efq@5_tyq!XY~@NOTeHTrd2sOSW>_oKEG$g3`GyTlmbT5Rd3t(_=JNNJNIlRK zQ(={*Qg?}T$r4kkr)PO7j)(J*NCShbN!PBeE)5B(AzinwZ}W{C2RGleX?*j|n@2W} zjC5@t6~$!HFvpi??#CT<1OdaRu<|dI!rKWIDVJcnXX)5(vYAW?!CXxF1(99_uKgCqKb*n_0isR+L z1W$QuLL}1lIFHC^i8L1PjXt|H1k)ANaUEk~9<`2*WwPYtSFKZ0m@GB*W9zgu<&f-b z4cKH=rT+dBoTsTYC`ck*xl$rUgwA$rF_l4yDND1nSx9cKhIpK%OXHjP`cZin5*$3e zU1*p`yYO%c&Yk9i#kWgMO>LK+PWx!!HI?&i7qWg+JA5}dAMsdVaetcOh3|Gx6L0Sw zO?-V1H}T`gT@$>cU1;c@c41+3OuF8MO;)X*{eD^|K0eh^rjm)`9D{=|O;Bg5A^1K*0s@#UB&34fx^+{`LPOu0goV{H*&trK zI?~MTs`!rSv)7e+`_lQ;E0tGY%u~Vlv^K<4x@{ZoiHs)F?HH2MW*zH$cyz1p@87q6 zP|%S2!NH^JhlV=VkBx1B`^XsI{rZlnsSR;2ZSJ^j+hJUD=AMyJ*e)}Zxo_WYEX~3_ zp~Z}GA0>2@N+r0DRB``Ha39U6zjEdL`e9-2^*3%@RzEsAu>O`Ulj_rZ(*5G)B}VCz zMMgF@!TleSn5c|%Qk9aE4*Ea7cQBK=$)D-%5tu%L*C8>uzQk_s#1d(k`1w_FAE{E^ zfX}Te-dpsYV(dT~8>@mmGaMK9KcsWc`A&tt5B_s97pQC$$^poEoih{g-oD7cGo zJp%*9dQ!G(RYA*j>o2!VOe~N5;+Fo)@3*A;>(l?AjG#Ky!{cqsB}4yCfl^Bg6-x=U0bTVva{83zKd;T5wW%#Hx=5(C8*#tFIS0;qtE`lZD=U5M4E&t zLUeuTTGMNpc+E{vk6B9N5cJCmY5m!hs0zxO0ulQi6~^xpK`5GUiD=$`TN zQpNkrHQm25@mx)%@nZd^in@x*E2ADHRu%6D@qS7ERM%!?qJF};(mf`Xs!H*!h-ImM zR%5If=aVm8&x&z9^20J%F`l9P?cz0H`EDy&G3uWD)k&;4Ihp0BDDr(-F|K#Me>5w` zZ(x2b^6}a8-8@(^K7YPvI4hRPSboF~R*d>HKS!}&Fe}DAo*$CRit$|JZ&Tz4uwq=V z{1x%67@s#kL6N_d6?=QL{AHV1@#f7eKN9)4hWT#4+h!|yEZBmd1K#x=%ki8MXS1m&rIl1KvrBxs8Ws9WUs zG=1-pk)~2S6JpuT(Q+oQM6{3BQi;^t#}xOZMC#{xXIe!?Ux>jKIto^@sMd7-lOn=NlM zsp6TJ@4tP!viRGD?@xT6ZQF`XGBZ`Bt>ocueG*Yot6+E>K5FT~I1?vCFc zPkA2dP5e&~KacpFi_fBxcz;nowG+y+>u4`LK)b@oNhULMiil|Cv~lB4PMbFMbK1PQ z3F=ir8XaqaI;n{?aVvg5a6gs7_vnT;p64=CsSm!#xP({jcI*(Gva`oH<>YuEO8rbH zdHuG+3C}yu0l$e$MpXDSU8+Yx9#E|Y(cbnjBV z^Y8ZGz5)aB{oo10`aKo8%Ms^v2x@e7)NF8w$A+?Dq7{tpsNslrS`H;fBHrm}@ECDF z`Cgwsg<@Z76IA+?{kN#GqPx8Eh_yNaaaJcG#_ANrSDgwy4RKXx;63GTH|Fq2r}NnY zwvdUQFBn{3Fg$#03G-xLY$@|*%SxT2PbvLtiAE?kRK3{Hm=j|Lkq%&iYy}HKuWKb+ z#kd0u7R=V7EsB-*xE_@ezg8FVY4w;sEO;TJTZ~Y|q^-fiL>F;2;o4NjBIsb^X21;D zM#YQY%n1{Zit?h%B1f}knPvVk1tPOL(7;9VBjyW+n>4bBb z4y>c->ZkN4*w0@a03R&pkv% zSE)Z+=-zi7;68i6X!if3&q_aLPuNrTj6G*BFxUPS=Gwo(nyI&NCHxLCyE}hY_K&>y zz<2umdVT!SL!mJx0KdO=VO_=f9$%L1#*_q1nL}JY7^MHQ4TkH#dF#P?vR+K|vdj9h z{%pWs{C)_?{L2xk=!%@LbH%S`m&#QVXI08%0S+-S9xN_yzC%({J+?J< zszX}Z6=B=97>CTvI&Ay)aF&%-yLNWAZta|$%-XrRUyczgi{pSnK`U5tvc8a#vYKt( z8p%>q9fh>?B$knp$}%%G(Vp{kSi9E8A!J>G!}|5J&<6`~2n(wu$YdcbA|je?+%#T5 z|M=fAlF(zz{v0UoMmRF{+i$6b( ztmPyhN7i-v`^S+hDr0O6eK_`ibUaxJ{Y*!;Wy=YckkF1LCU$^-?3<|ny0X-)AuK!l z5zEOL#&UBNJtyNa6*y<1*T$63yJWDS!a(MM9tX4=$3da4RWt^6_p?-RL z72}KySH0|PH;3F@s;8UkFI_6p_x7Hyw`|$^hOm_|jIE%)UCB~X8nU$QRZ&NeSJ|Yrq$;Z{PW~W?uIF+%~O-)t7_{6#@Zth#Fcz7JDvc&Uz z6|ZFvtN8dS>H7O?>MmbiQ8ys4mhOs`rn;+EHPv0cS_Qv@xCh+6GB%%R4m)hRN_x7F zMrM{8%IPYnq*PPhy0tsT>uV{erS-*_eQo88jQYx%nT?dUZyza+-_zKrV*Fj1Ra6QM zt)dhb_W3wG<|61OCzr)LpJAD>6a9VT@){V&X`ve$R!`Wl!AUnfe6RqUCEiz6w54La zvlwG{|HEVT;d61QW7$++IWo5p54JAVk)@&jRzaV_&EJD9 zU$v60iFRZ$$kW2uqMOu%xvzI*p`p%fLwHxVabqt8YZ%00w~S$l+dNqMc7L{G#|oAs z9wV5!c|W2<&2Yz!@5yQ-F z$q?q{HHP^Fda$5){LYETo50*WJ(yRxBMcWFEDL$c7<+VE>Bv?kc(6pVOf+*_>d3q! zJlMt^jx1X&^AmGh?ZMV0IkM!P%J^;CA-K5>SCL9{1^0D>Ro1URB!q?*3SnXAP`1!pT z{QVya%a`910s>|Ufihp5Z>+E}X1GdhY_1T8`$_3k z&o4&b-#@?l^5tpz0RfBjo;-0mb0sd&T{qNa)U{N5q-Tq(L708}Y z6IO`;SQE&C5QuXiy98M!YKwM>I;^f}mrz(B>Z;Zc&z&=*m&X5mFg9V&*ha!~AL8PJV zkeG(D!+czq^1kQq2s?^$$AIIk0O<*g2peNem_}CRqpI@pRQXscjTB$PSn3s4B#szg z#R%%>qsCu;`v2|MFuDKxSLzB}FQvbIWoSfQ@!y-G9pM(YB+xkbU3QPj$BrMdUyl|m z_WL{d4aTAW>{f!2?EfGBXf*x<`v}_(2Ev8*+`7{VquQMjCXmLwyD?>G#Xtf93u1?RS^| zr~lvbuHXL&etmue{>x|d`MH02ew~GZIKM%{U}1Yp)f6pr!nL6`!8iZ@JW{lo&tr8^b(c|v*2Kt-r>v7_4(^% z*vkj-75oH$VLA2)WdV2{2&@o-gq7e>wn|w2%lmwO)}LM}zW*QNHKp#AAKUYVEzBNMM{iFHf0Y6GEHXu}voy6lV@(*pEyu|vh1ynl|i@Y4!vBW zYIm6ZVCq1VyF>EB2ZoJx6gt|(=h$gk1&!+`dF!e)KI&MP6758v6WPA8+2OCYxNR~` zIr1vFdgEt@R-IWPBsIBS*UECdUE|7vLC_J0{IPD&x`unzjxe-IYM`?zC2~#J?wmK9 z)dzUhlQy&sZZ!UC_j#`_NH&k(aL}jaWTRCc3ql5T+ZXG0Vce_3&mKM9qg>YL<3o!Z z+oE3dXc%JE<3Ra4C$z6vRvvHKA>~BBkl{CSy3K7qt9hr8F(VS!_Zs$dmGZM?C-3ZC zvoq(J;ra1i!@DN$48Gu`dp^);-fBxd+oe-oehNIV-@>J3Yh%y-Pb0mrOJ?6L(BGo9 zKX=;W>aShL)ni^UU0+uAIq|B~^q@&CkVVsIS(Jlh!?5XH|Lh>g>HIpneDixE{i5rb}8$6u>Z=BXRVK(?O7!*O>gaG*?Gyx_lur& z?p?H1HQ~;R7Y$p#zMyq)Ox33$-FpO0tDAYR)8PKW?QUi@-qUhml{t6sPrkjSPmjS3 zyJ+l4=(=uvpzpyEZC{SpaC!gkwEp`op2`W~ElymG{Q2gNQ04U*lJGL`toxT;Qn&V; zbH}TlYM0%-OV!q0F82&Kd)=e_qtvCEZ_8aB7wkCy{<$)DbzC|f*}rE)w^P?E?X3{v ztaWX`vEz%1)a`O>>t|#ZoQxc{f58ERyS3U~I{oC;<-sloRPWSa%g;;4R9V+b<)|PHRouQFPi$|)SU_y z!uw42mh2op+4*K#m+l|SPW6inX}%${_wBmt^gR0bE(q^gnJKA-_Rv^6rf0XU5Bt5# ztQ-}x#P?&sv)bKTwYb$d>P7SRof><%`?_3yZ8mm)xb};(cKZfCNvKg+zwZS5GOE*d zyyc~r>yI38 zX2Y4F_gilF-Fm=itdYeXr}-aSw7N6CamG78&*Y|KbUxk+w;h}qxx0qV>OIdJ&6;&@ ziu(J#H>clvU{SK|kxSyc3;iT@7f-rSp}dv-t(8-QF6D2YZtx;tbZm{clYi>5s!h2w zhV7<}&kItmsGp;I)coShC$~uY#iF$?A@!u%N2p)X*oW| zBU?>a;Vzq^wm+hvdw9fSzmkcg8;$fx7?E6aZJ1xjMd^KqZM-t#%I^F3ntrf7_Hks7 z$j0|>q@SodyWEDVC#PI+uH7_a3eUnig0Ol|Nd!x zr`x9_n0shOiDMlNYLBtZ9Bti1Rei1VcG;q6 zmmW$ng`v9db}y>tz@i&=OK#Di&r`?nsU@#&WVPR!dArZq0X6zPn>tQ!)v5E9T^&Lb ze7f1`xi3GGxyP|n#+9Hcy|WC~ZppLmxi4;udO-H!=GxxLL#AitPVBYK@#)Xuw_2Kq zR~|95?ok1t0dn(2gAlLZV{^|vF@ImQ^O_NgjGyg@7H$HfHaGzqYsT9 zrF^4V#8G?$@q%#w&b?sW^Vo98``DLZpSve8wRK;`FEZB z{`tbeNvywAqvA)nToW z*uVVR-c8pIJ5o)xRZ_*RY3cK>PIT?~B+k{o#pTrp4?9~AK?ucjnM%X0wp^&GcejI2 zn`1qUw`WK9XfY+isa~bHjl+!({xo9ruG3RxE3=P{{}|Nm?!;I(OZ$0s`;V3ewAAZA z@bAdlqH9JsU)ob9%L-z)?jK5&L{!+n&Susm1AM!}AKg6NO%ULq}#ttqU1 zuS0UlmPPGObsqI%eel(qhl~gHjh^T@Xzn>ZORsBZ3ft+19k~cf92AQPOSXDRkCx+Y3iFl)M0ua}t`W0-gfx2K>`?zCyOqXa z-R#Qky}NhemHlTeJ_r|1FKn*tHc2^Hv-a3mMrwZQ4K(H*i8xd6 zt;G^FuEan{{0qd*-ONj$`4WnnzNLYc8-o7e9D-w2p^LlUgxl(`wup{BCE> z;;{poJAT~w=4V%f@r45qCpXxBdUR5P4FHG}rJsNxPe7Cwi)%)K%qq1U@ zak+@%%}F;iUmw0#H?U5)*<@L(v77xct&urHYBYXQV7q8d^!BX9 zx0h)vx6x>wm0D8$$%Mihvl#@KVux9(IrsoJ6U%q5*X-ZmZHNGqo3dJB(g zV=^PX{EGwb8G8?%TlJPvpYX$tl`rcqx>#KIWX07#7j<*@z1eV+#$k<_9rGI33$tt= zW&PSSM*n{BtB?krwI4j4m6y<>ZPhV1W?x%qy=-EbZF-{m+$8G(7gUNS9BXj)$$)dl zN;}t&NWEHb{#A>_dfOMS-r#VjPQ9^T-{_vE|i-q9yN+4DfS_-ZJ8iiro@f+@{FFd$%{g z>hNabl{W7$Pgq)e!G@daU8mLEl@`^%)zfm$J2L}cgcw?{ZP;qm>b}ndkLa9uZ5$s_ zu9xx!tLlvh9&wn%mTXzobbW?KlgV$EXq}q2Gw_ARz1MSHS54DUbvMeGI4=5B(=7)F zc>jDg_`}?7-kB5M-%#nU?Y?Tb&}_S|#@t7?y+>8btv@e1$2jIvLUMY~u){|y%xgX};C7j&&cYDG{(DUhWTr2FFn0fz zI`19J1=V{xa<0^;e?m^Z`2NE7N1@q^T1~&ZIp9_;+s(D-&OG5+{<_fzY0rCJxuhLC$Z){y z@TNM0*9V`uJ8I#KX$KnL3ft8v&LeBhsR^<|?WOfL-f~>2d#)r~Y5MR9bwiFm^j1=~ zHK}g?Q=OgnEy@fkGt72v+Z#Qu-7VRr?S0Z_@~PMBT^o4Lv>dGTXwufm{FY~>Ehj|x zo&Kan`5DdT7?mBiLZyG!eAhc&@~pPj-BalRFIzp<~&#(+x(cjmhs*E8yPP;F9ihxB*bpX%o--FkGXKzq|9*Ri)2 z>z_^w8*y*R&y()NMCkT=?f$-%+eW8OBhR$etkz<9T=#9hdiAR5|!W@anlU&m`v;ygWF&fn$@=FLxVNXq3I)t6g@Q*X|A{Cm%=|eXZ3#hcdU9 zJFii#o_N#LcUa++*>?xEZlSJWmo#;9%>w5+`jsy9JN01pqJ*CW*) zG*Y|?B^!?&%v zT6S$%xa1To6Lp|!QK5Qp>hWezdux_CVO!`pXlU{Nc~{@+w@oNNMLX|6?$Ac_m1A}+ zTi7eAqV3v{aot9|`+3>c`weURdu!}z-Q{9*Z=D5xdO>xy`@gO+M`@IETdiFwse=YB z&!`pKa`?-gRYrwA-n7Gb{M0ArW(U=0JwKBWw$y4)pvs02*9)tI_vu7!@|ju1asP~U zHkMO#>^n{BQ4pN4blly-<}vgA?VzoH^*mPm}V3;XJd;o2M*{L$Ge9t@_g~cUuU9eN4HM_iSW2b`XwTo`e?wnjXd{Tt-17DSdRzF!-)?9g`cta=6R?i$G?>*0| ze{TA8SyGF+mg`b)R*0Is_U5n=qq|xeTtD0)ukFR$8c&sb4!$Sr{%WtGYMX`ELaHZS z+LKuXPas zFFo#h>GFNc+a2l{FKy;ma{HF9_m0P>p6@!w^4milK-9zE8} z*y`A=X}#1>ujrZL?tiam?!9W!qjt|$-_Ux>rAy8oyn4+YIO2o<@bz!(ezs{nrgrTY ze)}hBEE+L7bW!-|>&+fEzn!$%dB>TcoQ!K1uEcLJII(Nn)A5J8S~jdcpnLa-8~w`9 znCY*1V#R{9s}C)1(PP1p3n^aHUzLomn6u}EQ`YEpW2?DttD7?Q^iQ4h5;thRcWlyY z)YThREh_h|v!#8-9sBxv?9;sNmNWZhT)^VTn;T3EdFOI9IdssG_AzbN-$<@CRdeJV zn?p5aJKv35vVX!yvv|$5gKs*-xr`ZT^ZeQBHJ$D*HuiCN*`X>X>8>&g4+%Oo`{3&# zD_@=)-ED7d4ab0u$}ghtYv*>`v#GG#oi)a~Zbfrn)HOC7(EQG};m&Ls%CDDa(Lz&Z^UJuIHe-zdTBu|P zCXjXk_u{%gco5gazyvBY3Ot(Y$zWHmXM&|%BW5whEf&km!27t~4<^uYj)DoK3&3x= zeg|%kB}A0p5!{(;7jSQ``+^BnrayQP*F(YHT>F6ixef#;bG;S3jq6NsF4uWr0v&TV zcpujXz^A!B3)aTsZYom|T!m{raDT4dzyVy#z%RId4SvtHP#HdGb>+vI0$$9u6ugdW z8Tc;O55cdw#v*E_1JF4bfGxPT2Y2IoD0m{*lfkZByMa@=J_9DuaV~-hqz&~Ln*)$` z1IKV32PRN{GWZ48SkTRC0hI3op2W2)cm~&Q;CQZ+!3Vh}XU@8S_`cwtTt|Zml&@Ny zF$qAr9k>(M9$*>QiQpuzv%tk%V>%eC1JJ&m!CkrT4_?T%8`zucKyVhsQhm5Uas@ON4PEk7jk_Xe1YpC@O`eIf}eB!68w(q zsfG-(LgdF^3?|Tf1%gAlRx-j2Yk>0A!35Hp;7VLq0TTq|>w#->T^CFckY686AZ-jL zkZuIF;o25#$8|e!2d=w-2?ELw1$%Q%0TFKilz$KWkn5-5XIxXT#CiagX#ggWHUSez zn}f%2Jq1jld^hkKu4UjTu4BN7TqlFmxy}UVa-9dx=lTHn7}o{h(_EhgU*=lX9M=}0 z_ca1H1#A8}nZ8v6ot zoZ4V-u6@CWxGn&n;JOe@pz^1{=eT}Kj8#aKuMAe@S{v>=T9e)uxiR%5TmN$>4mh4}(j%#xi%r#g&(F1)t-ZOx9`uom(YvRjzA-36yUDHs-n!xGC4o!M0qt z1{0{fJ-7|mj^MUjJAqTUE(EuFFE8%`4&XWnyr1jG;1aG~v9NvyK*yg2e#f=ZN5pUd zD8CK3Ki8wdxm@oC@8|ju_&C=m!DqNW55CAX9qq67L2oZ09x*`Y>8A93@p3w10Y8=h z(HJ==u-_@ZFD?HM1L!zE>W|(P%l+p8wC@7257&O+Ag)(|S92W#g7{t})S*sRC4nV)+nAQ%s+4#qyzeK2(Nc`urzj z`Cu}t_`Vd==bseI=dbjMPjP1kzu|1fsY=;xWPBiU~wdmhcy5RjM6rfQQ@o+lafT?? z5am<6Ap+?yV-8W=A<9n%e^1OIiaSK*DfZBh#vG!!L$oi&9{Qe`Llk$2%2VtiMa&^3 z#2g|}z6w~I>xy6r*A$nCKxLTWr?^C{E_|s2l=@bI3}r+kl<8 zW^JLJc$u+Zk6q-77)H6j6UXS!`ue9BM|7U#^Z#4E{>k6J_*q2@J{G^}1FHQi(3ZVC;cmWhEfOIVQTX6y? zRsfZucmaQRoB)ayK=0KN{Ev+ja0PL&06Ncl;6_}V7YS?5EFOMv1DP?wWhj;wfi%U_B9L|l6G(Re6G;CACXl9hTi=SaMX|Q1Odl|T zG{xK^kRAXgkRAjkkRAdikf!)t6q}1Q#pfcB9s~Z-7+n;ni}s~hUCX%sBQd(JM9~Um zY>3filOflCCPtSFVs$0eQN-(_1OEdy`NVHJ5xM$y`n3|JKft&5l>g`V_Ah;`|G4%t z^EC^13N%Y}N_Aqg9H%#CAIx?;RW$cB_c0GJKkdX=b&J*(juu5u#ZJ%hipdUH9Jlz{ zqP}w{OFG#g%V0}$=TJ*K=eEvF*2P&>qABU&TuZV>vR)#SjB#eHiB(sto>o(xXE}S~ z6_XWN6gcJYjap^0e7C%ObP;;(P3O z>g%jwURhGkTwl`IyqTnixv`|Jxr?NWd4EX{^C6N!=Hn#8%_mFfd{&u9N`<|`zEAFR|YYgjk5w6pGJInjEQa3Rr>zUDuUY>;_TB@m zsjS-{KB9y}AOS*2?1&u;fk0>i0g+}M9UW!ty%!v@OXy7j5ouB)3Ifu5S8+r|1$D$; z&{0QG5qsDFS|>Z2;d|fv-uvD1efN3(n`dRM-^y-hm$ld4Nj3*f3e2)hO3nHSM~DUq z%|u1QI#IdsxM-&7D)V`!UgkcgQRV@rd(B^((iZPbITp#LdFExNXPIYRC*1zM1+n}r z7aP|LF7sWztyOKOSl_dG?jm(vWBt|US2J&>ei)~75G8#7^ZhQ#b@2ZdK%<}pbGVaD z{%7tx9RAOP;?LOE*mq=t{LeVS_{Te_lfMITyD0v?zYjUX-wF3dcTqyKdx(c6lqJto z{tn9Uc?%OuQI^P8UJH@0g|8U?6tD7F|L9fmyz3c*N)YL1OU0YWeJkMV(k7~p*jPMD z4ChinE5%{rzV_e8hzw#W2t+2x;1vmjjClnBk!^_W&Bv2wARWO>PQn&ovyKi~49Sot1$W9tk&eTS-nY<*`HQkHaATEGJ9b1!tAvPC2BKyYxdmalNrl;uMNjK z$wnv~C9)7Yih5dS+t>(QMDD_=q9wxhB5$FeXr*wIXsa+-Bo*!yH3%I@KH#Z$) zKF<1vji>cvn|an9HcPGF*(^5QXuiU9oB0OQAamL^!8Om?&Njj{)jZxb%bf3;=~`;- zY+GYJ*7msdWZOfg73PJeC(Tco-Y`FEdfB{-8Q((NY>lwBetmoS5n+>z* zVJ5WbYi40Fz|6)%Wae%$(#+Yy%4~{-o!N8?C$m`=bIrC|Y&J`<2rF>jO5K!V*!9@RaDQOQh>~ z)7j>h)(tj7>mxQ}tS{NvTc5L$S)14fSnJwux7M_cw(e&eZr#H+!Fq`8XH%ZVZPVB0 zpRB`dUt9azs@ufds@Uwd)wW5sbv2uBvBoUYV!2tM#Wb^Z-|LRUv8P){<6dP=Uo4A{WeO=PR)+b;4yAv z-4?lTcVFcm=)S>ym-{u>JFYEm&)jagy>WZs_Qh?M+X6Qedsll)`-%1r_P^LaaDC!x zV&`gSX*bc%!R{BkWo~QS=Gd>XUt+(}9`k?U`p$KZ-5R?kb{m=ex4QYd#o6cEr`ng> zAF@9JalU{T=L7Er14Y{HaZ7O9>z?bL>|W}g?q2KO)lJ<^)xEbn$9MmqgX^ zg+$Bolcc-jH#;@^D~@j*?>c^SeB!9?)YopXU4KVM#}STW9W5QFI$p8AW3TIE>eSoG z)@iWQ7^gV9RJ%Ej+Z~rV20N~I-0heojujuWOB3fqZ3nxZw9^!`#2+nGNAtv#?`8P- z0sjAx#dEt7@jH0`CpRs7fmmbo0I|+!p*X`f*S5s=thhnUxBujfb-gGaZ0{y^5{t!r zsC%_-z3pjR70b_JAN#Ij?u*;Rv}L6ICb5@zvAF-}x#A*=Z%%UacG8|}*$ge0>h_oY z&*I*r1H>kyqr|J6pmYemN5PA1z$jc*hrz2EVhl3o^rop`d`(lKGP%JCHO|0(BxkKHYyTLR;&%l`VVBgtgnlgr*g8Q*}^ zB$P}Gh!4~kXfTiokR^}l)!Nji(Gi+{oF?u|tt~ncybNBW?n}K4{d)b8+N-q(>A3KA=r!q2 z&}~$=*SM{nqNAcE)=t!I(`!(VW^dt)rJM!b>6DIR7=!0)|t&K(p#=; ztm)11)cwd>%#PJC(<;*PrtP)ot8LM^&T8jmX!3L#=`!`NT8nx1x>cNyx(_)vntgbl znt56y)w0#v)uwU2YQNR-(4DO}o93zaV4G>wYwqAWX(#IK(7&kPrf);P)y&|u>waZl z*LbTDq`8_~#a*ryp>3uUt8-g-HIJp|r^lo1=|Sq*+_z9hAB_l&$(lu+>)L~~?A83# z7qc7Li5gB?v$a<1MCdHmd#LwT&rE-snxFP$y(YaPjUH-S)Rwcu*hTOZ4csQJExaCj zgA5*OX6T7&Gmbrn$MxV&(8|^_*5>Ni>ldl9G|TjstL3rHxc79IYgB2taLlyo^m@=L z>WS>jnns-YoVOegtvW4FosT@0uBYC0y&!r5m!;mwU9A1q9Xd@qDm)e5avo3DSa-JWeBBJ)Y+V&S zw%%<$BYhkF6peoThfq7HJL{oZhS~(R2(>CT4|*}w!A9LfeX)9xdc8V}&0~*b+p`C0 zjMSK|u|p$Iqd}t#>eL9eVr$OVT&?M?nWA}5lgBaO7;~~YRnRlDxznJQK~PTv?R#7U zEhDY@T06ATv>LP;p>^7{K5B8b+1fVRWl-CP+I@7)bS6M;&3K-?CZ2(=5!BX6cbcvX z)Y(&aGSquD)cc{Xf!+kY)p}J>`>%RDeIxym@C*_9BMmAHiVYqZuvum-F>47whOa5; zVPFj3e*CWsUs-QiEHw`U4>eD<*=mc`R;zhIk9n(=sm?ZtR*O|jR4Y@PXi%k^rdF>u z!{DOYbu}Bcduk8W%mpemo32+iq6g6SFjB(QSF3xg zbLorfiRvlpY3i}++3FeUb?O@puB+cxf2jUa{iC`8dz*o;ff0KU+nC*lZN_d?ZBn&i zJHcO&!EE+?_G0#GcDR8zdkcHAh9CQ)Y6OhCY<32FuR#$z(V&i9#ja;xWM5`qR(;5B zXTM~>WnWiKHMp(H(=gEJp<$%4SYV@(WsqfXUB^SiL*t(6S%Vb5r^bAZhpOHhK^kEi z(HdzQ?W%3685(&8*&1~k^)Q0!H7>#!dZ=+*L7&X?|7xsM?^` zsK(;7Yv$=JX5m=u!5PUJ#A!8Pv79(!&SZ`!r_EqC$Ahz&!)7h#tmb%ec5t2>1aY{m zXwGYcSPqYs#>s=xTgUle5M}Vy;5Mf#zm4;fbC2_t!{zqj^0)?EBkmwB&1ZA%xlUXI z)->*9E{8AXdU1JtKHr-g1|!~&+k+LsP2nbTGq^t+lyQ6U>$!vYm$~=2Z@I(xY%Q*q zkZ-{^*0Ry+!?M>hVi~cfX?eozSghrxHHa0aWy8@Qrk)u}12MbzF2jSqJ!;{MoEr{%oBh z{&F2}n2+WB8h*6SF@B=X1%vslBAqgw<*X_lF}s0(hJV@M2K4uBowvHH!9cKhT%Hrn z;~DUJ@Qirp`F(hUcs4wHo-xmfHx2BMnCHQpz?;l#;osq3=Xl?H2HHZPA?#Vh00^XkABH1HaE7kPfH>%7~%AXYo?CGS1|D^Eo?jK$Th zQ~knM5k#<}SvFuJR_pH2RTD((#_HzjR_W>p78o?>*6TLuE;YE0mP61}Fi6i#&qmKs zV6V4a&s%Sco|j&bUYOoML9AXZD@D&(kjT2M*T8PqGZ9z|Qdns$1ATiz25YonB-j}^ zC=yK2&t}cmU#{<^zePWfHC_;*pRHe}U&Jb7Rq0O_RIz>$%oNNM+}5vSz107x|5cx5 zz%?*1SOMR9{?7+T$ikCkV@UWs;9G!NzkU0LD&(cWk^WLajhr6^ei;D-L*|u&|CRIO zf8!{0t)P1gq@3S-!0?r@zv-|rq|HDW7~TcG;|T=cH2+TU5i^B^!J5?36fly2VB}_i zEtz;f(pm#{>!kAlys?vR6JR6^!6eVkfOm9?=K~n&(pPy~A(sM1IxbJna9_Yk7%s{g zO>#yB0}kmFFBEVXiFb~~3kSTjQ@jYkNEjx{8Qc^FJ4d2xB)TZT zNEpt@8QdfV{sp7^QNKNakuWIAjRA~=p;^wTy?~MC5sW+*FcOA8Op8KoyaA*O=JwU0%Rto#K@P zM#6AI&Zr8&m7U_%0Iuz%I|3LtNFw$QnEpjPfq(LMe zazDUGqe)$m`vXQ&ju#9V$(Y1L9s(FiIbJAWq-s(I@-V>RK!b@6`A)z{l|+X;8Zgp8 zqC=hx7)hU$i#!D|5|8MRkLfC>pXJRAx7xyQ+d#J-NO?|s1K!w4w-xYqAU~28xes6@ z48O@46$BUw!yq}MLI8&m-9Vz-2^a~3gn5NEA8;hmIS}1$!25~LkmwEoKHN!{0~qN# zX&2z(|cmhx`g)r1wOJ{3_t*K+1jD0T?Np#6$i9 zFj4{0A%6)NNsZJO`76LkJ4rm`uK^=r_?_tA07jA#jQkzo_e{JWw(|pEBn%%&+>d}i zb&B@|@HY}qv8GVn;6Ka(VVERmlr~@!qBA5qA>fHXtt5ZslK{^FQhwgKfPI0K+bRt3 zkxsg!fRQk0$r*JFa8svv&47_!kaCfq2W+B>iGH+!Dd1_04)y~izj=UzfX-Ir}#baQ4M)IeEp&gZ3?8U!{66FXU^fE>^OPc4#4=ETMUY^ ztN87$@>s*)eIiBwCHGa3`vOMVLv+af03#(49ddub0YE84hddB4QZmsY4+4yIkm!&H z14g<*bjb1dr%3go@_Hjz{1z28lGpM&Dt?oytlQih_H01i!sKa@ZwHL@5dUQ(1mqEb zk*r8OhWCN}0+4e5?gNZ;g7hWw6u?Lr9Pi2NA_M%5(ft@3R9~2XK#F!pP6O5g!k}n> zZNT`OSmk&Ez`Z-gGXy-iQ@kO7O*+LB0=DcF&kC?Zr+5;;_?uhhauvV5Rj%Jp5C=&) z-W0${%DSn5k(71#+g&7Oo#J=A%4H~i&#SDP1?iBKb@=;UBxT)Pz)OIX%UB9{O{aKk z0j~q{kSAxj7vK#*(})haH{gvx3yBW-CcvA4q(p~&3*fClYl#l|Ho)6~b`TwMDd1or z<@$vHjs(J>7za^+<2uEQ2b|g|o(%AzPVq7U=XZ)%0JyMIykfve>hhu)UIDlg2!o<7 zRe-CBu8fR*{QWc%hId3)2N>zbpWnWr9{F*=NXliL0(=GtgJSK%-&!MKP~>+W@C6{{ zwz>-V8i}W<-*vz@h%SlLr4{g9Amy|V03#`{gO30|2Ew4ouMO}MqKhK=;qSbWFeuiy zSAda}pY1*14s}@Jb+M+rA1g5{COE?rOkD7`l=&)&NGraF@he z3m6H*J)-jhyq?khc(x6Iy*uf40QO;Y;AfJwQow(9il_MPy>guuzrk15Q6uEP#g~ye zh#Y^9kEEM03%_z>M2hf1$a-Vcrk#HzK=bK9}76EQ@m`zNEm8Jeun`gVJIZJ z9Kc8zN{KEPFcO9%M3)B`34DTZ+DW`Zz(^P_6I~HtBn(f8t{5;91{v|0O8_5X zbU(&bJ>cV=biV^e!l0OQCjcX1s3m1I07k-aiuA`xz<4Ksa{s;o{I-*B3jBT?Y3^rv zUm(Zdl^+2TE|u$$_k$U0!^~PZPr_^=I0E(rQugJkZtyz}APhs8SKxpr0$n9`1G(aN z$jb4qLYz;X;wgTUit!})0^z78{Pqm!D9H~w{s!;}5C%i$72*ND1EgF($!hqW1`q~A z<`teDun&-OJnAw0KQ|x@MkJmQVEnDiZBnj+led2`Fv{*gn0gZMWFjl}45(M^6;M{} z5l~j_4N(5yepk>e*r&_^!e?0qd>xVhC+-l^=gZ5*JA}-MjCTl4A@V=FL&yu>Ur*xT zeL{Z_x$}KOw}`$K_+uh#2;e{a0^##&0q;)a&UX&|t9ynFyMu24g!u@8+Y;FY_e?(SOA~Mn2$Q{ZHLv)Cy&N1Hv}%e5a9#P_F;?+-Z~mah2~h`k%bVNcrxfHQ-<3 zv-}2pJCX4oqZdT}ue`fxaHhPh;lPowT;)58q@X)N^yh(JBXTS7e|BHdh%9+Nct_C` zA}ilfBn913qR0D*t`QmUC{n(QNSsaT1AIJ@Cjp;9|g|CeABGAG;6d`D3$=#elE1$PYf zCHD-C0Iqyr(H5eY0#7Eg4ES*(p90=YCapB=mw>Q+UITwaWJZQs;8Te_7q}OZ zrNDO+nSy?KiF>>*L6I52*IP!}6y)ED{xtBjL~a89@3{lXk|!_M9=Ics z|Fd@>wUK-}fPWw|r3>Q_2%k|ExF(UcfNK+37x)k&8v_>-*$lXd$QHn@iEInpnaHld z-H1FE_;?~K-DiaVAjfjoogrN9+;EFA^; zG|^N1ANMWw26-3|<|71dO=Jmh<$IWH;EV<1;2F$gB7XzU>Mqyg9Zdh8dzdUpd`sX~ zM79M!n#hxY&meN=JDIK!{dM5VcQV~4dc2Rx9ti8{3LFV#yn`u$$awG4zvu2HaW8pV zE8vQ|mnMNcgXop-VTuObA)?O$UPff9H?$8B)`14DPGk+>Vj|lBN5VLxfZGw-0k|uX zCjp;9Z-}!VDbf<~_Jn&~k?g0Lp$kYmGb0AEsd>7Ot z(9IzF1;95Fc{}h(BI9`?o*gpvTmy3)2<3^ugNYmo{GZ(mb)UrP0RDo=)Y|{ucSI%E zbfHp!m^NwdLX7}ISqR*P$crvOe*vL>6>u*iZw2m03!TK40!a>0Obxi2-nPB8!1fAo3*OtBJf8cnFchfM*gp8+bjDe+Pbs$W6e%5t+IU z^92aYwFSPC$Qytop*{dO63Y94rxJNT@O&aucmDAmS5zz5Mj%W}0~ZjvC-8nm?hkwb zkp}@cCbIJVSdpMZ!hDqP$`alMTMC4F32=8J(PI%FAi0;t1R_4&RxON_)5Z`qGr2pG8-H|M6V|0v2@*4CJ&11<_P+FsC&ngr-76 zIjvz~G!-7sY2CS#rgrV(v_?eGR3zk~fqCS+s}vM$?^;+mL#3!_nM!f-_^u@-d%KpF z*4`~E+pJPv9;#ANK~t3wAMV^0Nr88R?;1)YRqsZnCU=wN(^LWISXAI$Y2+Bys8|UV z7f(|O2?8n+>kRL)v7DeT-GYN@DkMZeg@#F}@SOr`SEPiBilRlkYXx*&9W6QnaWyCb zEtS$DUq1ou?@x;Y0tGZYk0>};LWM-qbX2y4I-Ez-`6Uvn6ykTKXtp$%)(lCY*@=L; zSVty*T65PfnjH~OYbNZY*-6>7=HVQgom)U_78cU%q9R(exP)exmeZOQl{C8w(sqM8 zg{A4VD5HR;3kxMw5$M!W7fQ3kvT4!bVwx@~6;NfB0=lY7LRHt$qFSsw#Dlh^rF&^n zYywRuCeosP2Wa}>L0Xi4h^8|$X;D_Lgv!eo&;@l83ZGLGKI@dG(rj54t(l!e)492{ zW?ml6&d2%{(d=S;zEYZ9RzYi4lKQDK&kF4jO^f#Im(XcxwCDijMdLI3(L!i1Dxi`U zRaMc#>S|h4Q$tg=wX_iHr-gB(w9wa2Liq>M!k`cdj15{Cwv)EqwM#-pMAFa~5^8rW zEsTqkQ1R(Bm60!?3h+50Jx7rq`y_y-0(VMaEYVa1rrAwX(U}q|D~qPGD*YP+KLt?CefngWWo36XWBhzmMSy1 zcg|A%J`Sq{RCTrLU8bMmIlw=lcpNj4K!~q&|#}DR)e3 zMXh|yGtVrA@d|0c{!!8#0hOCaQ~6BZWGp8NAb$y!teg*gEPc3urV1-0j6G-CMlmOG z&g`LWV{qPJ8XPOdv~5X=fGRDMQ00&}*g{Im#FJ1l7$-+Uf!%_!z_bs0C#wyHJp?s{u_z0mzp}T3@XtZT}1XN5c4f9k$#qXo3BxanDKFN|$*=UE* zt}u1L@eXYrBv1(s7EmE!M@8X^ewDYI3eGJRidK=5=VbaxJ}y;)(H3XXD%rS>pf)dva)DZV@di#_{!ieN`?S#~F;j44OK0 zNI+%E>n$p%6^In;F|-Y=8}MvUH|T$n)SnhIb{Xws2`z**N>uh^y%FL#hH)kQZV&uv zD<*!pgxbm20kE0OS_<};jC+VLUnBfz%3tve>9jE85G~5gqOG#CY1_kxX;BW2HF^FN zvreNelE)Fk8Y+UZD1K>7!s`2a0Eh@ z+}bz}@!JiX>|3NY94CDc0MI^qlIRDM|)U(m9KwQQyWk{$)Aa}+0!;cMN)-**v#XGnqCB{QbOH;UI=*ueN z?Q zZ6fm!-e=bCL!i&w(3+3WfNfMq+oCVVv@zOkv}suXLo~!Ad86%9viXb+l&|kpNQ6Z0 z2Pka5!frsGOuf-2llEfTCR#%6f%lj;MO%e7I^_*F73ZKLO_9DxW3jPL+?KiOR8LAr?xZOD@XnU)C zkI}mod|Qg~2TOXlf{lW8Tivjt;@E2NrI~evv7>UI1^r=LX3rExi^9WcYNx_}GWG@R z;$hl02iH36OPrhXx~WJD=`M^5ZA3;;Gf}h zWB=nCgZ?J^byYO@JYcWTA11b%X%pO!;Jj2G=eQr*O$%Y|wA!-=*5VWal}g&0vC-&< z;haa?udsKOw6F^I1Y|9SF>fW6g71lIX9VmAu|A4*2G{8QV@mcG z>m4Sb!inDjpG|;|i#B2W801~4@#Cd2oUwcNKARZJ=toSI>qpFz2JD&^7sVfIIiod(;Jg#IwtTA75ghuyIK&?ezN2+M+en09C4 z$^EVGK0MAUPiyCuR8hqkzNaUEiQE{B`_|$>nGF+RO_h7zYK9~pNBM%HODCdNu zef(QGv=6xNAoXUR57$9rPni1PGvoDgB^l=1avI=#Par|WjJ5z1WY+herSiQ1vJ<>=3EBWDq4zT za<_nvhCINA$j_Isy_r1$%qg^4c(#OX6+_c|`4WU{|!Fy>JqVD?+!gUH(>psY|6a+jl>$3I0C&zyVrxP~NY!VvXv`w55QS{jlS-6vqns z-#G#}b7K4>x`3Q@G3|@>&!Fi;^1RpucurPKvvDnh_u1ex&~U~f3W^f2ckdBs#>5Ed zy=dd%eGM!xpJsy%hx0QyV=JaLOK?n-(`-0%(1bGwHk>(Vg3V{+Tw}%&K7%i<3Fkv> z@KNc&5P>H6sO+#XfqFRF1!la+?Kg}gAw0AEd>GJoh+tm{YdFk(v=O@nRJ7u( zhxFUu_87R2!?h9pZ#)ZO&dgvhfMb^UBaGefl~8^-e>3513+D^5&E&j|^2fcQ+Ex z+BRFUzgAw)a6Kk{#`s0Pv@Q5>A~-V=GGhwc3D-AlC&k$sJ{O)rVY&MyR2uX*<1{_P}7* z(T?t;MM>BWo$H}EPecETq+`YjrenqdoDDM1g?=Bb8|Y6$9?aeY=c8gA;T{(Kpi-ViL~(`$?T-6?^eu2qGW%ubyaL87oE1WR<~bE(Kye1B824mt zVD=PvrVsJKmQqsmZP4bBH5l^1`G@P9km)x(@4&I5crGR#W54BV1)c|kju}%?v~V}> zhtaks(4xeBv=DqkJhOnaMF9mii~<`bJa|w-r9&E~U2v}B*{Ix)g|jH|IpzH=-yhe> z&t;i?ZV+wzeU9O03V4o<`yo6}g8UdiBa{|}G3VQGW)e@^GM`c4J_-HaGzo=g=}a4w z_GZ#3<^YZn>=&G~IEMe;&v5<&{fz#-V(cpR3+RVJzD$2H>kyo?p>0L~FN+psE6!!n zPgnA(|27Y?&#@iQ_r~&>eq($j@aGvHiTUgV(%|`wZ2)ry{rxi&#a;u>zsdd>?HTDC z=Ij0!~i{Ok&7#mC5!WonNtW@D^!1IuGnv!AP;JikEi?kcF?&O1Q zAm9EB0pR=ab7ZU&^CeX#r=UIPAu;I zK=*y@!W_b}OwQk6{E3+Jb)1{zOp38L%;#W`H~J`ePRp#lv}ix^W0^HbzK)7Q;=xbE zIP$S1I)F9~_x0H3P!DFTF!loN3r&^R%J(9S9_K!O&c=M^Bp-8(9{0L9$8dcm^9uAd z^BGi-fCif^Vm^z7{K0Os!7hjb!e|Y~r$S#B=U=jbR(ux4*!}_mjc0x^j%n%lvukKG zsetw+b&}6*n5)ERWac)r|CR4knSB`g(b%RqZ@-@-GWk%xIB%i^)NV3nn0|^JTF>Zk zo-*Y_Ts-#yS&RDVlvKL^l&|lLQ+|Gqr~UnRpAHDPdpa=Cv@s~iw=p>QLZkdFw%?hk zD91Cq(SBjsXzL(7}Ytf)86dHh@jFbC%$?nUz*`xX?OhVzwW@EPZ3*kAqBx1?lV-_p``eap&x`<9pQ z?psl@zi%auDM-iIm1McE!^q#qgwo!VDGxA?Z5)q^bTZsy8$$o}yCV&?hzJXt*BYKQ zH6l5A|Gkv74G{+pIR1I?Fvlk+$MJq{{@#d!g8lak%St24E9X6^s?v|FuJ(OU1L?J? z(mhgXmlwW4Eqj8)=3NgDKlWm0?9`aJxPGtV4{V4zn6dx$q3o8J!-xC5$;o*Wlbh@K zCNE!qZ$Y8&o1!|2A=(C}?)dy5Gkboiq^qwl`1YxiuGoKYj?xwPUhrL8=KBpQ$jLmW z{$ZGMf9|RxaVTskf?CMtEWaD?eU_|Qmf#0v)}S=n`9ooIrNBw z?S9tKYzH0B%eK*%r@U@gJ2BwkjK-55?-woVxwvHdUiY^nI2|>cXL%p7PxHB(S9Np! zX6@m_ufCqLrYY=Bg6HF9kH&`W>#4RmM)g?PFxl1J0rzgN^tSwGDdji{}im>N4X@Ht)Nr~A-C zx@mZBf7hDg#lymHo1V?@H|dP+IPaXPLc>o6;dV!Q8V{)RxU+}9V$`F`o4K6)H1ph5 zy{~M#6*zYOqbb*x=01?@T<8_FB3rb^Zr!EedO_cx^1pDGvi4GEcJ4Zz_44-Ofjw(^ zDsELrzdY}-z4Xi2x$lH!W4o;SE&l6X@AQBXv#l&@52QGT?6%)wd#NeCazl_`&N$ZO zHjAcN9-&Und(>ktJb6BPebHUnmZrU-zV9_YoOt*|PrGjq_wG)gp6q`+VdKWuK|L;I z%-xsD`?$EV#Axc?_yWVw^HzSYaTU~;0*k4$=BzH6>bIb9=j`={DZTx(&EJLgdosV~ zmWenj^ThrBEnPM|eVo2^SWETj65hMj;(`56i;7%F*e;ryU9cjN9k6;?_0g1s_n~!d zmy%e=I0G9;x2RMgvmone}8sf$5XX6JtKx_{~VD& zXJUNHgqr3y49-rsX3;DLs_r0-Pj9iS2Z>yp5%XBdzdb4 zxqh~Kxcc@@zLm*#<1eR2oS^5vsUA4tNyi>PmyW;*FW<5&UK;238}!Vo|MZoI?&g(n z7U#d|k-cV!+VIt`7sfw}I+eQX+N8!Yn*(kfJnJVLQd*_z==0&>OL24{Fd|h=biI*7j7(6hkpsuoSn)au>5)D zo8*?>JG*Y+`0qX0JJ)%|koBr#2d;6xc>d2VAIzSzM}JuI=Y)+Xmiy0ddb-cy(78SD z9FvS%yvGdq)a6mVmd>$F8zzrl5q4?Xv&|}Lud=c?tq9d+`(JjRX1>#LO#GCVX$>pl z&-T~6yu$JM?rC+IVNc70>W&PLJky}FLj3eu*5y}bdRN|UwRY(BL?x{_X3E(Dhihlw zTvwa;XS#n_Yvs~!Ns(HT;tQvZW=0Oko&IQl-}*{*TDyPU-h^x7m6p514w((nWM4Ww z;?uWCXV<{el|MO{MQWZl`0(Ldv3|nCdw)hR@ws-$F3r7M&}jr%5EeKb|!8G2MI1Yv78-Z5Bh^CV%eb^W1)WSaZ87wP>{2^~JXL zXCIE}mFu@$O=5qkE=uB&ES^@h;Og$QZjUmYH+n9eV03T8MEhXz8P&A&`ugis?qz#U z`ID2?)jqh<`BzVlf8tcrAv1saqdq9+D|_?wN4upheG;zm0=zP<>&C~eo?q4)w)k5l zKRuFnYD7Of_NPDNM@YV{pVgG0kz8ZG_~Et)pI#w8OFv4b6Mlbk>|5VnUa9?;r>a=* zH=JL(xaiy90~3OCoLxr;pU$kBPo;i)G1e&Sihg&!$DguF?B*VK*tn+jbVhDu&bs73 z`i-|L(VBY3Xq$FIF~8||x8-wP_D?b1F>K$@KC)Tl zB~PUvn#8ksde1((m-mqTB^`XX+%Mp@!Hmq!y&hT)pB`oV}185|!xD=hNl8X3gj3%x&>uO-+=wznnSfoX`GN+nIrV+}e)1Wt+TS zbM(&Xs~*J}gRT#FaXrTNMR>t4pCfwDJwKf;zf9Ym@cyN#Y}RJpD8JQ>3pK~?^#1vo z?|@Q1|4f?tm+j57Ok%Q@rmaf5b#wcfaoc8%wy^#1hl+-}hW^j9zUHs$;nC&9*5B`D zJQ%d==Z`5p)%PbkmL*ywYNxI(cwEsif9&b57Z-Fne)Lkq&RzqSyzkvS%W1*w*3Ivo zKVRAHE!lV9=?(9*{)~9>v`^#3G1~RXdy4p5e_dn$`>-u{M_0zYbV_P&AD*Ck$n)2y zD;r-W#ZB?|H{SHEVUnrWV7gWqP&;Jd0E=ly-XE-;VCwO7)Ptu9b>h2wH}(t`UznYz z>!KCousUGI)~WY~1O&cKi0A88Hiteix!%@8^kC3$M|a%%<*$C;&u5*w*x@iS-py)F zTWnO;locDcs6EqKQ0K|gNUtf08PdR;;r{54Ppe*>9N+Zh?#ye|hp&uSx3Kp9+oX=U zqFu$!*|Fm{@2Y*8Z2tRjYiWVZf9hx1m5!%NPB^~V=qkJE>{Xildyv8Fxjo%KWDma| z+R|inV#APLrq=WKmA6>V$_e*dA>L!QVEaiMzkz20f4dTA+Epd#+pN5rh3np>{E->- z`HR1bzt5X%Pin`P2GLV8w|*ILe8C;B^NUC9pP$*dm9HtY=^ z{?-v#cWv^fC!AeV4CWmS?;E{x@W`ko(-!}<_R+7K&y`KNao}pND(dYWGnaMOR!9#H zxpy9*%|WtrMJy@roYB0F?fGAh`e&ZZJ^>ODBZu(O{MYr2l=IFPSym;-=Yy1fP zTRk_NcojZERfnH2Yk_Q&=cV}<%R1UOxwOnYV!rK^!Me~-LHBcv`SEP?=d$s3c@HgS zUE=0!;id*j_p0wdJ7cc@Z=t+jx?gn3Y^@r5+F`BL!3)E#11{&suYE*Vmp7wRLE? zc<0iofT-z{sdd^*U#mB7JjrK&N-t?&EZL>!x9)8H)XLp!|@&*4#I-e|40-b-Seh+wF9n8@!65ntr(p&3|?8sWVOM@^1d(J5S7? z)=}3ug^hbp53FuVU9rdMP`hN}PqXYk**;%ZAM8@W`^i}6KzfPhNA`+t#Y3k*JnU7~ z7Wh|(>&=Jt_q2Mvi=3vlY|)Z_&t~kAt-rCS^>y*^DaY-PEn6zA2$^)TLh!QnldjE4 zfs~{+OJ=^Tc@y3rA_rp+cz)hvUtv%$HRYP z)dp?|9@FKEZcsPN^8QvjZo~hY{5aO}bNrzb-O`5#>3hDD9Xjy&CtIHjpN#&xv3`7f z;_q$`?Q{d5`&B(@y?B1E{joRK=WwPkK71f^P=cE3hh3({7s|EU9b(T;UhCuTvhl^2 zz6}pz9yeEi6JNj)05;_=Azg}AlMO<<9+eLcnL88f_b;Czaf3{t={5PK& z;Y*HY3~RsH>z9%V2kSGR^UEbxZZ~3d@2{LUfBdWHC%5iTa_PaV;`cuFp~|pe<6`|j z53a~!AC2VozWJM86MODCv*$qrX78?=Hb6Hz!Ix7Z{g$1XTUxqo<+HfA-|lKZoO`5& z*S-Ir#}>Tq^U+~fV`Ng?iNnv|>?+z;nDIVRSX=D>r7U*E`oh~cW}Saqye&s|zh>b! zm-Dw)WZ5`v={UFIKKE@MXLwpz!<5q(<5wOFN{%ibsZ;KeTb{X9?a0Y>kDNEo-O{o! z`Kp(D?!qg*Ty?@dwyjj1Ge5X_-&H%#{rHv zXR?Fmb_*6ATro6c@!4L!?*=s&+^kn?%p7EHEd91%e`$xxtv$t|pC=2Cna}-JbNXJ+ z=u4XnbE=nYd*Nv1F#I!TTz0_Nn6WKKpNWV1AKI6!bLY~c*_%_?rda{67VK6z(PH57 zt(5OFe)}JbI%+INza29n;>d-jv6Ds~bTEkR(w1=f?mCm8`q}rbcQx<()hm<`Zbgz13K-<~h za>fjMaHHtJ;ezXJ$?y-SPKRsQt~ou?WkuepXlF~lqM&z_En5FeiN z`1in&y)#lOuj`dO5vZKGp|fwwhA;0_N+h z+GMqD2b>dHZj6|wDLJ@yP5PdI5f2-E0w-6l(3*5^+?j}q2NkKccQOtga?w3V8SW?= z)c25DZru4(Lo|0TrY=R8Y+8S6z}eY;AI-E(q*SPv?X;+mBYfVbRerl@Ba;l9*to)c z^M^hqXEKijyPwj2d#@(Q_e%Mo{a;UCc|Br#<28=>b-_ckiUFzB9Iws2>?Z9VZ8}Tl z@bFoK@$RO$1>+8Gh}r&INb{Vm_fCn zCp*_4uXJ!q@VfUgt={o))RLB$JuWRdof>@ZW_ow^6;*Rj#2KDGRvrA9`dMr48P&%X zWwlFfi?Sd0?=n=^%HFmAk^#^9Ey`zmmB~J6{28R_eN-H?%>LJ1-23$VrhS=_d)7Kv zcHg%J|SM1#TSH0Vs*~4Bo6joN+y1m+18}+J(hPW)xs?U&2j~*Q@PfH5! z?mE8Udc#1o$+rwwY7Du@&9(B};g3{ncjd`sr#zN3y5?2+Kz~o1ePn7c7c+ zzjBP}{rApBg80EbZ`}Mgz30L+DG@za=xZH$-$92tm>AjZaPhi#;`+sQ@rdvot?K1x zdtc@Lx^Z`KcEJ1GE00U+Q+ckB%y;A-_to_KW8dGLi#&5IWMni`LCB(bIXmB3uPN7J9~Qijd>Z) zzPNBhx7(+9OIkWQ?pjU2VZ^ZTtE6m7)$aw2Z)T)PXWrdBWG z6qGHWw5@!5V#Q8X+hNAPYtOvzRFoSXG56KRKfC>!xFxJI;*UNvEQ_o{O$ZQ=Z*CdF|(s*Ec#|p0s1bhM7O>we<>lTzS6bg2sbe7o*oNOBgU9 zd*LJJu?-Vu?+xB~{`ip*xtHv9G@jeO@T@KIn14NP)YE{7mUC@kxrI;X-THXGcI@Dc zmma?9&jh!ZRK-}2$?a3ve5Gk^a7=TX^!4Y_V}}Yl?}02{LpP&0{^mom&0ev~qko@lyTSRKUR~lIKfcx| z)$$F4!=m?6iK~uTEx5%CZx}G8aQM3_DRufq*V&Cv3_id8qkZf3-zLd=#|6Bp$>>%6 zI;5?KPV_?hLCpiRmFNF_Y&tA`-rln99(|rRr;eUK((Id!+N|Eu5$(}?>Vq$Rto&N1 z?p|_GY?i&TqBtvb^U}JJ<9@w6{`b0=y$`k7Z^w4AOxC)VQ(*IMTkoitov%`k1q4jd zx;j(c;^u&o$~6V7m+6a!=yFTOI_ZwQ`^T7(&gH=lAI^kKTBClpW~bW~YyI?Pk?+1{ z4>+Uo?MZ&m@gbgE=k=v^EzfG3zCOGm6z+W=!d_|`mtG=voU=C6Zd;Xj7^nWr=cai9 zIvdX(9@leOH}5DjyBeo04_ac5T-GW)R_~tZkO2#OzG|&y(3IX@qMOoYt^NV7JzaB7 z9LhX6L83eF_#eX-b-y>AUw+~7AX7T0m*+y;I}>-st>*b3SZl|=qV#gMQ|NT4EA513 zo$#qn_~YNPBzY2bO?Gr*ZoSeiYiR|H-f)cz(`_ zC!2D=W9b%t`JgLTzvHN!)n=Q5g1_UEU)T-?OS8V?{m;%e^{oFxfn@=Dl6gPP2vFct z>D{9$)7PXcu#J}C>%oy{nh2HzsK>nDWbNQf@T3PCmEtREk^2cgczeQytl5J}~%dufca_QP(nYkyD<#@fe(5_Ozi#y@q@YE*ve&Sw12sjq_bG>=p)n{@119iQgwNJKtdg}b>i2p;~dw@l8 zeGkL4z4yZI0!yz-+okQ&dof}_K{0}Y0)iD36jT%o22>OkBd7=#6jUNaR4_J-y#-Vh z3zk>{QH&UkV#M#x&MquS)8zMmpKp#c_w;janY%N0a3-kv=)GaB6L**G`o`qLFV}6h zO?;8?a<*&fh2K}d)B0dI-Y0Us_Yii@$d8YHvVSaVJ=l<3%|Eyyare)6CU{4jE1mSs zwP%-YI((Z$vwjYgYquO@JYM5*?C8dcd-hDZ_x+9?#x(6eR`{B8i2gEw-PrzPW(V({ zgV)@tl6br6d(Qr2!98w~jUBatu<%rEz=rqpWQ~^9d-2Wl&PUFc-u>|R?d7Y}p55G@ z_`>CgX;J*g+rJ;k-}`4K^~z*gi-h>g&nyG|6F2wnUV}QdW``U3&5(vY=KE>4>f0Zr z-aZp&oO&l_k0^(Dc8O!SAonn8=I9W&u;Pjfhj(Poh^#V3fAhll>K;<$$ETMM;J&jN zlQCk{+$hSKv61^1>7A``DUX^M-yqAG^D6mnQM04?vQYjr=9_bgH>R!QoHsZd<6h*y z2RmMVB`{#_m=7tN-ApIZ{)nFU_{0^9VH#W3FBu^@`s+@o0_{Z4_u3J^q)z%R{kiw* z3s4Mg-JF=&Z!U_1u5wo7r|XXY{Yb*`$@%FedZ%u^a4Y;hH^J1}WX-K*jwPo6JwY7P7~?}xiNzpE|f-iA33^CBDzVkcw?OO z-kF=sYYE#tex|XpbNHBNnk7Tyhp(NwWDa$|)ruLG54T;NbLzoCze#zF%^#*w((+fF z3jJ&2K~*Yo%&b)7`^W@SFp;qFT#i4dcHjIM0xY8xbnR9mvsGS(0^}UHB&UH z6?OaG-G$s$IFe1}n9MaDwjST}u5S(h(|6d>rq*4yu8V`qMCS=J_X-N9ZfL1HdHK-+Cv&rG@c2vaCA$Um`MqK>ZUU2X3$7gY->9>cYeqn7bJdEOv`uH%TQaiX9W!K<)#@JI- zI)ALbPRve{XYGnxe~*dZ-@IyWvUEJbH$Hsyvx4#^T9YaoLLi5%A5K|W6rU{EVQ@5J zW!#CSQx+VUH<#4*z}J35%^~-9l8INo9sY;U4;yctaw>iD?ZHnUP&;*FHI5#;av+I;;OfmQ7XmnsAo(=O;74!t z%eupa-vf?5^lky@V%5F&sDSGo%UH4ku#4Ou%r|skZCj69A^P;nRpR8ZMcE_(3rAejnn`;6m3zu=;bkJ@-GP=rHdMZAm zc6{uZ%JjOG-@U9A#QYVN*7(6~j@3)FWB!d)tK%EnZ(VI?gnlT)WPS=9^P%;afdEVpqtp%*a_v`O}?;@KWm0S~XxC|9` z*&$8ikClFP)$C^ZPvn!K52E+BvJYRj4G-0^Sl#TO7muWm*IHZ_=kaD=_BUk=NyoIpZ(P z_-%Yq{?V&rT?37VHv*{n#9c)4eow*FNm+^^1awhiLBD zf;av2H?z@`81ZMl_lGr^`q?vYpe`?%a6vNnD1*_O<= zuv*)Gjdi=G!!9Z>{t(G>e#EBvOY_#mr!T2)_cB^3yJK6sY3Gr@Fp-br-mkZONnqDj zqOZQ0TU*omKvR3c8}DJ&KSpIpG-kz{H%3poE8!RJ(yS@&xO)|oyn5b(b;ma?%iU&r z!S(tn?~qxy$Ibl_{mkxS zE+(T3NA1i0ZtKSFNd;%#4$GYT_R*-l_W2XtN|x(77u?&$KcJZ~dg(&vtE)>*FP^v& ztW~_tds@s^%Bk1a+CKhi^i#!-CxMf;dOZuD`^%xi4Xrv&w5<^?%ehfAH&n&={@k)F zv<_cIEe%hl{-ghC^dD{C-|#eiwTpD?;_`dRpZM#n{>UCV?FEZ^^!LmyVWQOJ9jo`2=AF8mao!=+`}u^MYghfG!JYTl z$VW$(C4`#DR{cHmLC*6_b7xP>TNj;o*z0hC@5)LO=!d#^JS{fH-vHWe=?BwVe+}UM!qGC{c-b?>ewblizp zm-T*6t=Dk&FNfbQ!F7b#z5C^)SLHuEPvy;Z!E)42u93q*xeky z|CQ#kS@%DS=YGx+aeO1 z<=-TpU!-Nb+lP5gg7w`)ei68C_~TsNtRXE++?HvC4d1Q(ZbHPt$x{wK-jNf#WzPh* zk$v@Fzj@*xYhMvg@SHM#$jy_l=U!=EQeMAE=N&uqySLv|T5EVdHXKVRHaYl1T$}Vk z(?6R-w9Bmn&R1+-fO_e^k?-uiYe(b!O&@|XTPNh1>g4Rq{vA)W^w{#q#Jswut>jhE zzHP+p)ZAb0RLqWx|B+d~ZOp~&=Qpd~n7!Qnpm^Gay)hcc8(x>>=D#+-Hik_4sNr^R z`lbEMx5xLtA-w!%*gyAj)@OgZyZ-gdocEJ>%pZ>iHf}zsLw0$W_sZdz=(=dy7KZnZ zUEh3@a^%J7X?j^v=azCpSJjQbKeFY(rpE`~IDeE34Sn}$)0Ek3i)*#@r7M4So0D+x z&f-k4qAuOp;`ZYn1`oGmt-DEOeUAuHzlLoFQ}HP;-ux2oy=mJffV zm&NRKU8q0XJk%y^?y~k0@s05&%U9=pFTc@bH)Y*8Q|U5?SCe1Ym}g~&VSEqIYFk*c z%))DbeDV;Bp-V@XFkkBYI_n=ZdbF9-=1rAv;}YI*7O$RnAh+gqz!J~#f1ysdZQM4i zK+nE(rj{XRPNHXumD@!os%*)%l?E?vUZ-6f`GMY1<{l`)I@!Wa+{y*U~c+z`$U~6 zE3J=73*JoBxpMvF^OeqVGN*|@U%lJrybBfB#<{iZ0S0&M2I_)FCedU14}zdwx4bhg zhAsYi%dWt>fTM+ab@Ya3@9u3IvMhLu&*tZtD$nyz)*QLu9BwcvAh5k&Yz~e}8B&X`VmjPG$PUP}|=KtDC$sHg0 za{}sa!2S=+xtH9FJyQNoo^l#Ba@^f5VVg^9%qD6+{HZ$2`|{DP?LHGnnf>Jy z-KcB2H_v^aU#iCZQt7J;H4HP!%?STXm-ghm2sqJj?0RYV!pzxYKOGNin>=pj%GLm` zwa#vq&8Hd9Etkw%X_YWe_>Xb@p7c+rM}D+9cPOH^adpI)C83cE5AB}sT4VG^^6Tr_ zmOK8i8~>zU^NQ(=O1EFE+49RjWqfyaV%?(DWmk8lMGo^`q!TSU^)v3_&Dc}HLi@=pI7ArMKtHUtl#~DqF|86(=@ki{3+$e@;rX_2|#H#nN3htav zeJfj6Z<2On-_QDU%QHe81ha{bXDe<6HdgT{wA^+2tNn3Hv}T;WvRwbp@NbhH|EMfD zv;DWg)Y{TNf}?h<#g~ltIJ|Q677gij>9wCrG=DjJ$Mp5hjM~<%OCjRaHTqT6?AI@c z>(6RAyAvWWx1FLt`R2dWLMo|uR}|C#ZQxeyVPc8wKU_`g`|_ejSZMEQftwS zzvNGff4M)bVspiJj*|^0tf;wJKotQ=fx5KHkD%UzM8#o7Uuj;?`iHa z1#ND)k(MFjzx8&yn)m&hjuS6epLteoJZBP*>~*Bf*7emJ;azLnxfddbKP6SQJUFu< zNtff|!C!Fj!T4{Yjq>OIy!!XiE9<_~dVFin{hH~=H~bO)>fqne)wwy($}ZaObZ}j_ zf8UO(BPRAq#d#eWIj3odwHj&L%PLM?AvvY%x7o9vR_ywHCwYWi@9E>5(9yLQR&S|` z9&!26_oX_8ZRRhMj{bzpblSd1^N)4Ae11&ceRc1HQ&L>4^{b?xzhAK`;5=&T$^(ls z7tY_e`j3RxKQ}p{m;d-sckc@xb7cdZ+R=aekSyMYx%p;GC$+Mc+_iyrT9S(c|qXRK!B z%+Sfj=xIm9?D|kzSKpSGI4myNJATpu*E+EN_5Wrof?$9*1nc|Qn})(rdFa~`kql(7 z?(6>?&$L=$wbgfxRk`m^zEIIo-}hD>R<*ut>t)v2)~l@>e8HD!Y+P-;Y##VN@%;-> zP|*dOt2WndjQzfmz{#$a{2;OR+bnVO1Gn8pL4G(XSvt~BEZrd8BrTH0`GK!K*p9Fr zWt-@i;j4Ahp(OAPgchzXRWSDE?M1@)LGq=G*~^7 zJg|DMh;i0;j33dOE2UWrr9-S8q*~UdQg7>Tr9swXr6aA!OCzk~rP0>YrEos$t#?ZE zt;?i^);~&5T3?oKw}zkz!WY7e);Fd1t^Wi%&DQPG*Vb6uR_jmFN=>;IY{j=Rv9+>s zw>7e{w~bbCT72jE`P+oshS*HBg*9f{WY}ie6xgQOtgxl|75c5S*1NBcCFZOmJ~~tWwLOtkSAq~b(+k;r zr(3c(C-5x-$1wQ`#}V=ic6UKrLeLoNNzxnEPo)^Y^?ti#_D-#Kf7#uY`Uw4nH-v81 z!xZhqveCD_;us9C%=66CyCx-Acq%cRd=i6pjD#12mXub-!%rFOFnU8>ZzIm4f z<{=Vbhf+bO9C!wBI^aTpH2-SA_kj)|7UC6=z&QBMyFyD9O`3sZADpD6DjrP3 zIJ^}F*{9p{{LAg#{7={~{|fuj{>lDL_HXT1`GapHqOPHSL>YLQd3{9vp;iYZ)WF9^ zR4eKguv>w;ptLUS=Ec#$8#IFiX^JA<&L)}dFwP+priv6X;A0U2lO4Khs*u5lA|<9? zB6!zPY5%;3eW1gY&ZtT+YK5^wnZrKU0bkK5y-4;6ND@wHxYG|Cc8lglj6(bNH zTPn<|6YD-Y;ZfS9XO$rV6h4EHLChd!kTWP5)C^h%J%a&&nZe3nXFw1K>^-(3Ko@Cb z2r`5jq72Optqko9vEs~x&!(;su8P#d`ZH3eGeWkuP&ZWfTiwr82EkB|+?9h017AN? ztG7xQIcJfYAet&Il?KdJ3tl9(fQp>J?gjQ?U>|9rkQRN1lxnJ9j$$&P{7$Q)iNO05 zutP=h&=hC}v;=wsy@UAJWl$Eh0>YvQC^8B>3WR=uHbD=dt>EJ~BCHr&43$EAAY<$h z)IP`@dlK~v>MZIb3PP`gb^`uBaIXFW&Ni6S8R;{G(U0sibsZw3R)G(4 zFj0Jz7D@-DkFvy0Lz$u^*qJCBlqJd*<$#i-Tu|<)Z%`vp&!G@hC`unY2K61P3W`Ea zLdAi(1?~g&{^+9ZGll?(IgtNXU<=L&3GfNe>UN5#mKo(%HIlXqa#D@fX6^;YuI>VpI?%ahY&o8{Kl&Qd#T52>cCOfI+fl?GUcO5?0& zNmHyBOQ%}TmCmzXE?s23QhLU^UaBvvkpF7^P9+5z zNw#PkjxE7PU`w^pw$-(`uW zzHPEirY+Gg->+Qe;*?{v)pnyzsjY_JZoev-x6{wEVNR!HAx^t&4%=4PoV7h|bI10C zO@l2;qG89B7~4@KdUh9N;ZAk32~Ir85Id2?+D=DeXJ;sp+esw>c9s%vJ4eY#I~U0q zJ5Nc3-2}-zyHrWO-S?8+cB>@&>~f_?ZG-Hx?Vf73Du2Ns=&)~qUx8JLWVNGM{=K7y ze2e2y`36TL`3=WO@;#1n`3^^^yxP%UUg_u|zw0YNC zKRM>e-#IRqb7kA*yR8pMf3`j+?eJagH{2%D)uNH53+2hzhq0CNb-$NXnC#^Q@+*7PZDi6L$cZ~ zL9)y)Op@5`T13-d&)+U!cz{blXn;>ZM8HYEvwl1MkNWTPKkZ-Tf7#!{U+RC=<-W^J zmuD{U>2TTan%^g9h6}+(LqYra5A%-+SP(ERU|B$Nz^Z^ozx#eS{9pLr^MB+2#Q&pz zg#Sc;D_1{P2iFm=(^SQkn1kj<3Q&lxQbo~WXr+6+GU-8zJFf8zJM(ORRKE# zjs{@-N&dJ1?EqSUQ2;N%B7os<=e673$xG(%;ZC4!In6 z+2m2}vD4#}$B!PDJzhHh?flFg=kdy&;qk#;=<&&g;Cj>JjmJZePac1GkUVu@3r2@^nTWr?r;^f+*bc*uA}U=y_VWrd9ATe^xO_cag*jFO+RQXxaM!w zY}0H8Q6jZgL%|Bjg>FM50fZ~2?g(g|5Y8eBnh3=x0H$^duV|J7eloz1ppbGj)a>a4 z!8bcApkdH(P<{vIZ~iMYcs8}o@6B}@HNyBaFoC_ zycH>q103dCf$JfKho1T}=Q&mxR({Swu;-#s=W&X1qH}_xgn6**MCZ8*dX@8fMY+j& zn<~C4vQkq;_EHw9@eu8zL(a#XPdi^ie8Iedy{I`EJZbYl&Q5sYmHW(R)N-5tsPpW zTIE_lX&u&DEGQ9N5VQ)|LQSEb&_rk0&)Rbu2YsxiUH9a+bH3Kz+G($AQG{hy z$q`_LkAy;@TKrRd8y-y{6Zix%!I&T+WD*Jq<%DB|D}*LO2LVmQ6XnEcViGZpm`=TE5s&Z8Yzc#h4hHjLTV*-kVIr(atJwzoK9X$&LkI-w~?=qZ<8O9TgdHX zG=)sDr^qRu6kkdZC5#eFSxjlC(5Yk;7QaILN4BG%#*6 zni!85Zy6${n5ob7Wo9z7nPtoxW-ap(6VD1{g|K2-Nvt&1Vpb+Ao3)Kq!m4FmVAZo4 zSdUmOtX5VVtDV)sDr8r(pR!xnZEP{em}AMY=Ol4bIO&|loJ>w7=OE`8r=HWmY2&nW zIym}VPi`1@EH|2)!(GeW#y!KW=RV@LbJ09JkIbXe$HDQe+f{J9>2_aTPo>{ysnMy8&Bx}y_I&RN6+LsSG45ti z)JYZn4Ptx(JHZ_)Vt`!(>^fjK0lO909l-7ec0aI>a0hlpqX9M^>~S!q+KOhl&jGxJ z?#sb(wfhg?xYd0ZIR5B<$X%t>Pgw*Z0KHV?f8717`&IXwh-J}z_p8PU7)y)8S;Fs+z2%v(%5rUQe91(SwZjLF1gV{$NSF&i)i zm_p1pObMn8Q;w;`9K_JEY-|nY7^W6;0doaYk7>Z%#x!9bVV+`;n$_aPge&-TQa!!} z-+Sq&*;|Z()BLsw&)(veXM&z z_pPq6p0}Q>oCS&rxrvUYH(QFHmo`-Z;HKb?bGBdLq4V^=|2=>HVV{t=FVG zS#P?YgoLM*Q77xSHQ=JG5Q#D zMK8(~{nyodR+bKyZkB$QBP>T-j<<}noMXAra=GPd%O5PaTDDkLTF$V9!2E}_tv;cW zZ~>%P9*_>#mFL5oikRc+oxr+(q#CDoF&zI0Z zD5N2M(?o6~E+&p82a#JDo`gb9A@MEgzTlDIiQsp^E5ToazXk1rj{-=D5#og;Ayvo| zUedaw)uQ!Yi>R%kZLDpl?XA65Z-?GNz0pFl)-7SV<`rxMwh8+b+lp<&zQwjMR9G#hC(#r)f$7H0879L$!Pdzh^?*S4B#o;qZ!`D0^Ct6^rL zW_!)Yo5h>WGRqoLZT^Sx#G$(^^M{-bA-H9M+Rr}aSV zrB;U)O4&5KMR`FU-FcIf`PnbVculQ-$+{!-Q`&$7qifIf)XqQnZGO z(4w(IeXWC<+cfJn)3mHaSA{syW1*iYT}vW5BP5DEwc0gBB6BTYtqx6Xk)>9vKH6Zj z&{(TRvqUpU%fO_@WV|R)v{=hd6ee;NP1iCI{Ucm13>SHblC+FPpM=>$iPkaAk=o9} z6T(x%5Bdd~=Y>JSXTo6NpTZf!Bq2q_5^+WLS{foVk*ijq)&^mOcCBWRr*ht@l)~O|L_btnaHIq93WBpr4|@ zSpR$d9R2nB1^RpSEA{zWX`Bvf17{m&EWH)~h-k^TE(1^Ml?H+o5Eug4id9z_4EzwGrWW3G4-xa@z5+|KXAUAqDckh2C6I&fhVWHV*b^@EtG3P{bqB$j; zG7g$c<~DKld2(JMMNi`?$PVO=e@ZAJ1QBuwHH1K7EXYAl3M9pnDoM2@Jef_lB)gK0 zDVCH-N;;*Sa)xpcHjPg+2iK!Dpl2fKVIa#)kSCw{h|Xu| zGol&kjBSiFj0>Q3S{UsNI+M(lGY^7npEAWP2`dO>D`AgiUt#k(`XF0RP8i1*UevM(0_=K(1b~P^U=4Z=dcVbmJBk7h867ja4d{TKrg*RTi1>o|s`$FNN&G_G zCPwMtbtpO_9UUD@9jT6^j*E_`j-SpqI>9<&I^XF`(23DW(3zn#TPIZ~U1y2TDxI}D zKj>`MDbd-ZQ>9a*b6n>ao%1?Zbgt>#(z&PeT<3!hq>Ixf>oRn?x?)`eT~l2LU0>Z{ zx(?nh-m|akBzlV7!OfO_0l)a0G^M^G1n zqBd|=NJgq$kSz9t3?At`1F>HzqR;ZS(3OCw&WgBjYn=vhe(!9p%FecW419OBk$MYN zbZeu}TL^BQu69wiNpWY3s9NK#4%`-T-l~@H(1kPEtz8Lf2uG)a{zw*Y6mJp3b=nN- z@K(n`*F#s+$G~TZ&)?#I#7rHYj-ig3PMUb3c$;{aSSEHA8;Q-uA>z^E6XMh2-^9O* zmx{B*Il#+0@f7hvaijQa?Nok}K|XED@q+N+QKI9mGpO@I!(b=?se#;Jgh7}=gux;J z+YL4w95yI3s4%z=;IhFT060UOp`Ky0L9@XlgTDcE05CPQ2jBw0+i;j+h+#N@35L@R z=Nl#)E&;I7aI4|3hE0Yy4UYhL0^m6SzLB<(p;5ab(P)T~#0WlHQAU|YtBfWZB^U(( z2sK)0G}mYw0H%SFf!M&`z{6mQ!6btmgCv9H2FDGkhJPAZ8J;(MZMey3y-}%=yHSZ@ zqR~bWDbDbKp`Ve=sMc_wVJ*N?4e|^aM%jiWgMA=7J;O5w;}r3}W`^j?Mr4?4c**3H z$$OJ$CO1s}G(nqk46}xkhBTSPncMr*2TbbmIZdQOg% zuq;L3i}l1Vgcd?9hyxvhjzBfoW7u+RC3XY00Goqdi!H=%!_B`Bb`O<1)os@Cs-Z zv>M6=?xnn+98{Ps|t&5@U;OXKn#goT<(2r0B^b=GC`mq}HsWxJumr>JGLHw>mHnth?|rB1}l27&9g?GEg654AufB z1ttW}3`_}}AGkQM|MeZD4b)e8V2=7q4@|4C_P{i<;saw4bR4RME<*D>&q1f5Krn`< zV}r0E*f8u^Y!Ws_F{Tl{zK-y-gg6L(3Oo%w2Tp`$fhP%H(m5W-B`TqQF})m|H%VaZ$AWP`7Mwdi z;Jgb4=T$s7Pm<9az_r&^bUv_y?I9>zk#P_>_GS-3Dticu2Rg|LZB?JZ_Q;0VLr@0b zAn_pxjt|?z8o}VGvVR8f&*LNcLs0kpyT?cJhoGy#gR1`7;A~aZACBMM{`2}P69&cS z?e``2^98Abg@WyZvw}Ya452_M78(l870y}8V{bO z{bYR37?10!O;3zX4J0=Z@A!xbZ6pZ?O*SXordHA`spiD#lv+X!l}{A0!0JDzfkY?8 z(#6z3YAyZ>p3ZF|x8U1|uGE7ZJ~fG1&TJ?8(&;oZt$<-k982<5-l;-R2mUP{PXJ50 zgt3H3LM&lAAqm{ErVtL|BKd0x8wdr2gM<Esps6ml9lgtC}i zkIMn~-DTtwavr~uT);m@t|8Zw>&Xq|2HaC}E4hvQmV6txmEVM8Q}`4SMV}HYkW)(e zrTp8hKuRFx5$+PdP-845n(`EvLdm3LQ`SQVZ^&Ybo{M9{MSz ziSmfj0`8>SC><0uRYcXNN~pfnqkK=QJvE3LMopmB@{_2s)JSR@E{(dFnoUiozQq+# zw^7gXuTasnCMp`=LhZn{|O*D)~3$2azh}J=) z)5UZ)oln=N8`FszWV$Qelg`J7(L?Ao4SRYLovopvkwVV~cl?X#B76?LkX}G9p^xGp zq-$x^(v3A5=#S`c=|eQg3_8PF!%oATA!ms3t_*#=K0b^w7OW1$GLjg^_-uw;qlDq6 zQOVfBuVr{^1ZV_lnBy(+?Tj%RBQ+v4qBYP=JODb=9?xdV@viu(8pcdZu#(`3Pt=HH zrfAI5NM~+f`r-?j+n6QHMH$J+BND$)Ba&6Ak-$m;>k)@Ee%4saI;l~>s^drFD_I9w3HTb8J^75rMU4jj z9njxRthb!$V1WeBrn5bXY&M@QV(YVi)ewUlNjckbd1 zwnh>@iJihuXTR21%zmtqf=|OYYqV;l=K-u^cH59>Dpn66U{n8(H#ncp)WNq^l=Q!E4~3_}9=e57w!mO*`_cnG z!SFzRQG24OKwt3>^_3e=v60C%ES83+b?Z;s7jC^~j`)XRDp z5SFSyX|&Gi1Ko$`0TS%Bk_fX8hyMjzEou*UU(oHHPEaWLd+;o??}+L6pk)uqNyUv;>UxZ}^#xqWzRv^lIB9K~?r} zIIs;AufJ^IoE2_VN~-wXLUtomnrfxWNR9OcXgBL_M4wKOA7d=?8w8sS&a5|oa09}d zq9IiTOsXk&BRcs=65W0WyPI`t_HM5d_b*jx^;#mPAnVR-I}vsLF0ned6YtfgQ~Cvn z%8{ZizrgMbRY4fI%3y;HRc8aj8KA0P7^!#luK3-eAqn(u@-^IU&U-q5&w8rdTyEY| zFbG=JQp$uCg=*xg$yAN3#`+xX45#Y*PR9QRfiqAhrbxM;MnXieeveJzL!GDSP=wJ_ zxhJh|HW<8@@B^7C=M_*4q>0D}sn(}6#UFX}E=^15oj(9~ph^!c??1rjUE06?=ThJS z9tB`i$rNJ%VRdn_z5THC?4K?gzQF#<+v%=ER0(}vcINuIs6URfI%*M=j+6p;{0w%i z^%tjinOf`gf%a~PoZWrM2Ep#?V1RZ0V06_SR36@dWDw4}sUU`G$8ORuCy+G0%uZQ5 zW%7frLTA$I(bNWpI$I4#G6Z@6QDc7*3L681f8|5H8~e@#PO`J2iqw@9oUbx}MJg)1 zoAQ?sNSH5bhMvlbg)lWHI7ied#ZuG&G(_s!z_J^pxU=o;R3j1S@P>z1;}pwrYD)Nm zY&EJINHa2?56l9;4urw{9 zAiJilAUiGLwz>QQT*9=%?&}Y5#DS~_*67{Cz-Rg3TY6B#0Z9W^1=FL_LYdm2?E6+y zdFxYSp!vA>7E5wPM93;R~+Y4F9g!nGpD0S;g6S!K{q^;9Z7%buz9 zl&jPIHJ`d(H@rsxbr~#Dr~ileAVUq9&u97esNP`7|E8+{`}TuRBDH6>1GP`*Z2RBT z4|wV6ao`3XTLV>N-8!q`M66GWAVe z+E32i)szmpG1UpR0P5_4abP&GQg;nt0Ehd0EOb{>qrNzVnym^&YKR2wo^z-7PDEuh zK>4Nmush`vfHDJ6e1Vg$w7iYh+k;9pQ5u*^q|qk|3B$+Ek6Rjz#k4N z=8SIf|2;tg6Psc|1YCFhFaEx&y#-v&{fm(Y)=xm~!DI`L@CJ4EiGlvsAx?CX3;*Mz<+hiu&Ol+h^n1kyGFO-XC#|5WNB0u0p>pdk z_>59d2*$tU_fLJitHLQuHBq-SSV^dfyQ9FoJ7W+O9J2G`WsnYFo34fVK?LbXrCY{d zkw0*)NJo)UXB>p;=DSn&-yv`-D6WAJmji}_6;#Rgn#F(~6jn+XDrdcV`Z8u$QgD^} z%Azm+m&NL#jf7TSk->wihx~s`!r_q+aK-xz-mmcMvqb6-J0BoE9HQH7@bxiaOGP)U zH~xU`6fFf?AY*ty{ecyb@QBBOwfonA(}Fen>%#s$^dVK$SUEHXbdJ;rKFj;?_8Gg& zqRXbsSWWtwWxou>Pxk$}xfed{z8ChtVUfRn zaDZIk`?Y@)U1_UcE!8ccvME7*m016AV5QGB6#wJlU)SsLJH4OW0u#V{Fg+ zF=f!6?0)I5u~9kfd4s6p54P-SKM>t>#jpEm+dl=jUH=-0RK1OR=zr#*r^B9f4|^rq z6+!I;QOLR^y<%TKGbj`5)$3rHUlARtaNhxXZ=bFe$8K`qre9iJs0`T)t6MTXLjpn-465TR+^ za$Sak?Y96v(x%H$9|2v3x{QMT!G4}}*#k-)no%%(MDf5|EPcS6c#_euK5P${F3NI& z8a=pvBZBuD?F8?Xg!8@u-V6C(w=E7c*gU#wOF}E^gE2!RJk<#9(&&z<!`#CVrEf5)7#fx+?FlD7+6;zTj0;wE_Gd%&n9zrzSc``)4=ox9)0lU!N&(%9#jE6Rec6qKEW<~xauJo$=G|Khv4yh;~{KI zgm^d$0KLZ@Ja@2p^rr{r#m;^fNCndVbpLCad!OgGwxX5(>v;dy{@kHAnEt?>*aeDn zl-PMxU|l_7JxYZKbsp@2tR8Cs9E9(= zff|6!l%A!^9EfJvU~DS37_0E#6%mQ2%CoCfuM6M;Z`AIYxP$iT#(~oS<5-Ogdjn_M zXMjY9^~p%4y&u8cL{UUV^wo1yak}cE!c;w=s#oWk)h*X9E~2OMr?OUg>nafmoP)v^ zo;SfLfIw@)V*mlTjTC*ZnpFobiPoRxWes>RI4O?Z+gN%Yi^9opiMUcQEer9%ctzVP zS{=T+`W$-acGHu>aX?La0GvC_Qz@{)g+?nTw+T6?(nqtjb;KRn=;}m#%}SK%2M|8VTiOn{Ce6Qm?6`(Ks4LJ#y4 z0vW_=c=ka+QIAea#Z{E>`L90yRrcy7@T|;IRX;?EP+fkzxG)dltMg!7Wz&VLe0G(H z4bX*qS<(7Py^)pxe56HssegC>oiX~UzbY0|s<#A!gRB%8d_GTh#p=p@Fqq1&yRJG{ zk#|@B!>yp`cO(;_iL^`4`YUwQ>!a!exV;oUm94KH8HuZI)g1@1kk;;;kCgG@-ygMe zN9ohLdkZSL{lxFC-`VD!nX2;ZtcyZ|aMkNE5Dr`PVFg;+jHIfiqI6OmfxgP3j->Lh z;t;|AOj7YYIkQK0pU5!wliK)5G5 zTSh@C`=+te2IQyYv1lqRpcBjJ#Hu?nm6ob}rIdi{7XWJU{!?5A)zO>jMCd)8#1JxU z7y)PxMmRc{5srysBr=F#4Jd<=&xl8tGO8J=Xc=^#@sLr4Yo^2c?-?wn8Pf)61v8=; z9?V84oOu~{8JEw1wX1N6%q->;Tt2gcd7k-@`JU+k{8Tftm@tRMf;oNH%8b>wZ155f zRyZr3mBBJ&=Cev!Cs~cGS1b}+kNpuRV+XSrJd9^&u=Cj!?DOo0?DuRI$Bg5_3Fjno zvN$|^F{heS$9c$k&tY-Rxc}GpL;oh8s(mc*!xh(E9^5a#AMY7o1ZNe459d}0 z)A2T9_(bj-d=|G`En zJ&z|a81StDcZ@p)UZL%p!#5DR@a`BK2cA(BB?ee3K(#s?uU)JyfL>{viB(o<06X}Z zx3%Ijac!rLO1G>(pVCzO#uiNuDFo$=i<9y%W2^Na3KuuhatqE3cRu1>K|rOpjP ztxi4o&PgJ}L+3nr`+RB-`3t4o9js-O7>!Uo<~^9fRI^t;qY+iA@QTc#UHO4J>Znr# z<9P7?>~NM3xR;J4W)fLU0ko3{&z1;~bUheg-UMrm0w|H8rwjYbXUKGsFDJlMfbMBx z6yVo!1W>B73})o&Hq*md0+2h2kb?RV1<(^BNv{ITmLxqKNtNS! z#oP&@Lte2rzt=Ft4)DO^4)i2d=)F&Cp4B`#)4bB_9H}GKS8ETVchFQ#D zLl;s!_}WH1rqnQk1afA*r-RuW$QLN(TRP=OJLRfa-AlE;?CRBCvCn%C1-|lQV;o={ zWt?i9Yg}r4(zwz1m9ZFn=PD9>o3)U9jNC--Ad4wv6N$-Klf@=wCiN!mCi_s`z47A$aF^6L`P3nCc4NscgKK?rlo+0bZ z;GB@Q>7L!!QK~CFfi(c&Sp`N91<(z%H)cF@I2ytY9g;jGZ%EaU8$;eGfHxEYyP+_I z4owD-XP#%SD2L{CqeFqb3cw8jV4Za+&%zEss710xo<)_#4U0DxJWD&vPyor6c>t;` zZvgC#CC};&DDA95t&*+stg5Vd7H@{$uzF*~v$nGiwNAFqv#zqfVg1IMXM@bIb~d3l z$u@a5RW>(l-q`RYc9Kv@vQ4riPf{i68c|<|ZL_bpM>|LyZb;rpcv3sCM$#QZrBM#4 z4!I7c4ksNN9bP$*9Q7P!j=_%cjv0>mjuno{(mZLE^oH~e0G_R#ZK!RsZJuqF?G4*E zwmdsKyHLAiyF9xpyBl_I?0EKe_M!I4_IdVI_U9c@vK#gS=#4$k!OkJnA=x3%p~~Tg z!y5;lqn%@@W3pqOW0m6#$2X2VnVl?DmMqJYRmpD1-pF`zJ9(%)S)M1alHZWOk@KAF zoI;(Fo${RW*i}w9oZdL`ob8-Los*rb4Dy_-oMp0LS-dPmmM^Q2otHh7y_d1%W^xaC zxI9swB`=nrm%ow=ojjc4opPP3ogO-ooMq1O&iT$aoGYB)IP+XATzp(2T#^AqxU6!y zLD=bX)a8cD3m2TLwyT}%aMu{u1+ICn`v9BJ1AYmOJeHFyS}x-!y+C z8(utIFDNmnH0WVa)QIyV0=~`vRu~){Tpau=*dru2&46B!km8+kJFRixhd;PDybE5<(@&zj&d!N)yuLe_*B_u>iF6Y3@` zb6@7(JOLFYi%N_tjd~ar5FHi0(>*mhH@Y6cD}4 zbEoHN&nKSElgwfgW3pm!Ud1uhF?BIUUd=J6*yb2vtWB(sS3qo3Y(Q*`*D^16C^a@W zwlwx+ELc&EWyP7rdBlasCC14nWyKZ8Rmbi0s*5`recJ1ZS96>@g!4vC7EZRA956X* za_;1llba{A;$`ts@mcW|@s07Q1ha(jgsg<>gysa{lz=IzQ%a{aP9aT|O^u(LKlS|7 z_fyTLg-^?xRz0nGnsB<2_t(z%gRz6>fB1PCfX=&S)!Yb|@GLkOKfUP`(*vd}d@1Mc zubX{TvvBu0r*G=>D6npC`KfrYg$n$rh7|&~UI%13UOThspaCC9s+NVlpk>B7S)M zwD?u=`{FOhzlf(LSR@Qjn3k|AVPC@Kgck|4DHc%gF+5(FO|J~JxJ4BkPH&Zrq z_=0H*f@cQL?8|ff%-osPGat?*C3b1pB!V@q#EisJa8Hq+Sdn->@nPcoL{?Izj#*N0 zQfg8~Qgae(mTXqktgKlTvl?fiW}D3h_hGYBXBW>tKl>HHg~{%aM{+zk<|bEzRbeJ=OR!#w{-4F0F3}%0U)K4QuP4Hln|VXKzu3!8L0^5r{c%O;@ zD~*+A2B7z+n_b+lHth@ZNJAhzEj%p|Ko$V-EH|wz?wNta`e*u|nUEBmv}WzyNrh{-uXQGsCtdLD-X#08OP>AEbwN~G zR9n)JJI<5DhoHtpHAX9u30;0Sg&9p#R_juVa`=Uiuf$|`4` zv)4J|oESMXGA^<{vOhA=HOY0WYmKYWwcTZpS`sxOIyn07Xv!tXt!mPr!WH3a1g26g zCZ%#EZcU|3CdPI6$ zdVP9-dSJ$+j9W9-WE5s>&-gIof=qknlFYQsw#6Ipca@U`N&KPdZdeA2SFX9woY%vqIFj?X~O1-ZB8#^v_rp1>zK zZwWqy`1I#ZTsLvu+;vWT+VJ^s-K6|U`4RZ!1CBj&?%IcHAF8GIO;6Uw*Iv1H-rD7B zuUwn7wi>i+?Xk7zK6`BKmCw>_tgEf4o&W5LXOo|;d6sM*s=cgs*RxcMZKq#@_&3xZ zdzSs|f=zqvj@m=D4Zj$v{iOEWb=!Us8t~(~%j&MFyP=Nj_Z`RGb(0-uoi*PP8nD9Q ztV?#3*VQ=o*7Z3~)V=Qrs-IgQfe&qBY50`m)2l!I_5Jl9>JR?!!W)A0XJ&)?+}fZ% zOB&S2*`Pjo4S5aq_-w~#0G|{3GqF*9CN-*$y-|JcZd9LDjp`HEs6K^_>eJS!K6@M0 zXQWYm0-Mz5f+qC|Zc?AQP3jZT6wySx;hHA(Noz`LYQtv$p9#$qnyEtc*6@bfkmmMU zs@jfP(M;8)ie6SbQoDE3g66M#KS-+_;wv;r0$=2L$j{-$8{C8_clLNTk+F> z#{S9LN1EenBb(24Ug_LBX`XYQbGb9gS?%2AJmx$%^2*40k;@~KBC8{JMIMVh*L9_9 zo@==)$yM#z_r)Q9wr!J0nvVy=w2GLHOQDSPI{!DHN&am#@uPl~IKtBzGY z#P5nb7Pl)-*`_s@H}^JwC%(V=!{#gF;VXW5d=jWSepmc4@L%&$Z-=$yl)ma!+VUGZj`pK(>ks^W^~3TnQT|?te<#NN2>JI$IQmkX zj@aMm-Y>ZyoufaLgYgTIFSYnc?pf;FXWYYn^+OuOGk#U}O~=aWOAYois)ydo@%P;H zZMVz-nqR@QW~j)VspL-n{$W%Uw$k5>s(o15eYq!p)z6p5UuH!|GRD`A_|#F1w)Dx# zvGE8`j*l{(LEo_dGiU$*KQ_2m|H?PG|C{ft|GDvm2GF~7nz3N{T?~D@Ox!Ab*FoQr zga-I}mmV5G--(R=MjCzcdlg?c|LS-4R0F(y(ccZwIKKS0{OiX<-%b5<-zR)E&X;qF zdLb%(M%UnU7zqM|A+eg}I?FM$J--TSz5!^AiW6}?Te;m=V zrX#JRyrZ|Hzhgqs#EFxB@L|V<&Y({Eoyg42HMUzj{o8!lG1_KT=LPT`(J_GEn@kAu zZ~y;d`ks&f`)Zrknbt{b>Fe(O|F`?jA2@$tIzEJ}@%bwM(ZENecvF5|!gUGFXEd9? z=;wRYF(EzU-HInR{6?T@08esvH?Cv_Be~-O~nrlp!j4@ z8ct}kecl>esZNQn^2fWyQTdOKuksHK=!G?pe=eRDdHfWAwEd~$=Zw|(N7wHkv;R}) zx4SOvx~6ME*F#;AUF*6Ux^{GZ`3=BZU8i+l*e$y6?T+l;)V;0yt?tvdUbt0ky?1Nm z)=gWtZGCI&X+0PAh@N|UB6~LVZ0mWe=d|9SUi>=kwDS8Sdg*U5|M7i(P4CF!v|jrU z%6qrN!$1BR=snRpaogDJ?Az9CtKarzHO-^F+dkYj@wwpVZhdamb7{}jKezX}51*U( zeDL$PKELYuwCC%e-~0TB&rf_I_=Q_vSoK2M3-vGTec{6wCcYT_;;k>PdNJ+A`WN@U z_~DBaUkZNd)|Xbjl=f2nOM74X@TG}=2>t`diFn!ha^cGh6MA1BcsX!q&`$f#h@H-z zg*$t9u1*-(8MrHGmwi`OLc}iTuC(Wy6AE|r?i$z?*ca5dKf&G?(dX2A5A+@wI1qSne`3(Vj}q+%BMv$b79Q+9IB+nqKd9f{AJOmZKR>Ck zzqfy&Kk!h{q3KEXLkp8uCq*1`;!}7iE2%lD_t3zhz{5d@?S~@{I}aBg?mawkIPmrT zNkOmMUypd*2`YTO_w|9-1K$XG!~RCZ8_qWh-{^f~;EljHgWj~i`B75Do6a{2-|T&J z;LY=s1OFH}7&K@fj2Ltd77k8N=^Y#x3>*p?vJXWJElhC^6%MUV$x7)R8W;*34jQ%( zM+`fM3x|7$n^Ojc_ooDogxZ2e>?08)AEh`)3P;XQou1k|GB6VOPS87cd?Ma)zEk*4 z?>htU1il;e?!r|2yQ@p+Q55($AXU8k2R-79NVAvQJV8u;j!Lh1IGg24|@On^y%pf(?f0c_gAM! zyzhL!@cpdx-uDOI5BwnL1N#Tf=@B0|KPdd5_k)2C0*~)c|0q4^`1u+3r{bpugGw7V$Ud-wOY>Fst`(1AhzrIOt>h$E&llvLZfqeq8u*@5cil z2cBro3OZpw5plwKVt>|0S%oKhPYj$mKRfV~pikyKI6d3`NyI14PZnkue$xBNz$by9 z27PM(G~(0M+0IW3KkfZAD|_J6z|Vp{vwybyspjm6&zzqXezrfm_p^_(2Rwzpu{8%4yCS_=)WEvR{nvx&PCCiTzUhB>QFd%k5X#ue49L|I$9i z9&8V>Pqk08Pq$xXzuG>-KGS}U{aX94?AO`xlL33E-EJ3l%N~Yr$!FWIx6iT9wclXB z(SDPCo_)UkX8SF6eBE!q&3?Omq5Tf~o%XxzciZo=|F``&_TSonXa662xIMytuYHmI zK77Z1zx@IGgZS;iL-wWiW%lLv750_(hwZEEkJulzKW1NTf873i`xEvx_%h}x`_uMk z>}$ogO=4S-*j6mIm56OsVq1%N&Mls+6VI23=S#)&_2PvD@j`}pFc?RjE*zSv$Mwr>>M3&r*#vAtMqFA>|z#P)Kry+UlS6x*xC z_FA#MPHe9i+Z)98MzOs~Y;P9ZTgCP^vAsj=aEcv~VuwrYh!Z>F#f}8ABT?)~5<61G zjx@0&UF^sbJJyRG8^w+`(U&Ir(nVi}=*tv+S)wmn^yP@YT+x>&`qqiQe9>1R`qqoS z4We(O=<|raLeWz9!MvEc&*Hz82BfD*6zj zUG#N`zE08CCHlHW-&V2PA$B{(?ntrQC3Z)N-O*yVTkMVzyJN-fII+7x>|QVSbcwz3 zVsD~2kSY$Oi3924K!!MwDGua|0|ny1dU0TrI8Y`IREUFx;$W#bSSAjZi-TY*#lb3Z zuv#3f5eI9~{8{cWNj${nJ=Tl8-ghaBRNOB{+4huq>&j5ri44ke01 zN#anlIFu$1<%&av;?QPss6-qp7l*3Fp;~dMUL0x^huX!V4sobk9CnJs(c-XM9F7r( zW5wY(aX3L7P85ez#o=_z+nHbuxC*R+CS@a9#t4mRi5>BHELe7-g>(Zxz}SnO^CGx zb!~@Ud#m+!C&sh2(>j9rIpW9#wOL1;ZtF;7wsiz!I)XKN1ao~Pw$wTj@3D>~Izdg= zk)%B9NJv)BtOPFQUaUO66;8L4QPvX zq@uw(Qq^c3sZF+yG!j*VTCF3^h~Me}AzrHs6bFh2Ay#V=2yt8Cr?m_On^yQ~g}+wV zwjyS07ig<>qz(3M&}~Cr?HEUUGzjBsPXuLxFsAm+Amr2DZXM}B%nryp(ANpu&NS;t z7j(MO-wnHN#P5b~cL!*zbrfs+sH4(4>TI`;M&?;Zv0je4)`3c`qfr$g=-}Kw8XXNv z0%d|WgNi}Wi7o?`gWw~&8q{JPbwl3`zi#N`d^_sS0%e18K#1Xny&L-ODo`^BHZgIa zL{I@}1IPn{EEc|EU7#2c>|@u15HA+_#&%doT#7lzTq%IKbl2L=?E!NQ#Wmry`G3 z=%!*!shEpYj5igzq$1Ze_)CK<4K>Gkb~Jqx2(dB{BQw=Hng#u=3=qbV1^?N|IU8fo zM$NO~CmXS{5hEM=IjCz6{N=z$E@I|kOnLB|hkE6s2KlIAK4KPN-U`4MAm;*%aYKT2 zbYn6IdLHEHLEawJz7YNjQIA68wF!PUVQx1eR#7epwnd0tR0D#KBIp-kt~Mk7X2jl% zx@<9t_GwNE5F%)CW#mKK1H7|y&7=BCPw-hnTkY^cm%h6w6VjZnO z{jql(twIh}-PX}+)TJ8vS3_2V9BVL#HQ;M8C$;cV3)@=cRSTcBsBM?Kiu&Kw`8&HEr_-#Uso8hw=@tQH#X2_d6t)p8o)-CPU(H7*{ zQV4>N7TC8SpBC7+VE$T=C-#A(IOmVHVa#o?X+wS6VAlp8ZHV6v{dUx@9eK86{yMM@ zJ5aZdbWjEe@jFnD4%l_TUnlB@dxoQ(kaZ$v7xL=DaTjvvA|7$NkY^YCVNW>Pjdj_L zx^!a>x*_YXwvKMac(!7EThYH2b=}%#4dVJX=qRuToz2!@q!W~B4Z31Lxu8O85ceO0 z(NQ46L{Kuw11bZxTZ3-!xE2p$4;XaUf*PzrobQ9UwhzW^u?BIz55~ea7CN!{pc+sU z2(q{YPzGqdH5i`-s<#GlUJoXufY6_SToO7#-PT|ta!Ty729w|?3A#y$pVVOuCc8k$ zC%N1jOhKM0(IDiKiZP{bvIf&IzBI_vT0roVz7B+V8PLr{zM04c=hTUyAFg}<-m6iV&NPc%qapDTZ6gCGZ%e%$Q$R{;5v+TT^b1S*MZM>gJ7Re z$M9W%dK5sX0Qxu&2MbV>0@S$x<5`bdu7|(%$YnihxE|x%fS4Pgx3Lj~dV6r}*$Aqz z1`9E^O_;My(AflAoTr1EGp)hmNNcbJ`ISPa498{gSpiukuoCgAF!n0sT!pyR(67dL zs-a(vIje2~VXQTXQG>avLEIX|twAoen6KI-5NvAU2j|pa9ggdotU+AM2kT3%!3K=2 zVXHORh_%uP-A2@?5wUTPH`oN5CXA~I`c0UNX5`+CxoJk8&4}BK`rw{#umy2iFi$P$ zZ$U1tIBvyUwIQE&)UO@2#kFy;1M}1Y-44{d1HLSl>fw&`CpHSmQ%!_0~{2@=b>< zJ=Yq_z!)8RiLqzGXJ#V^HONHXnW$41^36iLEXcDFJ3HMP z!kQn-#aMFJgWw}C5`>s}7;heGw+{7LhcV|PCayI@`9+{o5c;w9hYFk^GTVMjD55tI&Uw1#m{J?!*= zYC(0NZqQb1I5G~D0ICKxSi^WG9gc!5CKpr$Dg#x3Adi8cm`-ar7XD+SK=2<6J)9TA zu^X-7xEc`r<6dq!t`*c~4adWGd>Uvys2&6#@m1cvo)NP z1VT-4k2IVM|GDs+i*e_nKQ9#opLy_!wLP3yX$@mPA6|#!{7u$yK{5#AUyuIv7|RCu z*Z^M}3$0-fYJh!t823%Xg~+WCwJk*6MUkKs5OONo0D^82YEcBc&4^bFyJF;3j2hz^ zb+`oeDM7BK$gLFiW$;%4Ulpi%1@gpN9Ik|{5;~R0y%N4EVOs@1RmiCt^~ZhDa1Cly z*J2IV!)HClP@e^YZUgGufE*eyrUs0o5q6Epu`vb&y++i#35dOVxEXmhV{Kq>9^QgF zZb2QfHxIX<-Yw{Fhdu6DhC4E?;m#5ea_mHm&JJrB_awvJ@X?JicSEyK*WaCzA1nX$T6AgmggSkPx zxDOw}^?jrWHn{&DDT1G(S`c#EjDFl(k6_)5l%OsprJyQnq%;zQ8kTljBjuD&{kTSt;2w6Q6S;O`>{u%!U9juI z+;kzQZrFE2uN!mG4d2}!>z#s9>z(zr);m=#);rbdVaGjDo6uwyP*aR1D*;VzI~q?E znxYM8%Bs**7lj=!%-D=(T^XAE3N)p$XsUA2G{LN}g`_PdVaGSQUDRwulUR=?KNC$M z{B0_XM^lxErWS%C2iT(cRy0XaE=taz2Ducaz(G+;7MiqbH0uz&Xj3VgiX=3Z$gilO z6HOEHE9yu?(?v(!$zjJg$3b~>LJgYaN;J7ha&tj58V}OgT(<>H14h2NyO0_LFLole zVpjt-jcB6ssG*~{I5es2(d1%S#p~9g$&W@;jNru;NT|35F^U@;Xc|+|bi2cjm&8D? zBo<{ViHkv#0DmQk-DomMkcs?CvPrrD4oWs4wUR3ME1}d%8ZqdSW;iYBMA=KaQKnKC z(k)FvtxEG?QMw6ZD=kJsr48^>+JUN-cGiX+FUx^mSq=(TRsfZ>7B6z9@o+g5)i{Pt7@YN!Ch6tW1Laq=YlSRlB5fUsyLPW?^ z5i(7LOcx+DtM13Nd}Mm_9{Zb%nTUvbg#R zarI;|;|eijvY2^=m^oQocb)ikkofhlg?*tAtArIM!fp^@_lU43#q~m5zedctMa;QF z%y~e}c~Z=sE9TxH<}MU-?+|nE5;qEQhvK3<46JmLYSUy!Ow~OU>h~;;R<@bu^ z4~XT<#Pa20`J-ZmU96ZbR@@<0+$mN(BvvdJD;^aq?+_2$#ly43!#KE8JiJIe{HS>J z5%K6_;_)Toi6z#h!IP{@LqJnO(?HWfSAnhu%>c~=*+BwifxTWiGw2r3t)K;<+d#L27J}{o-3hu2bT{Z8Pz2~+&?3-%pv9p3K@Wf)1T6tQ z1X>DO23ihU0a^)q7_S=P$Q)@=J-*7b9qw64D;!kRmGu65JxVb)FCTC92K zn}@!6edX3Ix6A|GVcl~3EbI1JH(9qsb_aCt0!93C5$I7XVn?@iZ^R?kqF=5At+p0L zEVC9Z4*^ZJ?gQQjT>Qub*8TS{0WGs0fc!!DU$SJ0wG{rA;&>_amO^hSVlG?xfVB*H zEMKzBT8{qZ=wH5ane|A-eb(c!c>=Vp&H~N0c66?=`a12P*`PZ>cY+=OEdwnFJsNgt z@RUhtf~g6iW-2w)sF_a9Rn%Nf%?xU0q6vY;l%dGBu;90_=LX}cA5B4QSTOa45F0{l z2(eR%ol5LfVy6*1jo4|#PA7IcvD1mYirA}&y^7eYiM^WGtBIXK>Z_){8tSVdvy6LO*J(&Xdp!sM-8NrB#5NGNa~BEKG(rgYGCFfsf)~9{ZZ6F&qaDJ(u*R!DAJ1} zy(rR)B9$oA01fn_NH3c7qDe2B^rA^Gn)IScC7M*+Bz2S2O;R@sfu;cs>A5k}XyDXM z7H+bLA&VH2#!z1j^~GX2_Q#VTo?OL~t9Wu1Pp;xgIi6g_ldE_#izl;qm>rJkZ<=)} zzC@iwZKP~nvW=FlTedN>jgxJHY!hXhEZY>>rph)=w&`f`Wshvh8@}wJwrxGN?PQCu zYN+ifqPEj1Te8L1CbF%jHol44B$DFm1!_~1s7>pnHb0-*f{oNxm!QQ7PHjP~Y$+mM z3R3H-ptg>@;guD&ac$J*Q*^utp|+TE8!D!_cs!SFBee~M)HYHD@OU(7))eevQ)dNF zK`?3yV$othnH5a?8nx6zJKL;a+S;h49@^Yy1=H?^Rvy#VHY=F6wOPTmuc4L4w5iPs zrVVXYFzsk)k86xuxk$Hy5JVRujAu`VpnPG^`EktG&BJ&B6IZ!)&)>Ii~s`Niq zW<@Rf(axAPO&(82d(|vzXUw`KVW^V;9ClOk37}4Fs}u+utKwvIY_76X`2$>*8!L4ZKm|K2*8Eq!;YSs#7|1!;VyxIrd(1 z4Ip#ux@3oaSAyZ@2`~nNdIb#Fp8kgvFn_>Bd)3jEvxP=#M+%*HqPN7EB$4!hsoTN!Uw5*kj4k;@<68*GUs3^?kaGjNC#2)#LPKZkNc|F{wN$APNd#B zbWYPbI0sD>rafkkTH6O}=k&)y8K=ZtRdcjBqO#+^xvKJLaYV((e{)d>TzXLndDNb$ zkB%m+=c5{y;(J8hH<*>fM+H^-2v-_D%2(3JP55;SegrcYKj6WX;paCvD#0&zz~BfI zhgoh@N6_=&s8Xs{;HaK#r4)vhn0xefob;lOV&~##Ja0$l;m1BW!UD>Z(Ok*+l@ECI zrAU8KI7&Y$#nC#fF7#z#>BwAMxw5YdeYr9kSzwu|?DY{@Y>@siA{h=K}{foty|9+$2>o!Yuse2~3$BIQUL5aEvkGoM=4Bpd1?{L%Gv1 z6$2d>YDf$=$Tta0GmVS7D4nfRjjDeWMo5(*wJ0#EbV`l# zEs_#sKm|miu-U2@*dT-SlMKx?n0%>*!I6zDrpyD(M$QN$brmYVG94Ng4O1~Nl}TWv zxMw@snR29a9d6I&l!D0V6xekaDbE zAO|ET7QJ+C#-b}-j$sp~O4S=(DnS>GBoZU3L>KM5(p=Spx=<5xL1!(c))=AgI&8d$ z*?6O}@&0tCw=~9E(j6$VGzVB6nr`fJj?wS={9Zw<+TijPrz!&Yx&7Wy0A zUn1EzyS+`M4{Rp;<`~7d>q^lkwUGxa)ny0abkS=|MbipH}>m4Co?g;5>M@SdDKin*w?BlH1-ya9C70N$Au9r?*$y<|p2)LJhcE0`iwtzDq6eP-tDUXi zI{i9o{)-y>PRA}ZPHJ4#L{Sq*O(HcZ)TB{U+=iyC{B*H1W*3^GHZ=8Zr(0xe?Tn-b z0*lPT=qOAbK`(4)X*rr|I)cS43OS3+W>LslJKfa4V%E-BY7l%D+0LTivncp1iaU!O z%-UJkcKU2mzMdRhPjRoOoUbP@*DC>Rucwf6NIHl5=8)$(7C^CPI7uDIlYt8xRa*wPLke5>|Mm(O?r2e-rb~kH#xYQX7FxO zxm&3qm%GXA9@4vq^zI=kZ9ZtE0ON=tSNJP1YTzY;yhPAAB1kWSvX7wbBj{X+pv3Pb zFZYszd#MnM$aWFAUqpgMWOg4N-KUPAcORARJ{s?RWU-h+E+(_Z6ml_@ZZTObroglp(T{i67si%ES6AKOUUUGa=L^PT0*uvtl)sb2W`^HP!TS8vf%X{XIGTJvse7IsHB5@_WkV_vG~Vr1Avy zJwbhINO=t@uOa0%YE6|T;Bu?4=)*pW_cUm6ml7E-j(MC+z@SM(ca z^kqqDmXzkm;~aG?rFpU^Pxjq_Zbg9%qnrkE{<`>d%t>+44AB9_Pq5 zmtyV7r6_1gGgtPnlO8t6<02_7lF}mGlK{<9d0Z*mYT4FFojQ5kC_TuU>}i($&9Z-s zJl-OYTV&fRb7+-OTBWpA_P0w9-E_RyMN+iL5UuJ#4trzdae{19Wm2`z`yWozouT+Y5Mp7rr+V?GMXDM~gQV|F=2QS3I%dDMI6oEj> zr1>n^!F(=Uqw^*>L!g_L7Xow=zzYGq+`QAJI#Ex>#S%!@1kymJd$UUS=AHQzmO#q# zm9u>1EPrQFJ7hAKn|GFx&jl)p+weEiF@4{SINdT1yH5~*}=2kK}9T7X__##xih@EmeBGecNP|rnb zIu@%41n@$D2n2|*Sk;U`%47)^tLa#xMzl;-Vx{sz08IjTA%K^asvrayI|1slQn@CO z1~T21D&3W;E(B60>q4A#ChM|N4P~X8jz?4ykE-c-R87aD=)`oaR?$}@5W=oT1WX43 zToWKA0!+th6_!BCWLV-5mH^W+(2eb^PXbiHVcY-Kz}9Zr382oc-PDP{z{3LtAYDPG zgc#KsqdH?$XRJ%gVq+B~C@4};te{guoYIVoR-7`3OHy2+g3St)U0j3W8Wn6&(4wGS zL5Bhzp-Xb{kqT72c(>wW6r?FoV~F3RxH1Lh3Mv(-=l0G{R;@<}9v5FaF%)W^;-Fv7i$v8gTS z2-pGFk$r>i2THzK^FYbBY91(gdUHp1K;k2He0rNs{py7Ykly_guj9%0am3@Ti0s#K z)C&;w<7J2J*Zw2BG*7P_VdrvcjMC`VDBq1huIoogdC9lz8YQpmNUsqkkGH1MFHrKj zp6V43>~-F*I;}_V6Um>hmrLe%7M=IBLjI_ZutwAotqOUBRdw=+rC3?A4|{-?(vgzV zzQ9tp#U61|%C!n*V;23 zDO((ATb%7DrEE((fQ(D$j*`kFX)DhsmTFr%x0Gi(Qnts_BJ)7)=i)tNWd6ycVtFLC zH3eEWn4ob{6GcrlHEwERsEMT}o|*(|GN{R1!-IIi-ilFdMB9YS&E+laEnhSRKw?VYmiROOH8W*w3k@ zN0_iadTgOK7A-xbgvnhv40|gb(@q+O{gGOF+z7+oL@n(^_+{5?Ez_xOok?xytgr)V zy4^Z2>_ECa&X8@UY_nc#yDscNmORduZLVzdUTc~Zb|6n4uaj-QZplx9Jl-H%k8BHN zTO`}fx+TpLd0Z;nGTD}^_JH%&umj}>A{T}osE|DklsRtQ6Mjo=#x80zWt-I&cCfC$ z?wPQI_0;w|NC$255^7VHQ=7Vq+O*ZwrmqR>kCB@62oTmECy(htAnY(b0)!o=M}S$F zdt3@6I3?gh01j(Wf$YQzCJswbf$YTM1J|F}pY}K)NkOuL6a}dY()#Px&U&kIJ?;f& z>ucL=%oknbW*ZCwl^Po~wkoVD^j496)h31A4c=}CzLxK9l&HSxoH*zB z`sf@`aXlU7@{zmk$Z$Z$wsfnQ`mYR5KirQRwvMYDZA{9KjQG-4_wUxW@%(lygC$=`% z%_PNx88uM3nY`fXi<6ori)Y38CrBX}B zxD%Bv9pkPOEnSbOrDM9!q}C~0>ZdzQwAgT?=fNW%sSu|;@w5>rRQ7xQtpOEyaBBYO+=zgV7HKKlbW!6ag@~SLR>B}p!;-x<7BmEGP zK2Y~7eN;~OOaD{>(w7K*Led9HeTk}{^aW}+RiJceGImYHzXnqn7=U(@Y>Q;OS+>Qp zEs<@hY|CU@F53#(R?4ttIm+XmS-%CG;|{{B*^8j_7gzMWL--^BO%Gy&7#DTCUNf(blQ^HF`99HQJ79 z|6N*7qer7xqpe%Xy1G0Ufploru4kJKV0)3?$>C0PRG^g(dgA^8&q=J^IA`%SEKC(-LKK3(W}w+qLyp) zX!L5dy`<$Dz041)e%l`udNl9l{vmD0$a)&R8g1LPo<@(>_h{a$(Y8bDY4mEey{!8+ zdNg{upXYt2*3;ANJR${b}^>R=kIKjW*pM&T@^m zJ=$KQ_Z7u^_iI1guhF(w>udCA^fDe$a+~%OuF<2>wolt@v>n!QH1Fm9H?^NvwZ29V z^AFeP;qe^Qb{ahzz07lbjkXc3uhFB? ztI_t3mNRO*aNZ{vwcN|7`@`Q=_MT%Jk1Onp^HQGMZyha<_Yu=;vJi6bj(e|G9 z%l`CydD)J6jkZ7OINHwky5=={G+b zX#HOre0-sje_P8l4gRVeBc74pBL<)TkkUV0`}^xFisyQKV8q{RhcCnMgv0VU`4 z@~zs@@y;{&VPkwHpDO){x*lC_#dCe0H~3!}{@S-I{d2W_QJ3O*J@mzl_V=rGis$hS zO;{%_zo+dVG2~}|d$j!L&nkPa?^z{^=lRM=Q#{wJ=J$%{^?hF1X#JuYY?}@jQR|BZ@yy*W*8o^?9e^ztYfO zW$XvfMk#+hpHCa|E6-E){l1R3$nZbi$oGdvzQT~_80&eFv3?hPqVnPO_Ge4Q|92ff zdcdjCkEwDE;%b{$qxGpCK*=sDzt0=??;7$TV?H(+=g&MNpZ_uVRR$ky ztj{jv`nvTcbw2U_lW44``;B^r8vZ^t@?U4zzi7mB8Tsutu$AvFVO3Gx#54GQQvEgeEw+21O702eR++1zH3}xZZhsS zM~v%bg>k=o=`@uu@AnJ;rsDDSF*KFs|pPtr$I?HAeg&-KqRvp!2=NsP81> ze(^=4p1(1!-+wjojWzPS?K~BauV;@N_HP;f-9~*fjq!IF<6Up~d&8(_@>8lFeE;_s zWB$sF`K>hSk!Or2)2L^KAzyFEixO3QzQ6p`$iKxHU$?jfVVn!{1sX-g`zp*Bkl$x8X0zurDz9rH1||hX1Dw z`7tBE-x~G&yCI)*nVKKIAO7x%(dR>(v3?Sac(um(&NANbJZ!|zH|%XjykLW`H0mJ? zdAlL6H2hy8)cE-MX_qk`myutGVV`Zt|I6@KZpb?ge!G$1%ZC5M2LGMjU^Dm$IZDp&bM_hjR~YB}y~cjM$k;#D82Udn=Km+}jovSo8U8Ld^nYut z$2jAD@Owu74#VFBo0@OFAM_gcTj9p}-EG9LG{%=>thXTJ`PuV56_4+)UNrJqWaK++ z#A`I{3yu6bjQYN4@K@xh_`lHm>kebTeafi+k1tpHe7-+tjJLyxf5;fmenZ}1T>mSL zc(#3N{`q?LedGBf)u_)ahQIfX_`fjh-!}5M4EdeLe9brB_ugRS_k}SZ_nZ1PYCL>D zarUv%>$}3Mc)nkVIaAe}ugC8h_5Tm!ebe`i_Z5fkQuY_<`Tg8jj}I8*U1sFF(8%{u zL;o{lJ})=kxBSp}{tY$cuNn2b$kaEU-;WsjtBmmv8uk0dC#s%&e|C=X{QD=vUyd=p zDTe(*BmV&7d3TDD|8)lcH)B8gj$z+x?6AP_&%opQ)SQV`(imZJoS!YzuS1flwsH}Fyf!KSk3>B_5N~) zQU8sG{VHRJ{M!sQ2J#R4hDaQJL(8%|9Mtx`8GkSlFHu8JWn6G7q{poM1 zdh&XB)QGp*un%}#>GS)k7gs8t*Yi6Df7-*N<*P3oeZG0ND>*;E#u)w|UaRE1{(52* z&*$Hc*A&m|?bRK@fDa@_Dg;rB|;<7qeYz0i{j}`pDcS;@togMBmQ%S zerc@I=lo~nE1u8y|30F4o{!TUqy4{}rg$FDt&NK3>+!Tw#q;^`?{SLfcn=!>Rv3Kz zDy7f!IjunPoZoK^e;qwa&h>EjE1u^g>pw=%_fvmXa-N^7cPgIeKhv<^Y~&Yh{MhJB)bG8~jDadfQ_7>oNFbqh6gxeRdiCi;t@H#rwgn#`@i4 zoG*0-|Es5!J?~GyGwlCn)Mu$7pKsJ-hcTX44gU0A6_59W56@QXkMIApjPYM?)NiW6 zUu*EM8TGLY`5z7Wu)*JG=znO)ziZ@wo1uUDIittZWX#WV2LIatrO)>_UB-I;Z^M7L zF@K*J`Rz6AzqdsB|FOP*nS7n%`F(cH6vgxNZh=w%3S+4@MF#&@Bi>byDF1xD-8QIrKHmc(70>7I7e;=+GwiF4{Nk4> zd;a}d#RkRm_?is=Pdq(3-iror`)Qe4Y5Mnoo=X(}@cx%&Kl2WQf5PBX4L(-$Jr^1N z4LDLJ1{FB|uFYc5i9 zettatntWM@V0}KG_erTdI!p7Rx?bl+@0LBxPcisV&D*loc%RjO0mJ$>E$?|VL;CsA z#jlO>7og>yjcKaCeUHTOzobe$-lX}D6d%I#srgXNdo_Qa_RsU{d2RH3=W70oN7U~} zKhrPdiY6=m?_BT;cgpyDKf)+GskuhU`S(4HEVmt1ak-z7<>AjLdtMKWEO%)C{QD?I zmWOKp+|S5z&zmYf&o?8>!}Z@4ou@k(S>AJ=%1`JHMwSO;DETeAgOTN)e6?5d`7L^% z;Qf-3?R)h6oTED!Szf2tDX$AgmIoYA`SE_s$a2q+lG}6#Bg^ab`1$(8$a0S#xoxhR zf4<%@vVFko-(25-?Yh`1y^I?ZYon{`vaB$npR`a?g*x**PjC}L@ zbNI3M_>qVE@o)1Z_xkZ4>c{>v{dXIu>4GtG{erZd|KOI9x#?ye1F1pONKt ze&hj_-&`NhclStFeBEGV|29ACqeovq`MSi&_OJR`f3N$I|3KG|ue*%w|EGTB*J%HI zU&F}uztM8ucNtlJ#7};|()UMv-C$(%z$S zP4VMDT+6v`jBJ0EANvqL@-jdE!#`K+oAYMm_@REzulxMe*Q@Ve`S*E@?B8>mI)8Xy zWn_8JU%&bOV~?Nxdx0K5kBgE0Z}wB48Gh>P`Gv}Vs&>f8{=F^VTwj}?{pCU(pZ7gR z_J5Hd`Ne+Z-tVdWdEaGZ{{gzbeBLp#{1&}Fc-=Cxyvk2}^Y1^|j`1u%@x%SZ5A|bj z^CQ31k9>+BdH6eO{qp+~Mjl_PpZsU|@$c~CKj4qwe1C59Blr06AL`HE&-l*sGrouY z*gO2lf8@u1_`j+3f3}_wMxLMWA1XP&7hz<1&rg+nvhHAHxlRAQGw(Z$ED!ip%@43HmmvgG|9-&7#`-tqk;eKq<;8yF zR~4)J^LuPFzw+Ox^?89_Kc@dCKmJ>d^=aC78|%-Mzw5{UwZ`wOO#8Qt^T(85o~Fjn z*C|teq4E8;DgU0azD@Z8V}CO1`|}^E`s!^pz_d>{zMnPa8;$R4O?inQd9sn8Y2R(c zH}h{WzW+4k=Kf{Mw?3%q&(Arg+~59{Z_J-*U*tzV+n8U|-rV0z`DK3UWA1OJeSz`) zx%uy@q;#tK@cwPef4*JG`FkQ$KE>F-OnHK_Kbi6ijNjjw@=Bw=ru=kc|2F0O{MZK> z>({hzHGV%~%H#dm|HN4Trv2__RbPHiFy)8*$j{s|+TOf>sXJIIcUFD77+}gHjo*8l z@@F1W{`vmGlz;M+lJotUDbIaO$@%`tlwV?;pQijsw6f>>Y*T*T>TmY{xN&_j?bjK< z2R7v&`tjfH$No~|`eORu=EweOKlZ=!BM&itFKouY%8xwFkN+Y+_5Gb6|NH#df8r

1`zKR=w;%hT8~e9uZ(g5G`3HXd|HY5|AwThdZrmT3@q_%xXZev|YV3ce z|Cf#Z*OXslT)#~DGC%SE%a8p6Kk~JH{6B8ke`f4gXYEk?3t#_C`S*>#Z+pa;uX~N( z8|vHK0Ds?uePUc!*zVmHl@DL9_a!Ty?=OG6SMmJ3nDwdR`FrSa{rvCH=+W4tk>l|7 zB0OM&>~d)2e%51otd{eAR-jgV(6Hz02>*-8EN6T6>kH@T_XWP>{`x)RwEvO*_lbSQ zIYWPc!q+>-7US<&eAyq@@3;7Vfbrs)>OS85KG^j0w2${|*Ba01rXBN+aoSJQ_Ph=l ze_;F_3CA<>b|2qA{cMc(zZs`}kN*CY&nL$J9AkW;$It7WG0ga#r#WusqkPo=c)2={ z`8k^PO^o$n|7q&zeZsV3KGBE$pT}sQ>chVDZ598!9LNV|`mo=*PTBK&G#};xxjyW@ z#(M}~_Vcwp&l_XWS?c^VfA3-XDew{h#W9}$7yJ1B{_-bP{GXZu4gR2y^*dI3kB|KG zKT!4O_qs;dF|&?O)cfEu8yJdDjMKh#oc0fn)4pz;_Tl5S?-{54!{fA{qVETcY5kH7 z)OQa0_uZjde}=|6e(c{g?%(*|7xw7iJ==67#xDb_qqhxv{`ZI-`g^@8+JMotA2#gy z-!Jz2yK3#oe1G#>%LwtX0*5BXw?|E6-^Zook zYQO3~)jn)~Z_IxD#h-n6eEEMrQ`z%<3CCsh7k|5t=Zdk~zd26(7mW8|9G7ups~R6a z-}rl;VLQgRjr+9IjKBZ-O{4P9_tk92XuD>QJml}S8CmWZTXss7WUa{P`H}kGca`pE zTx~cE{f^S>*Zqu+i&Vcu_nWA@1H%8H;&0R)jNS@m{}=sS#%RV5pP=;mv^`_^pH+Xb zzM*Gya$t?i^!+zKCo+2U?)#RMpSxo{^s~PWsW;jg!1S2z~Em zdBpc~jHaHi-!IjTF@MLkD$nz^V@B_Ts{hBjpV5rpqkn(H-^(+adOmp{lfw2-dDU+`hAQ)z^mq;$HQpad&fEco=d-e{hD!n^1kx_ zLgmlvfzkBi)xV$O_04GN`Q&}XcZ~7;NgU_=9Uo`?GshXy6xKTrGReUs5N_qBi7#<>1{*@uqNK3wbZ`eZyMPhTBxjB%g# zW$&YYwlUT(^jUTOF3|oNZ9Bid-<*HjzbOCEF`oav<}cveDt~?-$!M0br$XsHsRfMT zkE{L*bw8syzmAX9{PFj7jAk64ypQ>tGRFCHjCcL{h;Iu~T|t(}iU`rOrM&9Qr)r`C;^-eoFVlI#0eoV04VJ z{+`=a{+DXcjNYHAe%>z_Pf5VX`f-f0e!k|-?KA%$9VpG|3%~P8RPj|FwXlQU+X8}*x0Vi zj$f+#q<_~pD2xH~Re!6lH=}tU)1!aC%ic3d`Gn&u$;ric) z;k+0*U%%*M{v6}nKRsjI|2F%$e$|ch{-`6sG%7Oo4+7+S3QXX<`N&3*~K=I?A}&({OSFAdd^=U=q`9Am7%ulW!7 zU~KEpqvP;>3!^zspS+Ly^^7t9DSDmozRBn_o+KE|#_^$t<=P8K=E%ocV{3GycP4v=0qX*ZD1afiZ@EU-hrh z{fwuqLm%glV~p{`^>v=#k1?JS$5)4s_@U#i{}}C44~=o1>ikdHpM2#%#_NZ#^CxwT z_4j4(8KZsYIQJi4@f~BVzfb!y?mu;UoIEd#zLuNW-}9Kd&I>JI^wg<-yY6Q+ua7OwO?U(Pn8O{3nvJcSb727e6)!sAC_0u!P^%MGYHP7eh#2C*TXa2Tv z+V_le{8PplzvnhJ{{PV9XAE7e`uX2MU^M43RL9}-j`5Uv_R;bDIQJi~t`nb^j6TAh z(tXP~^Y0nw{eSp4<9o(=|M&1Xiwl!XZ&{#jJ7e_`-~r;{PKEWG#7x! z$N6vS`QmqubN%+5P<7(>BaESA%-=E2`E&S)?`ynfzjvJL-`D(wj&uIQ$7uiRIOoq- z{*E!m_hs)Hr+vV2wXXQR6QenQo^h@pU-{Q*zkI!5G~);8e;<+aV?0GqcbM|<8`XKv zf9Jy(>Qw!gX*)*KzDL)Y_XkE_@y-4oAK$-Y8Xp8ubG{r=q( zs_J@<9ylY{f$_*Ve#wm{|2zXxGtyOUU^^d8Y2jE)%9|4ZG^c=ky{ zbr9OC^wM=dW6$%d|3=-{_3KTnT~>&3`=+K2kM{^((!0_OU8 zZ=Ba3Tdu0}QXPr0$4C9l`g?th-(gdJdEaF`bwEmwfA_|Cik^>-@b$`mnU*u!e8e~J z4{z}?|31Q<(j7id`@f8H{yrP0yLrUyQ!u zoBf_mD*uPIfH5>$^-tFQjJ&_FACFLaygxFs+(dKyo@!;kRx2`wx2yg+x}TBvSN3bW zNa^wZ${3*Ut9ZXKk?jL?{(RkLO!cvUndiUfe^mU-wL?a)kMqyGzJ?|%`v`5%*wd)` zE#1$^Sh{CsB94w&cs`MkMQ$Ggi<-r7yT_j}Y4 z`{TdkXP*7@Jh1;;#_0bd!@o_13t<0TpZ~+&y9P>zzJ;@JWn=&QTE4 z8O6BcV?unT&&d(gP#n46UVH60k^AJTa|&7otp3qa`^(5YnQQO89^YDPhvgsa=O6U@ zf2#BO?)SH!Z}pP>{DXe~hw|s!@9lp6M=GBO?DP2_>G!wim0Ni${?D$@gy+$Y?d$fs z-}?L^zR|aD;H&*S`}q%YUbn;jKL0EDM*IDJXKX*;{yjUt2VFmwx3Hh@&aeG^`+e=_ zj}Ey0ZMwv=#$LZc!0r3*JmBX)h~po-F75T90&YKldcgDjc7*f!<^pa%|MmlZ|5%W7 zBH;G(U*kOI!s6~V6Fz4m;P(CL0l$CsrzXyP48PG{GXb}spTF9yf7`EY@%^sv`gXJK z>^gdaGrq|=&+Xl>Hup>RVd6aR{Vh&B_@qBK@3;2BJ)ieYueti?Ki4_0{k_h({vYQ3 zHvW3xpRNAAm)vW{5-;>u&hOt(e)sk3@BXgU@AnvI{B%b?7^Ly`c zUU$EL~bjE+?jPK{1U;f9=>xZ22uQ_A)?;rcRRXg{@A2Q?5;TzrYBb?XYbJpDN z^ZoAlvh(^Iobfx}XWsu<`^7%bJU_|uegE@I%y`JJ-|-{n{?Fy{`G0L*w{ga|Jjsl| zm|y?hpEmd3z~gr~fP7>_xG=^x36)|XKX(BEA*D|@6EN~tK#Q!`hR8cjIRw}!@uVH`KtcLjAOo5eDzy? zKVKWZhJVZN=d1cVem`F;zWV(AGQPUM@5`L$Eu8%c^Lwoy_yd>B_<{V!@V}a|^&=kh z=2iLJ%9JNocEu0{@#-uedd1u?{N0l$Qgg1GyV)`oIB%}I^$!`_@U1D zH=Oa0Ipdi#{xWC$6h}Vqf4z~XUEe?A*rP`{WB2>N%&`wIamL@|=*Rav@_)1Qeg4#$ zuXj1$&z%oeHO(>HL=a{0ryv{^7KFzm3QKv-3QaCp+KwlaHGFt-tdQ=e*3lj9LDX^jrV`y2Q0@#xBSu%JW0CsBf>e*eXOGo-rwa)kr&iIYa_&+$~A8^KRamFW{ z@fm0Qvb)Usw|vaYo$)U^&-;0$^ZEtn^_esNNoV{{XZ#Ll{8nfDxc}FDKdbM*#2G)y z89&7tKg$_E&l$hU8Q<%S?{UU2bjF9A@i#i-{r12U_Pc>!f3%&TeeS=XRb>0z_enO8 z-{-zZ^_9X^?!BLNh^}&ve(8SJQQGIePm~gJ&ighkA?DzA_=k@D_`ADS*Sm7`^nPJ@fpWnoN&%}e!27fxmP>m*E-{$dae2U)*gPh^Lt+HjQ@+{kKf?f z!$&#x^U03=e6KTpwqp+;;mGS5&iFyj?|q2#dmiJA-}am4_gR10&YQhnpFblX>(6|w z&7Yme@B@a&virzh?e+~n>)mv#wg*C z@`Z;Pf5UGW-0G2t@$Yx^M8-U-s73-*uGn z_e~9M=PzOWgP&%2poj2$9b^3c?=$y*I^!wh-{9!w*W3FYxqTPo&vKsElQC|WhrJG3 z^Y?7t>hVsz`-rER?`iW+KXii`+nC@H&fh=sfYsl1KZnozd`Euobe^yG`}Z^Nx8LWr zziPgpo#*!F&DgHvd;i3Y?fQ7#&zP}YM<*ToxaF*ypLd_jWn|f8Gp7j{yb;=&Cd84&hN{d_4!CgZw;Ms<~(2V zY0l?=r86El2c2MkN!C`zji-8$;mg|aNfLb^_%tE&Nz0y|F1jGS9z)v zFC@rW0#)b#4qpv@zvk|PDfuo`g>P@|4SYDz1Nxl3yyw&L1o@= z*TXBE@rVA?>g&gx_4SR8{(tB%oBORk|6FGrI`aE#=lx&d=<5eMcJlaJ%;#Ib>mknk ze!Jt3xX)|%-n07s?seY(gO2}GJ!VQvy_lH%gB@4SxN*kndsgrFopI=lV`rQ>L>W$9dcgCSJj-7Glj0+xzk23P8IRB$~TwFAN&yE`&+xz{0Ft6Kj=8PL2+xPpI zRzELx#)UI(oUwm-_3woraz2k=w|}p2?l1U$`+b#~(>k!@*cn&O*uUTE{TYw_#~S%{ zec3F(#`*gV-*3O4f5rL!&bV;KjWhOV&ikEl;fxz+?Ei@KejaD;?{N%+jSp{h{806Y z@1{F#oMW%{e)};tevF*=hxfnw`|bN|eEFm|n0;^Ugc9N{`}ghp?A3jL`1kLkuW0=w zdv)J$ z_Iq1DKflKJ+wcA9ybw-bm>&C8^(y4=~KHJF8+97+j@3+6- z;*IluC9EI2-t5(`mp>}a_kR$}BNXh^Zsm~_gnefzxN^M{nbA2w{o{} zoLgs9{gIKs-5>7N?*H;P&eA{azOwQ4j)0fHx&Hp}uh-*0>G)p{;Xicrl}6rH4i^8> zm#@b!yujdg{_XcXE#U6`HokN3x40_@yDwZhSiErLW9Oj}@C^a~VdwkXIDS;G%G2tJ zKXUH3cr4uizl8gLYP>4XPvd!ci4!kb{12SZv3lqI0{+)`n9sNS#oqs?&i!`%ze>QD z&gaFP&pO}7;y)tbCk6aJ3HZMk@Mk#kw14-{1^oR2{+<_^dAIMk*S~e-Z}IOFzR&A~ z`#&W7-3v~h#eV)*3HMw5CtdA4HO_on{MViDZSh}l{+`uWzboKB>B!68|NHkCIa)ho z_t75<_~2f1zg_S4{y%t?!R>mta(S3jmum3`I(FRRpX2ae7WW*xYrpRe0{-V0%=fYT z#@_!oZ#THz-`($U?4reg`JLu|tN$#1%iQ2r-`L-MyMRCUx6S=luiN{-@sAB|^}5AB z<8KUZ^|aL&HwgHn@4w1N+WX)0>8re>)h{0q@UMK7x!>~0_Wn=%0)u}RFJ!BCZV>Q4 z{1S7&o-g1(c#FCJv-$hj`=_@V{Naq-dHy*8fBjK& z|0A6HAMsLy+rA4s|Np0e|7>RNw{_n3{y%)Z!5_t+Z}FFXpTTYYtX)T?fIt3+&HX-q zj=le$^9KK1#_jt0UI9P-L&HZ2C-2d-C(bV&PA>-CR`!NUS zm(>%$+W5#x$ztqXMeTI`yik*DZXFbTg z-^%~Z4_qC8Wn#v5U!8Ntf8o@3|L0F#egD&LGGnU`9`5uJx#Q1we*c3VdH%{LuYUgL z|0^@L@;l|^U%u9n-xGhs$kXn-2Ricl;9r{8?Y_C>)XY=@V zPCo88o%#Mf=kq@GFUkh-2YnV^PYdm z+;8V2cV2(%yUgcX{q~gKHTT>7{+I7IW2-NI@V#bi^~6iQ(8%YDSRT)E^x(^#zyGiw zGw-*0?~^{!jO~7W<|ED6&hKG|Z@=Ko*Z=LT-!F3H{aR-~e#;-M%JV0F-uykQKmY72 z%-HIS|Mprlw)^@0-(%iy?et%Kt9kvi`S+i9_Ujiq`sUgHpLxGsk8l0oW^8}|g^Sb^1?{vP;mpJnHgfCwGyw`l?>iZw^^=54C{x3N5 z`I`?juiN?hS!e&h^zo~o|DYW+w(@?cv!5Sx%)D;b_n9ZGzW*QIXvWqqhtBtV-(>am zXFI?DQ=I+lzW>R;W!`Vs_urp2^JD#;FL3@|ux;+Q>*K7We;)GRSLgdbI`aMT?^*r6 z?{wzp0Z%rs+xdLf`_1QBef5YBtd83Unf>@UUO!*$%t~#N(hHpV`FSTl{y-<+^XHCzy5nce@3Vf*Bc1*Ju$#^6R(~COxfxq~`CR9I*B*bB zvp?VbOGaK+-(7arGmE9W{97kZ>0WUD@#Rjubj!D!zhmPpd%Jtz`jCfk z^#k5lAMn245$^jfr{2rT!M%Q~<5&Krvo7uZN1gjD?p}X;XLVh>uiNn-ez&>L#={nO zufKYi*=JS{yRX~vE1dkc#og-zoH_&dbvu6CFCOf7yy<}Vz16W#_V2jY3rq8NtzLCs zx8t8W;C+|hYd+7~dHa6%`mO_h-tQjp_x_KcF@M*_&+gx|<86mWx43(~J29W<>IwJ0 z69>F+_zLrR`>nsHZkziouj2kaJATgr|L)%%@V*y1{+<0h?)5qUV7{OA+uYaf_(Q_J zwy)dkJqP@|-|d-wY5gtxe)swY$FFx^x8vsvcEG-FukSkG_j^iZs@ZfOF>iS%1@g-HzYq z_-z(G&Q__q%Dci-mZ>+Jj8>j{T%cVD;Td;iM(-u?8hy?@Wu65@MaxDH&G zz;y{+m%w!iT$jLg30#-JbqQRTz;y{+m%w!iT$jLg3H(cuKp6iD{Zw0jXRnjzug9CC z>+#_|>+$S6*W>e7tjE=>*W&{L5C5aN-_jiRTKv#@JbTM}yb$n8z#9QqKfM0)eF3io z+&{kla~c6xC)VHZ3wS8tv4Cd+UI=(4;EjN*lfw5G@aD(O{WgDSul`%tP~sxG&&C0S^UyB;c`tCjy=c_(Z@9 z0iOwYCE#-bZv=cP;Og51`3tx&;6niq1$-pnv4AH6o(cFwzzYGN33w&oa{+Gzd@11S zIfDEJ+!yenfQJG;67X2S69LZzd?Mh5fX@WH67aczHv%61u#vO%@9i}f@Jzr90dE9c z73=@5FW{ko#{!-Scp>1GfHwlJgt$Hw@L0ez0WSo+67c17*6$Y;ug3=h?hE)(z()ce z3wR>nnSf6Oyb$o2fL8)O7w|^FmjbSC6XY!5zJLz}JQVPefX4!!2zVyo69F#-d?w(P zfX@ZI5%8setLF;x7jR#|hXNi7_(;HG0Z#-x6YzUKf?0`3d=P{2b09|?FY;E8}| z0zMJ&LcnJNUJ3YIz#9Qy3b;BV$X~#H0Uru@DBvRjj|Dst@Jzrb0$vFCOu#Dvp9^>+ z;7b8l&llt`;J$zl1w0h+k$}eno(Om*;DvzC1iTXPxqvqUz7%lv0zu9K?hE)(z(WBa z33x2viGXJUJ`wOjz-Izp3HV&V8v$PmxEc%c7jR#|hXNi7_(;HG0Z#-x6Yz@@VS6D0=^V*_3eWE z1>6_#p@4@1J`(U)z!L$_1biakg@Dflyb|!afHwlZ6ma!ILH+{n3;0mLLjfNNcr4(F zfM)_e5%5C5X98Xc_*}pn0bdHZ66$#d0`3d=P{2b09|?FY;E8}|0zMJ&LcnJNUJ3YI zz?TB9UL>q@0rv%bDBz)hj|4mx@I=5f0iOtXA>cCsuLOK9;EjMU1zg=J$X~#H0Uru@ zDBvRjj|Dst@Jzrb0$vFCOu#Dvp9^>+;7b8lcM0+ra9_ZO0v-zZNWfzOPXs&@@QHvI z0zMP)O2Fp=-U#?oz*Qp1U%-6<9}0LV;3EN#1w0Y(Ou#1sUI_S1z$*ct3wR^oO95Bk zA;@3AeE}Z|cqrf_0gnYd5%5gFCjwpw_)Nen0iO$aBj8H`S9c5Y7jR#|hXNi7_(;HG z0Z#-x6Yz+;7b8lFBRl3;J$zl1w0h+k$}eno(Om*;1dBa1bimom4MF$ybnnSf6Oyb$o2fL8)O7w|^FmjbSYez$>u`vN``@KC@< z0v-!^BH$ANF9duh;FW;S1-udPrGTrK3F}4RK)prZ>7jR#|hXNi7_(;HG0Z#-x z6YzJ@_g1>6_#p@4@1J`(U)z!L$_1biakg@Dflyb|z6z?TB9GC|G)?hE)(z(WBa z33x2viGXJUJ`wOjz-Izp3HV&V8v$Pmxca{Y`3tx&;6niq1$-pnv4AH6o(cFwzzYGN z33w&oa{+Gzd@11Sm4f^Q+!yenfQJG;67X2S69LZzd?Mh5fX@WH67aczHv+yCaP=xd z{sQg`_)x$@0Urr?EZ~WNX97ME@It_60$vIDT)-OvUkdm?_c=tzKJ(4pSJ)i9SyjLK zx^CS6#|w|#edm#*U-E><-+uI{#&5m*j$=ojcE`~p_TNvr>&|=bI(p<*J-+RZV^6#5 z?x(-_=&?JJqes5^x!-=|dB^UdcbQiX-Erp&EDrdVJMKRA;@ghi_~IjXf2Y2S$4|Ta zi2igQef80!cRf$Pdidx)-M9MfOt zw&xx_a`=uH9l4wCIdbggJIA-(dHc~Lw?8#~-jU?k9e3S{-*Svz#yiZrM|a4Xbf684ig243GIdtr{V=pF|ebZgH-TqB?JooO~?*7iN z)}PuNYhmlZVm=Cg>)4T$zRB0E#}0kxJ;#o`=(IHNC@51wQm^Uz{Ah<9W9oJJNmOr(hu*JF+t6Pfh8s zta*jxY4F|IFypVkYj-Y2cil}=HLvJJuit1!H2LOpj^1_8?)ShCzlEgQTVi$v{9EiZ z{omK{^(MX^nD&Xi}WGdpMIXX-P}nZ=pqnf8o2yK#1K);sH;-8?%y8=MW# zZk-*Sjn2kr$7hqX>Dlb;_SwnV{A_V{dUkfUJX@XJIXgdFpKZ=A&MwckXVr9LI+%J> zf4VsxPJ?MU-I|W3(KMcpr^z&(X4CEIWSUQl>2x}qmeXpwGo4TCX)|3+m(zBt&TX6< zob%54=Qhs`&jshgb6e*|=c04*x$(K=TzW1$w|#DME=*N6ki%&N-m|BvP;{SCYSO{#ii+`*`@MQb!q3){8D|XxwN>nywqM&mp3jC zE_;{#%bS;nmxIgU<*m!3%hBcd^7wLcIlY`+-o8A!oL??3PcP3dmzS%{JD2B|>&wmM z#pUJY_OiONabk8hFf#>arNWFfm<@%Q@G%P^W*~<2Gf2LG)GJ85fwUDQ?L*2TBpgG!86;aks?}vR z`(~w$O-_HWroX1w#E@1(Li0bPSzlh%b3LRPPH0|dG@HvydJcy)a|zAYjAm(hSzC&|?DZk-@PzjDjCS+#yhn2% z(aiso&cporJmj4X)3_N5y{dug}9r z#XJnJ&%;N>JcQTh;iF<6MkDo->v0_7_FC2I^K=Jjul|U8n9qG&W*u#6=1j;uv$94jlpjekVykx!w07kgU=|yWi;S1G_MeY zzbL?6G~g{XpAdtu&|HP)DKw7|gP$nCO*CM6G=C6-%_+d(G+=F1GEy5@aXxs180<^| zM&@6n9J1?jp!G1hE(elBaa|51huKJ-fo}Zh)(@&0sRu!el_#nb^Aqg}b#ibrI2oQC zolH+=CnqP%lhw)gq&gLx3QvtrrKhq}lT+oX>eT#HdrF-ioDNQhr$?vL)7k0C>GE`S zdVab^Hf2CLlo4f4CX_FkQQWjZF5-ZAvWMUYnxY1NRH2Wdr+RSrqjkdp@~MUYVr3DuB~hYVAMtWu6lQjP49 zhm28#EK!ckP>pPmhYV1JtWSQqQKkQQbuAdVrN3k++i4jLxyTJ<4zdG^-P=@S420 z_PCze5mtFl9$d+~!Q_>X{#57v$vOm8=gu&Sj*e5$4zp9%V8D(h3voh?=~;_IyAYtcbFXGw27s z8V1l1+UH9tTUC?K7f^;O=loH7N$-piw1oEiO6-gQv_wRnUrM`Ut~JHrM)eKs`vsJj zn?P68M$q4gQk>MUq&DtHJ!qTdvj zv7%M!lV!{(_uJ5l3~4FxFio~=MwTI9k`qis2qczyj3Jhue6}0*k)n>%B@+w+) zK3T?$)?7m?E~NEV&}vgu3lWoLsmQMQll26q~8Pys!WZgolBPytBNKuVYOcg;D)&KZZ?UPY$Ph;#^cB8sK z_Jy%#1y$)Ns>z9|0;f8@YsIn?+J-gY#@Z7hBCd$Iu@dovwp}r}v6LdMnz*rmVyv9F zv6d}XLDguAYR_V-G^?nt%%>`{jB3Ujst^mwLKRf~rKr{`rpm60>bQKW+RCU#tD%al zkStO`)mDmXt7598s;F+trz)w8YN8sdfC_sar<&MZq5aL6Dwis%Q}U@QDI?3%fFo>= zhvZ`x;0Q}Z4+HFr7#v}WU7>wT9~@yoF=zfUxGz+3qxv;w08-i&HSG!yx?XGg8gm&S z{>kBYw1|Bo@S7##9uKuVDPkV2*NrwC!?P%nb;+>ozDp)>Ujq-|bvcvm4dpN$-2G zfSZ_I{mZr~PS#auM(=G=tXv$QB9>_30dG*e9G@5?mMF3JcQDr;G~g!dz-`uo3(R-` zFL;Y$=i<~9v))1vY*73hpB^KYC}AOYD2CS6nlX98+Z0DPsK)dug5085xUffH%r=^9z}gA?ai9@W?PSIXV zHY*~VRbp=D9Ob2Cvud(g0mXOPZqGQji-^D1>wL~pT}su7HAQrKeUCVr)3Y$3c}Qp` z=3Eb`XJf)Xot}{q&B=`BWWZ6Jo|ico4r8%A^5fFp?hGh;%gKLhF-HTA-Ab}qdZvan zR}-48B}Z*~#%3I`=~+u?-sUuOLz=q@$7%sZYI+7|%zf!uOgKu@Gdbi4P0!|%W^=^R zS&Owe;K;0`icF89vXrVYYl_GMipO%wW3*s;1{{f%V0z{pg{5G6Cbj}{X*{`rBCwp| zuNF+tfMc%`OwXL_9aAtp6OOt9in(&KSuNSDh-_9#Hp_#K8*-dglg$dC=|)`3*h1S4 zIKC>O@#Y*`X{|TmxGJEiDyNvL1?M&3c&dcXn{zCcQgv!gaa2H2R8BEe3q3dB_^G7I zQ;%Y&l&VeZb^AiyM1H+O{cZFwd0z}}B2Uh{zAyZn$dmh6*%ukr);I9pjPGW4!nLyr zL61FD!<*Fi_N=|mbf#qQC!NLDnP06lb)|VmmTgKI;Fj$EptJl*XZz={CLZ+YCS`mcm< z42rI^Ky|$Yao0VdZB|YF0xG;o{V3+d?>Ypst|y@Bx&Tbv6{GIIAQrMZzC*UmL*4o& zybc|MWhb^d4r@*}ZgD(ToSZT*sZMP$GZ~*6b8J?f+JS#EAl_n=W3=q_Hs)ha ze(i#J$`GA2S=T$$bloyx*B_(pptb=!%v$>BfzkFbg)P{IZ!;%*u%P_Dwh3GCb0)-d zOqsz{=w1oCewBh^y9ymD+E#kt+%}oX%+Q5Wb$us3#d;w+O|q`Hq@kEkp_?S^`bUbc zV?^6hZAUhl+04)tqHU_SCkv_%(0gZ#Y-p(M@VbyJ&-1&KUh1Mc2Whx}J@= z>(bCRw}$t;V8$~%u|>8w$1a+3%&1OoFz*?k9CPego!lW??7=_VoF0?|YleX2~Ss%Skao5dMb^S|z*Rhm!JxWd2l@xY; zNJZCqq;0uJy+(1@T~u}bM1I#nlyyBr4aKAiT|!2;nTTdazMqb1G+XLZRFjZLuHzcb zm^KvI47sBx>w0*au4^ak`gDq}Ge^ZYskhO54T#s-B!9r@J?$&k@ZuL#?_%_x_L+0+ zvngjz6vaCu@*BtGKbIWy==fIaJrm<*(0didxy{K1$GRcKJ`;)nrsP+*9RG|c8W?jn zrJ@*Uz&&em*QKU??V9@1{H_x%>w3?cuG=i^`pb&0qfB)@WO3IuR&{-1e%Be6b-iFs z*Zmd#^XtXrCiR-@dJ+EeKaO718qw&&mZA!;%kUT-=u^*|%5I{HFdueAGg{iZPr!QD zYjRvA#Y-No>y&JH-9@@4v(-|x8|{gAePX+}NVjBc3uds|I{H=I%NSC;FeVLC^m-N* z+k_!v`ncDdSP?J2AWfsKc?!EwBcjsrl(yRXS4YtNDP^=wJ}aPXR!)|=y`m;JsrMk- z*B)a;nJgVgc@#&bl)m+T)6%jx93z zDU+QtxhZWiO;$?V$(%SNEf0?*Ve(KW3l-4sHW?@#H)&t7g&vK-3str!vbaf|$FI@f zb9o{non>Y*BD+$Pc8bXM*JMGo-AFjfjmTD*NIxQbUQ?A`L@|C%mOBEAm9S?Ok&Uh? zl8eZX(z0J()ZZxKh+a!S;VgGV8QI!Y;>~VSJNTv%>1nNOk$<{u}&qxm@b9m|{4Pv3|8qh(J$CAKE-Dl<~{%(c$Z9$rf9UEWm`q{PA-*3@2C%27?r-tn%F zbzezG%cf=DHsu->ZG&_Sl9HTq<~2RYO81pRT7yH1j)I{sa#va@vAa3Nfhk85EhMA8 z(v-f+^P9z6c>=8d2kag1*-$NV`bhRrUqCIWbbB@kE zu35>66)cG*&SA^Tu9hOFe7{GvDLG|1)bNm+;rDsOfCXJeivFDe{nC=G`1;>iQ>}XR zPig(aLmwa3Z}f5UJK{s?v4}&i)f;IM0h)-tK?Oj>oXT!=?o+laf#xZ23W-@~?HRMu zQe+c!u4{>mg62;mW>5;87gCeo)q+3S>}uz9j8K!e?Bm3bi2Se=8KY^(b7{|5=MihJ zQS!lVMa*v%IEABzch;hQZnLXWvb+9vVs zDYVJ7tDuYEy`>aU*OWojT0LUcssR5{GXt_4OBWqmWu=%x%jgKY1>>>V)zCH2;98Oq zF@;)^hLh6lhL)v~r1o2PC7D9+7&#g##>mf@D62hZ<+m%n7P;6>;s|#o*j}*mOQDHe z>7~R8)?h1I91vTKEcXyzXP)!kzSwC7*DY%zu zS2Jk$W9_V8ybw6r}+7*?+f9mf@yQ&grXGYGhTsr$wudBXf6L=5%tgYgZdJL~E zE2oG#tD56@y^a#BBr7AUuWGEP_H;zM%Sy)VE4`xzs9W2lzO9tF!YTD`wbKEz@tf4Y zl@hl*r5>*Koc1C&sgElq&S^@$T1rreO)PemQ(8O zYA(x1dkv(fhD128jLjIXs5d)f}P8j4YA+AHY}Do~quZDb)dKPgU>N z_JsDwOl~BBU#8g;?Wvj-I)JaLJyj$933!4j_s_Mb24Leixr;6(Z*|JObnR*Fvu<)n zT}piXl>6%1GXt=@`rInR?oQxyO}WReKVu0P`3Zb5GiOV9{kyZ4KqF4zlbLzbt9Wxok_c&>|E-7l~SzXfq@@VreuCLBKzK=+Ht_1a6lQ5nkpqyinBcOeM`zjMZ}`C z6g}kR@dlLTGul+m52?4n<4q~L(thrc>#dEpY$-;_DZ>y@Cdhotlwu-}y!Mi+JoHXa zxT+zi%8r1t_{LhK6c2jjqnDJ4F}lk{IXSV50cFH$+JPx$QdDzDm7PCcQngA%d#a^K zCZ|{NRBz!>9UT{MjkC<`NLG}uc)hN#B#}DxwUNCLQBTPk6J1zBGi)elUgz! zVo5EX6zgzGal4j}N15UX`p`-#q^=V!pB(mDdp9k4d;xM>8EHN(r5aXS@23DOc1-oe zyRz~SYev{%DfxXRa*(=OEJWrp0(+^YW@Of4-DtUuSaLb+bwe2uZL0&+D`lkJD&&Z3 ztR|l_jxnn7QmmiKM|1Mto%Gb9yGhSO5jdpW>v8FNkc99cz${FGjO5nCVaQJ0XkA|@aNbFbx`Q_S8V zGo|Gma0WO7JDp=aTE9BLddwi{3i+rS()KupkC8!4A@7RvQ3~fHdeC1{=V5DUw^*4T z_Td&uJBPGO?8gQ1Nde@o*?b@NU&}Zn8&V;wTSLYs%8!wSPa)%qa=HrHK@U1Frv4u7 zWorqy%%Frg5ir8u%_;hCz;U;bb-?-e44K><(rzGUA2vULtTRZt!a034B(40z>KLT# zffEQ|>&GPLl4>9n&fN2$Gh>ceN@k)$WNfvBbLgiMmVMDxzh}t%Y3bIm=`BTlTDmDQ zPZjd&HKgl7dj-(_W2&JlA>SIz(+1`HqAqqRA>S4Zl!uzKEs}0Q+4KhIN^0o_+(VTi zlb%Dqb6FsV+x6vRB2TskG?@Ulc?v{myo)me#^$+xI&*z7tJb1;58Bzq5h zQ~=E}CfS!@`)aU#8&uN}X}e4QzLtFp*?Z6*TNF3uh`>wej|Is-fb1jGHEt7ERd_B8Lv@Lk zcEf(YmURlvoI`u;P^QGkx{h&jWeQ1`(8@J*#|E^r4;iNvfomDJS5$ady__WML33=8 zgmXx^gx**X#~MPu8P1H<60W;QTuV5GcFrlQT|>eibaMcmF(w|dq*@+@su2$ojv(Qb zVsR~D1?h&UJ<#&aA>R@@V?pu_Am0cYW1INDx))UikZ?vh>~ym z`Gg}ZEqg_^Jk}l-RAbP!p4iBKk$7Cfdcp(b)I3E0v2>Lti zEM*J*?LnJtv861bOBQS=BWUk!vXV8lH)I_jR!@VheZ*?PzE-lNir0FNoopQoS-=bF z+sBABcT0SemTyKeSk<$P0W|lRq+3FB*U;P>qFv0%e=es1SwbCC`D_c*J=QRQrWlhP zOUSW?X5L_1m=fPq!V)UT&|1L)eq7%MM$i=20xo+tFkQ8R$zgRTNpa{{!8v>l)!D(M zX9-(KaR6_lpgc^&RxluMJwnc5n=Iij`x3Av)bUWow$MjR8?4yE`5tT7LY6v?4cQLn z@Id;OP_qku&lYNKq3T(~p<@r{jzvry zo2XfZzEzw#c5&ob#wENG9}G~ywo&s5ed{=M?Bg7Mi9$Vx2hSve=GI(70Vbh@m29E8 zHIoqbEahy)R*vAAWNa;K*h|eJ_~3y8wwRhhsMuzD+*=#>?B={@IU{C)3UELrtf!hB zR!^YW8NfRUd)9N-v!4O<_o!z>8|r!T!TbblLnn?E9Ujn*wjZ`7O{q7=T2h~?_u>QE z(bln~t9G;{Upt3}o?Qy|#_`2rb?P5Aj!$VP>$Ngu-!&qSwS_($kk2%uYMv3-ljvPI zVgFOlDY`;thlve}h|e=SET`P2p05$-9a74bdX&v9p{3@hB50?CyqLk6pz{ao&KFEM zQ?A##*Li^@b-L8Vp__HxU(-3~FdO)OA$8*=u!!5>#0tbVW;I(zOzZWG7_k{N`wpG7 zt$VtL@B~M&k7M{GTEkaVt*SM=KCfIyI;-4fg?L9*hgIFJY^~|H;GM)>#p)coegS?{ z>wB}h6X^SGcqv6!0XblHGwiBXXNZAz&;_k6fKNH$5u(g7{1t5jDyo89!eiM$@1x&U zu4*fw`AuyJ6jd8*OR$9qKc-%=8T?0W3l@m-Rad>5z`|}L(l5H~jN>T_y4eHf0RfTHBQhGg=d8y#ek(TNdMiYP+I2>#D0p)|O=p zy}fZ)K|Y6VSs>G?sJm~3h#-M=*@n+lbQQ@1*cZ)OYa5dhccU%L4mgE|di{p*Otp;} zgLTXhfmKwMyo8n6zzGHzc|0c{F`^Y@bZd=hWqB&cdYDm0DPe9?>(%91?Z?fg5$#N)^J|(Vqc>I57`vdB_kU8X%U{dOxKVtEI1H z?>P+E1o3Q*_1Yqi+QfPdd*`%h?bBio2H?SB>Uk)TUnx17^^p+^XoVWfmOFDXf=`sQ z)@eAF)hpCky_ED#$?TZNl`t{KRTJ35+VP1-&^S3+@3M;y28gjDtjZM9n|5cp_|P(1 z!=%K}=eGWJa5J5i?Q@hh0;AAp6SQ`Td$GYBGw(U^>;(Q$)ALfbmC);d){C_U;1!}3 zRzd5M)hJ;Cc0uohWsm(GfnO-7V_s{ImLrCU^IiqAUL|V~V-aHZinR8q9p+5$jJ(I6 zThAzRyi{!s{N4`HI->@|&_Y{m(it3DU*y;&C1ztm?3uRe{YZC?72M}^wAQazxXKaO z_JZ>cE!fJN)pvCkyw94=VY~evA3OoG(||Se*&`i6w--IOasbvn?lJCj@Mhi$Yc_#} zHv6>g;$E%GbL@$-<8}tn<1sQYDcR(bSz&*Lf1iLq)BC#ZB7_kva*kbILiP({g$H04 zVy?a@*?aOF)^dV9QLpd|BkYKx7a0r?8^=A(G{;WxpeX`KeN0@M*3UKeKnuBVb}Vs@ zJy3Qm!vKt0gk6w!jM^OgKn-tJ6V@z2#}rSH7p|dYTB=P5*l*GrrzFeTa+DlF`=pqG zDe>{zwrWijU=GH_tWB^N>J`>_gq@IsT`N0g=ipkYp>C{?Tr1UU^wMf%ptVv==WJ*n zsJx0!GJdVLlmTN7xEE5%e3QNU*{DK1#2mGjlRSs>v|6d{cnqtPO3cRs ze39``BWR?Qd>9YbI_PY*)kI527ZockhSo(9do2ZgmXdu@S06P!*2rk1*{(hs8M~mU zDm7Z+@r_0r?$JrhJz8nDM=vFgX7Z_mS9_Q#Wq@_Ie> z_CCrL%@mO@l6I`~93G{lot8cR)99y}qoE=vlclwktE1Lws2S@h6WLk5f^<`SvpPY0 zVc6sEtZrI5+Nq$vQSJBlwNtW2KMmJtsAVs+Wp&id(NfU?y{El;DtFjD?LS3pJSY#b z+rfOO5*B08aZ1q|ZRM|IZ?*rlS63C(E81{&alpP)vahbHZ8kT#Sw)Vv%HcyDR9_9b zq98?drZrX#U&_^4`GLGC@ASd^sdc(*ok#WIYA>t1O3p=ki!PsTjy2Ftg@Tc zd)X@Y*S^WL40=(owghJ7&*7ae5SJ*Jq@S8HuikY1-=&>1E)&=E!=g7(| z;6Eu;duVB!ctTr=DKwRid~0Ycvmdmj7=zKs@La$g`pU$31Fp6UIZtM6_`JtwXbTdP z9oN=lis-jmscjhbV&5D-t=S<1*brTP7jh2X?2yA`$bz8%TsxXGmV9xa1~y~`81#U6-GTyBZvQG zc8&IaH!;5RaF98? z=w_w9GURF@hp#Hk>}tNsL!2J3R9IFk^(`ZKaASCI8Rx1S;@Jm17BYe-S5OXWj(xj; zR#aS56jRQ0(qpV@>|dXJ32nK?@aeLy>Sc-S=>T#6CUR0C=dq1XG4Jt^9yoxQ;++Yi ze_d%=t<)TidYqNEWevqW+KTDw*pMq?jE6DDzFlB`73a3&JxpYc{p(YA_6Ur?81tKf zx60x3HG5bqZP^N9t>%bB7nonwZQnLA zzhRey)xO6ZvFQTytGb$l1ToSC+1M$v-<7SXncb{@tMf%hU<$^V-wb@Dws+U{^2fAZ zuCD9lZDKAyF7@*Kx?Y|k^7}Z|%guGY{Bi3qFR$z6k7K>8ZlP%Cy1)E!=`Rm%x$ZB2 zyz&_SEtIdj&SQM!{_<*$qjqY!TdKAwsSYZo+_f6sqP`dP2m#f^v{X}BQvI*tPy?z| zZNc^oIH!|RU2lMzlo98UOUfFjRO1zZeHn4?r6kTWr7oZV?8%6;yCvmNQmQ@+&}kBN zyw(gklNNRPw@{s}>QxpdsMRT{_pPSNE6r#Pku^!3`tT*#`jD$WTW}m+$6h7KmQ++{ zrJ1XgGb9z)*lJ!Q;F|FEw4yUkLhg4+kRPd5`gn$@V@Ox(2$#s)hTWNREmzrSCaUB- zt>QY)Au6TfI`?-&}HSR7mx1 z8CNrFK4J%qgj%V>*L=h_7>UX}yI^#ST7ZeLc5}!TZyBAcX?dn4vLhR)w+&b7IcHoQ z)q*9~Y*WZRKMArV+hE`;s*kcv(-2JY7P#V!dU`9ayVaSJ4Xmz^o_vro(=@|s+d*Za zqN+E`G$mXiRdTI~;*OvpxZ*9W$CRt2DrTFOSfLxJiw=8rxHGPNYq{>kvP}s(DYnt! zTTx_V*`^`aNo6aYLQAah4fIrmE4^bdy`6V#(~^1sZc*>VJZ~Ti85WvxvTV}~ zJ8K8$I;xd=>V&HrwKk}`EWi*MmMv6*X1%)IC9=Z0{w+kUO2!rKGt{f>V7Dpc04)EX zVApNqT%8IT0L6VqL#}5`SGwqys9M?Jr|3l;`#YtV$4=L8JEZzZ(y$) ztrm4v)-$eRRABrq+n=DKVjFw4q8diUeWOFJcgt3K!IoT^sr!1!xy>gMYhCG4rEfs> ziy3(SzRuj>XCOu$$3H`Ud552a=ylccT8D0(?4HX{zLhT#uT91J1iTy(Kc68`za0`2D>)*Xx-5 zU5#6Jy#BD$w>i}-*3ABHpl&flZP;F2>tXh`s5T~HOQtCp3T7PSIp^K9UEYeMpR#%bJgDt z_Gk+q$=jo4%Y*CL$t~(K>)Aliw5_0PD?0U9amLl^TH}f3UAN(`z8$U6xGni=yIQw` z6|MK^+iayb%j#S0)9ux_t}$z7Ih3xYmRK$tVk&eh>+tD0tZ)h+5}SSu0bVvTP0 zsD9VAp7omA>5?nr`kqhGRjp@xs{8G(i`VACwUrDh-bmPQE%sDSkDMxp8EmE5h1N>O z-07}ov{{=g)!u7Gp6il*9=}(&yFL@HEvAW1tl!%7DuUvblZGnp0o0z4*`wBG7Tjqz z*HxwSThzaXc0^C+71WCRE?6J)eP-3r`TCnCQf6Q=j_+wN5S8 zRyqt(2cOZokTZ@>8tx_@bd~TEr;bHy)&O46UajhJm0jz^AvISs_^4$FphZiHA9Jd6 zPstCBs4^~~`cRMh_F9VYYO11A%`IvQSrvQg*EUh>p(C`6YNINy;OYPV*r_O7aGgi6 z#$WJG`zw8^`j@ZQQ$^Q@6qaSO##8Xo zrxBfxS2`u7Y;Dx-qbn)iQ=z-y>Z|~>8c{z|&NUu8U8h;FQae5EdXl_7 zQCWei-5QlUOE4im>N^5vL&jXcv)2pE*VOH9u5_8XKD|#JNh#)a3Xk4I+6%7jSQno) zsN?nF(f9S#6lWJy^mGevkMCDdhgrMQTQKf=k@i}g81?S?p8D!duIWhOOXPbz37@(K z)0L|Ch3+p?x2pe6^QrsGqCL@dgK8}AxDO50*G^OHQXQeS0)tX?PrK;rr!n^pmhdlX z_e^lIxAb(Mu& zd6jT%R`5BS%U<{Xs8^#?5<^(;iMHeJ`7#Zk{4wa&V5I_Q;-ktg+S56*;2OICKK*D- zyw;#v$GhUM^q^0A)jHUzgIm?lbvrfWD!XJ)_n_XT0Y_|OuEtvL(Z{H&FIG+j81!oG z*7IXNYAK^N74{46A+-C|^&K1Z!g;923NXXw?1f3MCaZ;S?@?c9#C<^9@Er@(+|{Vc zYFBzu#@rpMcW%8Wa*Ml8LcMES_B1w8mldL(GTjr8M~K-{=-_GB4`HjZLhAO-xO08h z>kMs)zxMV-XEi+iwmZ3K#MP1&@taGnYyDf*lQDyu`|^9;S!2{(Y5%dLr<(MuC9Nls z(di?zUKgm{soI)qe{=WrLf4{(R2Q4TrfN2&;8VNiTtDfrt+2D6h1%2Yt9P#TE*k3V z8aQ>7NsnWhuZatc?^|MC7noT^{8&V`QqM(lAtJvbqHc%ivi8#=(=9l>l}-PgyWXDu zOzVA+uJnE`dbOQ;f24aofzj$r>wWX#&b84nSDR~jrsF-`SlU*|yHd}t-kDmDXrI00 ztk>%NYW7Fl2X~+98IJe#@LKQA&an0jv{z7aR?MB_gnP9=r+CblXH7D@%j~O^z-V9 zm1F7+@tljg>$$mAJ+x;V^)E;%3Yo$(R$OOp8R^|fWa4xZ=qP&w`2`=nv{$!_{@QaA zYUWHf#1k-Tj!raFrX!TTrn>s7HPTLr^~p`wvhh4kejH5H;F8wsU=fKaRN1ZSJ&=i! zg`}mmkC3gLPS%$}z#L%?OGVHtNKICrnb5PcIX)E+r-)K3J-f{6|M96u4Z?K z$Zn@XZri`=845Nwv+KE9n{SDG-g~pBb9u~cN>2P{N&eknP1Z$6-u|ARz$s1usd_n= zfH={p>!X-)X1m#^N6>ok+UDxaOGf<^m6LbTaaus^Rm6FhrpFK3=-X=KiaIJ3cT@Da zl$2Q6-0HF7R`p(}V%NXVxTj*)v4kO?o0)KiyTG|UC8BVDZ7-C~klGy_5Wj3RdTM-f z!-E*V)v$La`XNp^pln7g*dB>tFnTD$iA=Yu2Y-T6rI4M7drapPTtY*gKUxP{{WC_4 zk~!I4t%~=c>8^iV%X(?Cu?#RnlTEH zI~;MxSAG>v(AZIv6|U&HjmpUiyF60Othe9OTH{{-*Q~3{@%H413qIGy`WfCOf90g; z37DlRpK+u0*z&3sI+}&Bx@@yMbHC_u;1oktxAMsrrYCI3wK`UxS!*qGzY*K!ZLvBh z?wz%u`NDclE@Ry539}JvOSu+rPxiP#UuVhnIy#Q<;AIX4HlpTJPdBJ$XS61h-1JV2 z*`y~aB#2|z@rfQ{is4nOcQjWVu%;V>G0ur&ugNDcvl&qooWsMPAqR0Q`(Xa`%hJ~A8+mYBKFt@NNL5!E2kCDoxbW} z@5HzialyK(xtPyKx4dB0J8SnKI##dN0PJtJwqC$@Y_E+K8tS(8IX^jClV#q4^|dT; zxVA>J?@4ZA=0iTkw1CCcI;^Ek{A%B|jv2Q3{KpcpLu=x;J(YGbWtjCEE|I-)**VvP zG%T?iMCxr=0E#1dYguC#czDZaMjsE#-!-Ut{#T z*~1=XER=87ZL#NsjH|6vW19ka0=sAXOp%SK)?|e3H!Pg<$2NQCI`p+^$yE+}bHmf# z=?+V-@AUb+?GbpV0(?``JD1F65+f%sQ8GU)=b~!Ppl|Tml>yfxX**hW>vG_n_Mn-k zZ9eU=No|V{_+(0UZ%Gg3PJS9<|kyDoa?<_x)FzOQXtr%q7H5vnzr z{rtn6A%$Lv0G#3IjJ7J?o_gGV3{^5auRTtW&lk+#YgT;P%{t9D<~j?l0cZW3Ev$6F zY){6|L+Q_3%Q@Z6-boq>_cmA?uJ+~l7Pj?}xcXCxb5QI=OZHS!15hS{2q2g!!d zxckAzAK}{GmS#z$d2byh(ycFy?36<0F`R2SNkr`FJ^H$LiTtR=HMFsBH+#MvlwYuA!UZO~i}deu=8 z;G-qvrhC z)mCUrF}p|HSt!;@nss{h=xpv}*@sdx8MCwuZ!7j=8 z{Hz&vON(gUyXHL-@8fL+h95D}9cris=OU`TDTV&9_!{B@Nt>!!q<#R>(OgY%)%@26 zIspAORctw*3An>2;cM9poQmpej}%;uy2aiqr?-uo!uo*!kMHm>GA*HNCv;robXv zuWrE=Q^tNDENgKszs=pF+vqheIFr$WM~~>apo+M*a7{I3$@YE0PucLWCWpwiZ=s{{ zpx)ZZInl5tcCw^AM9G!Micgel=#)Rd*Vk}0Uv}V}=D04VU-Zs(9QK}UkaBm@l%HAA zQubOk5j}r40wa^0sL-#Xef4XxhL*>(an(m^7mfZmp1fK{Y71*LM9*-&CKr?vduaT; zt8=W+x9FXTIusa76RW7< zGt~|7D?_St&zzGVngirs&3>!FgDg=!umP^otBR2n)o4Uf4{DKOfsa}Jf6JMqN_apUeB z$9)|`Z1*yi>tf+8&dH}->o^r6ifhYePI{e7wXKXBJyX2_`*dSX_e<8Rj@#jijE`39 zybZps=sjEHV@+!Wl!sKyZ&i0fCurTaO&vW2oqVrjlO3x3)C{54aykmoysuBsfD4Gb zkBAvdkP*}RZbHwBp3*a&DtazlO*vG}k|~^{K0t4mjtw*;9MVZE5$(BzPOsXgtbcJf zqG}Ya>oiBE_t%svQz|-hrKVlBq~{OmjH-?eHicx6)o{Mo$^csi$m4U1d9zgVT||^|L%MaGO+{8d5GUqG#2mbk@X#o_tUSBh+?oLC;N9IOSdYUOt`VA5hJ~h`J5ObnbgbXZ+;UM>3;Mk{$BM8am^@MUG>G zo^z+;=pj8(X^XlMWAHl(vK<+n<&;z9&5U|Z=k$!L1##vI)vp73f_Xsf*N9G+8Bg*el53Dt4K^)AS7#Pin>fE_z5M!#RoKUxQMZMNbV!3^)2G`lp zgzAI~>b9N}3#zC(ZAe+8m@0lIRJo+R+=gQ70afdV^u)k~qUwTT>bc=hsq0}#&w)&+ zN?7O2HCNbBr|wwYpZ!_QiRm~crqkDTwp{l-=*qMu#VDG22#I${sMcR+Vk=_7mc)Vi z#G{WWa?emxsXf<>56?VQ)o!BF)p2(=Db4HaD4f#3) zsznQ_5-p)DP(i0l&Z%}n^OBky59tY!3FUwasu9<9JxlE50a?+IY-n-~vtLtn&+@7( zU`g2`%}a%3BNJFiv!~`=&%NT^6n6Dp8?--6Zpoa!G)8aM?(QhN)6l5psEgV_z5joP87mo1R-Rh&KCq)y*0^b1%qAP3y=lY=(Ellokb zy+yryrs`%J`9zy>*`a5tm=2K*)Pwq58?;50p(cO7O;wFkWELyV;4kP2_onxIlb+GI zMIFLp%1v#9udvo~hdTQgU@WYcy-EH3Thv1{#;JPR7Uf_qrc|rDLuaNe*ajI36mMS#-M=jXqcwGi(i_V4^Q#bN9)%#A_ z&eYIb3$`&{#~p7`$LN@Ci?J+amjyRfY8&WG_nAA~qE5pxo$9yE)}-vtomx=E+6G$@ zV?!dU%S^Gtx2ZaF%C@71o?FmaR2%ekm`%1B5h{|$Y%g-M7G-xr!GbEtH?D0T_+xdR zbm0bDhwJ;`qi-K*@5lN+*7J$j@3CIbl%8s$Ev(V8Ep+S#PBYSLbI5Ug#I?d1_ttA) z$9g)}&l#+&&k?Q9gzMI{e`CEHvqG1hXJh@E5j`)}uF(m5H0B)AnyhmR*4wVqVdu|S zZ$?Kj1!oI(xE_E!nc-L|Xl(1p=v-FF*@H1zZ_Od+@Ly(KPj!R(a-*|NUdzVX5m)bK zobQ|RDIAt_Y&pNRtG7q6@MG%s-=@=Z3aX2%xMFg_{nrCN#UbFj&X}`-+uZ+ev$Zwz z=!#?TO|GUK@$+_4j>C8L_nc1iu(7zuJW0q;;2CqB!GupAD!JdH;aUS7NBA5?Y|$BS z+Gj{R&O}ELHh$0?bZfG}6gwC_uKkEHokV4$h8cALTTQ-1)_tSPy9Zozx2wx1T~wjt zcCF2q98q{2PiSp!xs;TvPIM$uQfHd>I~Lt}fLfyusdvL_^n`lVCcQX*PQCwrFII@@ z*-k0N2?f|{8zb2GK<^j3TS7z!aW6I~=&3*@?Utq&6Ko;|D50r6^6Gbe`n2=tr|?Vr zI@(rrdZ^&tq)M1As!X@*f1B6;3^ks5{nxf4CLF7y?6GK1ev`7f{T*QHJ^NnEoSy+^ z_JD^x+GdwY(|ce{=O=Gd53Ak-C4Ac*_Fb0T&)fH2Mx0ekyNI{qC2V3mJB+NtQ-N^(ybQ<%5o)y>M3Ff5HsOvq`aet1ue?})zTVJNX7pylkfuQUp3>foy8{C9x1%ne-lobcy$5Ez2kLGYsDH*-+FF*r-!oeAd?qWt z&zw%wv)+$uU-}-x?xT5k-j|LF2E@MicT(Iv zyKlm=!RlUGQhcEIlC>=%ox&aUI4T_>%s57vQ6zFd;pm`1 z|BJOec1Ng=N7|(Gu0m8&>D`cUqUQ}ry*QnN_$Sp6(V33@LK+4mYTgVfNICXJQZ z-3cL8Y#2MUx*M#e>FB{PLt1j@$#G_X0u-g95WBu;>6TZlhSGA z6ONlT?_w-YL(i{lPimVpK)1psoy25zOGH*D>2^!evpc&!Sbx6^Ig-}4$LttmefoQ* z+LzhgVz12Dp==Mg+t9NyTli%ztGkI^VV)B|qcioae`W29e^s`2?|v{|mf02ART)*a zFDF`12Xsm2W?OB(x^~yC+zEPMc2{phPg7jg<-?xe6cfi|SMCg6)1K9vjMbNtHea`P z6FLoIn_`E8qKAr3!>_6DZ`s8UyZU{Lo`Imfr`1(GWe=*qsuj+19xwy6yRM@yn&_|W z8R}FjL=+7@pR)yj*tY}0iY3VCOfln289T6dZLeS1yOzML?SrjZwI>%Lt=Q@s@(@|4 z@u&0*-)fKEH!+33NBfWIq@nCS&sf+fW3N@%qCUoWk8Qa69x*mxz#P#Kad@~ASGZPS z&c4!;xuO9_&+?8<5A>CbH!hhF=dQK$zre#7R6ncwnJDL&-5bi`a^!ffM&`NrA4 znXT{|^ID2{9^;J%>u%o$T1AFYRbXfpJXuA7h6V-wo#Q`oGRaJ4XQyws zn?Vakv%0?L|M|Y}_Vt5%awD~QZ{mgdqhPCF`TFw5{jqC5FQ1NI;X!WBPGo2MM1DSu zVi{YL&Fi%5%$_rjcsg~Kne(-B1?44?Qqf@(Wt4jQdiX-wq=G7tH(^ShEl;Q*r-}!g zD;n%tv0#~Us$`ZdljNyR>gMlE%6@{czJA)aNj0AeeP7uqAJWyyOrTf_naQjb3oFx@ z$L@R{xAS{wQ|F)B)vXuiS7LpNU2ykyb<%Zzygk;#)y%cNxb$#M(@#RL?%D9}N8P%c z-1oieetmPdKJTlXAzJ4P^ZQ3f>+A{fy03LM%6F`WuJ-ZO&fSRdl%1(jZ8-PQd(-?! z+MGVli|*f>R;piWfl(N5PCsmOe$pR{h55$`e@utnxnUL}Q;>*_XwJ+-rX4;tZ$t-| zQ{NgkoIX48h*@CHEZh*~eLAm*jb;9ShC12L&QkwfslIVAnl8tC$diIuz_A_pN508w zVgCNSH_6Vzu&MCriz9Z+xhm<@;F_$X*oBJ^7JKNGlRj8e8)&q*RDb7F#jjjq@iWI_ z^WtI$&wyt7>~gYov4iJ8wS9JW;9TtBVh8nm<6i9GVh7lP|HAy7(TO=SJ2CkSGo^<7 z^d|5dRqlQK9DW7bC_W;FyexqatA~-6UohQsd=FC14W*sFR zvS9hTO2^59FtOU05&X$X@|FLZNQit^A%lv zKc$!dO)y&W*H$1g%8nl-e|ZW+pvN{P9jd8Ro_YPI#bmo39y=UZL1o7VvOCmXk5)=L z)=$|Xl;*>hE75mX)}S290pnl~Jeu}Qvae{*wPu&qo~;JsutPKma&)U)7+Z03G9jH0 z*o8z9qcRmOcgz>-Mio8nf%7sS*e*%hZhEt{-MF?h$gy=SNBfDA3Dveksd;E#^_#$C z#8hhjY6gtRe8fn~MwpO(L*p?6T8x=N5=GDT8{ekGFtl5e zd52wScOzm;+kr>sDSCg_VcmLb$Q1S2?4b&Ji&(08-+3^|<9821iaco^0*z zJy$MO1FK^);!y2wK2q*fc7PJF)wXw=spWvEY_S15i!h36@dhMupoo^8P2`GZG474I z;mc-srr!1lxz+9`mrO3N6&0Dn=vae`EJw(#cE+73yJFp85{to?r}`?U4>ET)`1NXd z=d~Doe5xww{(zX;zmpa#Wp`fc?XmZIU%l^cW}W9I1MW5-%~kErdp+e)%sLi@t-J^K z4zq5qoP!=$6z`!k8pU!S-&-8sK)Lfx|Hk}MXOH_9>~<`cS;u1uI}XeKSKjLDC`K`B z`&Mop!J;i6WJ>OT$GT&sSRF6LRn*zOtsh6)G)J&xeXLk?497z&ZwCDQ{Vr$*m8BEiwBX}ee+^EV{c@i0OdcWU#QU2fwl0| zI_uQ;zt856S6C(_a&uj~-16aQi2iG}+cgv2r~*&Urn#cVus|93k3<(Zc(s|`ntxIA zw-v!S^KIcTH230-Le-GHRt3P6mkj$1R2-mBrA9grca-VIzKxq>kG83Y4rAzIz;u6H zRNaQHU-#K$D8m~-8g(UKJUqmNN{_Z zgkL7%?@f5IgUjTL$yao1{-pKgr?4TN9>JHlJz6}}xA|*9m)GpeE%INFUm54U^bsl{ z0X1(*Z&%UTIrI(zy!9Qiz?)0yW-C|?j-ps2I{TcS-q6ka@I)gf6FGAUL+9qxGen@cbNY5e$L`asM|9~q zJ%EXC&6VDc1D-2Ddm^PLt5Wk6)W{vIK?Tmhq3b>VEuQur*05|p0W3~>JG@K&DeGA5 z+jMxgmPP&}W3o2PkjAyd5=+@@4O1x#y$Cx{7 z_`woC$nb-P7s@^SV2K}O_yIlM`qumePjFP1cZnZl_(9XXiM3?zW57*CV5SUssR*pp zwwpsa8dHMqg6Ce>R91Z%(-X}?GNH7dSD z`yKYb0!H9ycb?Y_YH{3%nH=9R+n>k z?l{=pZ*h1!x!?Bfpe5M2tUI4~_{n&E`I^U3KPeL+u7mv!g!Mkj2#GwyD0|L*SI zTz_xN2W&aTjvZ_`l{jAAnt$ru1*&f+XA|2Ex|7Mh?QU&%XNPBMZ!GKX%;VPN&iWfW zeP7jgJ1gAT;6o?rEm1tO^+!EReQW;Roh8*f3gB<{_IG$c?OAr#*J}3o*j~zPMeuDl zrwFk=iD4yYaZ%ukl(8WG)x2qaD<}6##}}x6R<4^bM;QcyJxH*^8awng@}wGb47oQT z;^g?3qgi(eDmiCn-bR}_SvTpTjZM~_chROq2`V;UYu2^9Xp@k2%P!i?nRq6hJ=*Y5 z1AR4AR1R`gGcs_x9c7~is$F0P?IMXmkt(yvS7@WqxQ025_wsf6XcTp?7O(dhqT5b^ zU~)<c_DKe!L!O8MU!$hEIoQDH-LU^(~EG=O8>RzV!2;F^v_QA0+yJkj7M{niKu4 z%+6GpTEUXoqFX#=KD|KmX9Y8H`{xO4_^ZxhuMb|5mfJ9}4s9w)vEnOU?+MP*Z9M-* z?$ee!=Z?fT@_V(#if6mU6s;23JhfYf(Tv-PJACcuw>cFhswsJPL7o-GsVz!VqA;}} z*RII5q9i3uaZ!$1p|2oHQByLKC_{-N)K)XDhovltdI{dTA@4SCEO>lAn~4zKp5&$i z6$C^4bK%rThKkWT$l0UT-|^BV9y)_<7ZC^7aA+hWTkvOmG?_wpsZwneDEmnTHb+D5 zS~FJxi`u}Mb74*gY!zb|s1hCPzfI^$JQx`Zjgaf_H(HTdXmCiB3{lZbxy1thn{nf= zd$eIXU(ul~VTZ0XTGr`=F2#cZy3mNZMlYk%*Pbl)yDrsQA3I}mUmrbd>bJ*wYD`tL zCZZne3lC%Jr+}$;l=mb$EW&!qQEuGojXBhYS5${`XHqxk`YM`XYA9T%nZD_mvLUSB z+2peYHzsw}1U(hWWh>AO4SD*C8%ppoZpV+!ugTPwX0dBH2PK{3lpB$Jz2PowZef8+ zPe#2sA!p60oXspYKO@#wSh5A<+h@ZRqKF`sV}U&z)DK)@qSPWWHl4GltBH$JXU(wd zh<*GTW~UWa_uzxjYG7U5icTe4r_8wMZ~bkIzAie5Vm_t)F_A>hCJhvV*;x67&c#y!b*)6u+;1` zl;I+f2x~T(6+MXsv)yNR8N$Sq>b)SZ8#s6_mM9f&taeyZLrs`qcvMjfW*B0F8~T*y zt%U{pA3Ju0vH4wBWw~d?j^>qx=7A43Bt+#P#cB)q-v&hk7wsIWG-G0L&Yq?IcEWDO zdk84)^{?QQ1ay?21}- ziPFW2dbPyECrpYw@J|b7MF~n`8|{)UFf2aa9-@JoQo9x)Jq#*#uBuZkQE6G>`K2g# zM(x*~fa&niVp%XdN{9d(?K~`^fR7?$$nHL+mMvhV8MyZ@yw!jXG6o5gqZ?5Z6&$kL qjQkd%4zWfTqPoNd=5n$5k4Dz%7Z(>e_80f_(=YDCmjjQ#z<&YKzyHht literal 0 HcmV?d00001 diff --git a/node_modules/@esbuild/win32-x64/package.json b/node_modules/@esbuild/win32-x64/package.json new file mode 100644 index 0000000..02f68c0 --- /dev/null +++ b/node_modules/@esbuild/win32-x64/package.json @@ -0,0 +1,17 @@ +{ + "name": "@esbuild/win32-x64", + "version": "0.18.20", + "description": "The Windows 64-bit binary for esbuild, a JavaScript bundler.", + "repository": "https://github.com/evanw/esbuild", + "license": "MIT", + "preferUnplugged": true, + "engines": { + "node": ">=12" + }, + "os": [ + "win32" + ], + "cpu": [ + "x64" + ] +} diff --git a/node_modules/@motion-canvas/core/LICENSE b/node_modules/@motion-canvas/core/LICENSE new file mode 100644 index 0000000..b30f04e --- /dev/null +++ b/node_modules/@motion-canvas/core/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 motion-canvas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@motion-canvas/core/lib/app/Exporter.d.ts b/node_modules/@motion-canvas/core/lib/app/Exporter.d.ts new file mode 100644 index 0000000..b445c20 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Exporter.d.ts @@ -0,0 +1,87 @@ +import type { RendererResult, RendererSettings } from './Renderer'; +import type { Project } from './Project'; +import type { MetaField } from '../meta'; +/** + * The static interface for exporters. + */ +export interface ExporterClass { + /** + * The unique identifier of this exporter. + * + * @remarks + * This identifier will be used to store the settings of this exporter. + * It's recommended to prepend it with the name of the package to avoid + * collisions. + */ + readonly id: string; + /** + * The name of this exporter. + * + * @remarks + * This name will be displayed in the editor. + */ + readonly displayName: string; + /** + * Create an instance of this exporter. + * + * @remarks + * A new exporter is created whenever the user starts a new rendering process. + * + * @param project - The current project. + * @param settings - The rendering settings. + */ + create(project: Project, settings: RendererSettings): Promise; + /** + * Create a meta field representing the options of this exporter. + */ + meta(project: Project): MetaField; +} +/** + * The main interface for implementing custom exporters. + */ +export interface Exporter { + /** + * Prepare the rendering configuration. + * + * @remarks + * Called at the beginning of the rendering process, before anything else has + * been set up. The returned value can be used to override the rendering + * settings provided by the user. + */ + configuration?(): Promise; + /** + * Begin the rendering process. + * + * @remarks + * Called after the rendering has been set up, right before the first frame + * is rendered. Once `start()` is called, it is guaranteed that the `stop()` + * method will be called as well. Can be used to initialize any resources that + * require a clean-up. + */ + start?(): Promise; + /** + * Export a frame. + * + * @remarks + * Called each time after a frame is rendered. + * + * @param canvas - A canvas containing the rendered frame. + * @param frame - The frame number. + * @param sceneFrame - The frame number within the scene. + * @param sceneName - The name of the scene with which the frame is associated. + * @param signal - An abort signal triggered if the user aborts the rendering. + */ + handleFrame(canvas: HTMLCanvasElement, frame: number, sceneFrame: number, sceneName: string, signal: AbortSignal): Promise; + /** + * Finish the rendering process. + * + * @remarks + * Guaranteed to be called after the rendering has finished - no matter the + * result. Can be used to finalize the exporting and perform any necessary + * clean-up. + * + * @param result - The result of the rendering. + */ + stop?(result: RendererResult): Promise; +} +//# sourceMappingURL=Exporter.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Exporter.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Exporter.d.ts.map new file mode 100644 index 0000000..fa6b02e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Exporter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Exporter.d.ts","sourceRoot":"","sources":["../../src/app/Exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExE;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;;OAOG;IACH,aAAa,CAAC,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAEnD;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,WAAW,CACT,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;;;OASG;IACH,IAAI,CAAC,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Exporter.js b/node_modules/@motion-canvas/core/lib/app/Exporter.js new file mode 100644 index 0000000..7a5a333 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Exporter.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL0V4cG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts b/node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts new file mode 100644 index 0000000..171c348 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts @@ -0,0 +1,35 @@ +import { CanvasOutputMimeType } from '../types'; +import type { Project } from './Project'; +import type { Exporter } from './Exporter'; +import type { Logger } from './Logger'; +import type { RendererSettings } from './Renderer'; +import { BoolMetaField, EnumMetaField, NumberMetaField, ObjectMetaField } from '../meta'; +/** + * Image sequence exporter. + * + * @internal + */ +export declare class ImageExporter implements Exporter { + private readonly logger; + private readonly settings; + static readonly id = "@motion-canvas/core/image-sequence"; + static readonly displayName = "Image sequence"; + static meta(): ObjectMetaField<{ + fileType: EnumMetaField; + quality: NumberMetaField; + groupByScene: BoolMetaField; + }>; + static create(project: Project, settings: RendererSettings): Promise; + private static readonly response; + private readonly frameLookup; + private readonly projectName; + private readonly quality; + private readonly fileType; + private readonly groupByScene; + constructor(logger: Logger, settings: RendererSettings); + start(): Promise; + handleFrame(canvas: HTMLCanvasElement, frame: number, sceneFrame: number, sceneName: string, signal: AbortSignal): Promise; + stop(): Promise; + private handleResponse; +} +//# sourceMappingURL=ImageExporter.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts.map b/node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts.map new file mode 100644 index 0000000..9062bac --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/ImageExporter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ImageExporter.d.ts","sourceRoot":"","sources":["../../src/app/ImageExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EAEhB,MAAM,SAAS,CAAC;AAcjB;;;;GAIG;AACH,qBAAa,aAAc,YAAW,QAAQ;IA8C1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IA9C3B,gBAAuB,EAAE,wCAAwC;IACjE,gBAAuB,WAAW,oBAAoB;WAExC,IAAI;;;;;WAkBE,MAAM,CACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC;IAIzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAUzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAGpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB;IAShC,KAAK;IAIL,WAAW,CACtB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW;IA4BR,IAAI;IAOjB,OAAO,CAAC,cAAc,CAEpB;CACH"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/ImageExporter.js b/node_modules/@motion-canvas/core/lib/app/ImageExporter.js new file mode 100644 index 0000000..b5ffce5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/ImageExporter.js @@ -0,0 +1,89 @@ +var _a; +import { BoolMetaField, EnumMetaField, NumberMetaField, ObjectMetaField, } from '../meta'; +import { clamp } from '../tweening'; +import { FileTypes } from './presets'; +import { EventDispatcher } from '../events'; +const EXPORT_FRAME_LIMIT = 256; +const EXPORT_RETRY_DELAY = 1000; +/** + * Image sequence exporter. + * + * @internal + */ +export class ImageExporter { + static meta() { + const meta = new ObjectMetaField(this.name, { + fileType: new EnumMetaField('file type', FileTypes), + quality: new NumberMetaField('quality', 100) + .setRange(0, 100) + .describe('A number between 0 and 100 indicating the image quality.'), + groupByScene: new BoolMetaField('group by scene', false).describe('Group exported images by scene. When checked, separates the sequence into subdirectories for each scene in the project.'), + }); + meta.fileType.onChanged.subscribe(value => { + meta.quality.disable(value === 'image/png'); + }); + return meta; + } + static async create(project, settings) { + return new ImageExporter(project.logger, settings); + } + constructor(logger, settings) { + this.logger = logger; + this.settings = settings; + this.frameLookup = new Set(); + this.handleResponse = ({ frame }) => { + this.frameLookup.delete(frame); + }; + const options = settings.exporter.options; + this.projectName = settings.name; + this.quality = clamp(0, 1, options.quality / 100); + this.fileType = options.fileType; + this.groupByScene = options.groupByScene; + } + async start() { + ImageExporter.response.subscribe(this.handleResponse); + } + async handleFrame(canvas, frame, sceneFrame, sceneName, signal) { + if (this.frameLookup.has(frame)) { + this.logger.warn(`Frame no. ${frame} is already being exported.`); + return; + } + if (import.meta.hot) { + while (this.frameLookup.size > EXPORT_FRAME_LIMIT) { + await new Promise(resolve => setTimeout(resolve, EXPORT_RETRY_DELAY)); + if (signal.aborted) { + return; + } + } + this.frameLookup.add(frame); + import.meta.hot.send('motion-canvas:export', { + frame, + sceneFrame, + data: canvas.toDataURL(this.fileType, this.quality), + mimeType: this.fileType, + subDirectories: this.groupByScene + ? [this.projectName, sceneName] + : [this.projectName], + groupByScene: this.groupByScene, + }); + } + } + async stop() { + while (this.frameLookup.size > 0) { + await new Promise(resolve => setTimeout(resolve, EXPORT_RETRY_DELAY)); + } + ImageExporter.response.unsubscribe(this.handleResponse); + } +} +_a = ImageExporter; +ImageExporter.id = '@motion-canvas/core/image-sequence'; +ImageExporter.displayName = 'Image sequence'; +ImageExporter.response = new EventDispatcher(); +(() => { + if (import.meta.hot) { + import.meta.hot.on('motion-canvas:export-ack', response => { + _a.response.dispatch(response); + }); + } +})(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1hZ2VFeHBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvSW1hZ2VFeHBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsR0FFaEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFMUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFRaEM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBSWpCLE1BQU0sQ0FBQyxJQUFJO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDMUMsUUFBUSxFQUFFLElBQUksYUFBYSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUM7WUFDbkQsT0FBTyxFQUFFLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7aUJBQ3pDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO2lCQUNoQixRQUFRLENBQUMsMERBQTBELENBQUM7WUFDdkUsWUFBWSxFQUFFLElBQUksYUFBYSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FDL0QseUhBQXlILENBQzFIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FB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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Logger.d.ts b/node_modules/@motion-canvas/core/lib/app/Logger.d.ts new file mode 100644 index 0000000..3bf7c9e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Logger.d.ts @@ -0,0 +1,38 @@ +export declare enum LogLevel { + Error = "error", + Warn = "warn", + Info = "info", + Http = "http", + Verbose = "verbose", + Debug = "debug", + Silly = "silly" +} +export interface LogPayload { + level?: LogLevel; + message: string; + stack?: string; + remarks?: string; + object?: any; + durationMs?: number; + [K: string]: any; +} +export declare class Logger { + /** + * Triggered when a new message is logged. + */ + get onLogged(): import("../events").Subscribable>; + private readonly logged; + readonly history: LogPayload[]; + private profilers; + log(payload: LogPayload): void; + error(payload: string | LogPayload): void; + warn(payload: string | LogPayload): void; + info(payload: string | LogPayload): void; + http(payload: string | LogPayload): void; + verbose(payload: string | LogPayload): void; + debug(payload: string | LogPayload): void; + silly(payload: string | LogPayload): void; + protected logLevel(level: LogLevel, payload: string | LogPayload): void; + profile(id: string, payload?: LogPayload): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Logger.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Logger.d.ts.map new file mode 100644 index 0000000..90de5d2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Logger.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/app/Logger.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,qBAAa,MAAM;IACjB;;OAEG;IACH,IAAW,QAAQ,+FAElB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,SAAgB,OAAO,EAAE,UAAU,EAAE,CAAM;IAE3C,OAAO,CAAC,SAAS,CAA8B;IAExC,GAAG,CAAC,OAAO,EAAE,UAAU;IAKvB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIlC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIpC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIlC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIzC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAMzD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;CAgBhD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Logger.js b/node_modules/@motion-canvas/core/lib/app/Logger.js new file mode 100644 index 0000000..7588e9e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Logger.js @@ -0,0 +1,68 @@ +import { EventDispatcher } from '../events'; +export var LogLevel; +(function (LogLevel) { + LogLevel["Error"] = "error"; + LogLevel["Warn"] = "warn"; + LogLevel["Info"] = "info"; + LogLevel["Http"] = "http"; + LogLevel["Verbose"] = "verbose"; + LogLevel["Debug"] = "debug"; + LogLevel["Silly"] = "silly"; +})(LogLevel || (LogLevel = {})); +export class Logger { + constructor() { + this.logged = new EventDispatcher(); + this.history = []; + this.profilers = {}; + } + /** + * Triggered when a new message is logged. + */ + get onLogged() { + return this.logged.subscribable; + } + log(payload) { + this.logged.dispatch(payload); + this.history.push(payload); + } + error(payload) { + this.logLevel(LogLevel.Error, payload); + } + warn(payload) { + this.logLevel(LogLevel.Warn, payload); + } + info(payload) { + this.logLevel(LogLevel.Info, payload); + } + http(payload) { + this.logLevel(LogLevel.Http, payload); + } + verbose(payload) { + this.logLevel(LogLevel.Verbose, payload); + } + debug(payload) { + this.logLevel(LogLevel.Debug, payload); + } + silly(payload) { + this.logLevel(LogLevel.Silly, payload); + } + logLevel(level, payload) { + const result = typeof payload === 'string' ? { message: payload } : payload; + result.level = level; + this.log(result); + } + profile(id, payload) { + const time = performance.now(); + if (this.profilers[id]) { + const timeEnd = this.profilers[id]; + delete this.profilers[id]; + const result = payload ?? { message: id }; + result.level ?? (result.level = LogLevel.Debug); + result.durationMs = time - timeEnd; + this.log(result); + return; + } + this.profilers[id] = time; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9Mb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUxQyxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZix5QkFBYSxDQUFBO0lBQ2IseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYiwrQkFBbUIsQ0FBQTtJQUNuQiwyQkFBZSxDQUFBO0lBQ2YsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUlcsUUFBUSxLQUFSLFFBQVEsUUFRbkI7QUFZRCxNQUFNLE9BQU8sTUFBTTtJQUFuQjtRQU9tQixXQUFNLEdBQUcsSUFBSSxlQUFlLEVBQWMsQ0FBQztRQUM1QyxZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUVuQyxjQUFTLEdBQTJCLEVBQUUsQ0FBQztJQXlEakQsQ0FBQztJQWxFQzs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ2xDLENBQUM7SUFNTSxHQUFHLENBQUMsT0FBbUI7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUE0QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUE0QjtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUE0QjtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUE0QjtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUE0QjtRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUE0QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUE0QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVTLFFBQVEsQ0FBQyxLQUFlLEVBQUUsT0FBNEI7UUFDOUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxFQUFVLEVBQUUsT0FBb0I7UUFDN0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUUxQixNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksRUFBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLEtBQUssS0FBWixNQUFNLENBQUMsS0FBSyxHQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUM7WUFDaEMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFakIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts b/node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts new file mode 100644 index 0000000..1cf31b9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts @@ -0,0 +1,59 @@ +import type { Scene, SceneDescriptionReload, Slide } from '../scenes'; +export declare enum PlaybackState { + Playing = 0, + Rendering = 1, + Paused = 2, + Presenting = 3 +} +/** + * A general class for managing a sequence of scenes. + * + * @remarks + * This class provides primitive operations that can be executed on a scene + * sequence, such as {@link progress} or {@link seek}. + * + * @internal + */ +export declare class PlaybackManager { + /** + * Triggered when the active scene changes. + * + * @eventProperty + */ + get onSceneChanged(): import("../events").SubscribableValueEvent>; + /** + * Triggered when the scenes get recalculated. + * + * @remarks + * This event indicates that the timing of at least one scene has changed. + * + * @eventProperty + */ + get onScenesRecalculated(): import("../events").SubscribableValueEvent[]>; + frame: number; + speed: number; + fps: number; + duration: number; + finished: boolean; + slides: Slide[]; + previousScene: Scene | null; + state: PlaybackState; + get currentScene(): Scene; + set currentScene(scene: Scene); + private currentSceneReference; + private scenes; + setup(scenes: Scene[]): void; + progress(): Promise; + seek(frame: number): Promise; + goBack(): Promise; + goForward(): Promise; + goTo(slideId: string): Promise; + private seekSlide; + reset(): Promise; + reload(description?: SceneDescriptionReload): void; + recalculate(): Promise; + private next; + private findBestScene; + private getNextScene; +} +//# sourceMappingURL=PlaybackManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts.map b/node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts.map new file mode 100644 index 0000000..88c5857 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/PlaybackManager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PlaybackManager.d.ts","sourceRoot":"","sources":["../../src/app/PlaybackManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAC,MAAM,WAAW,CAAC;AAGpE,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;CACX;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B;;;;OAIG;IACH,IAAW,cAAc,+DAKxB;IAED;;;;;;;OAOG;IACH,IAAW,oBAAoB,iEAE9B;IAEM,KAAK,SAAK;IACV,KAAK,SAAK;IACV,GAAG,SAAM;IACT,QAAQ,SAAK;IACb,QAAQ,UAAS;IACjB,MAAM,EAAE,KAAK,EAAE,CAAM;IAErB,aAAa,EAAE,KAAK,GAAG,IAAI,CAAQ;IACnC,KAAK,gBAAwB;IAEpC,IAAW,YAAY,IAAI,KAAK,CAK/B;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,KAAK,EAMnC;IAED,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAoC;IAE3C,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;IAKf,QAAQ;IAKR,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BrC,MAAM;IAUN,SAAS;IAMT,IAAI,CAAC,OAAO,EAAE,MAAM;YAInB,SAAS;IAsBV,KAAK;IAOX,MAAM,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC;IAI5C,WAAW;YAyBV,IAAI;IAkClB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;CAYrB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/PlaybackManager.js b/node_modules/@motion-canvas/core/lib/app/PlaybackManager.js new file mode 100644 index 0000000..9bdd14e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/PlaybackManager.js @@ -0,0 +1,212 @@ +import { ValueDispatcher } from '../events'; +export var PlaybackState; +(function (PlaybackState) { + PlaybackState[PlaybackState["Playing"] = 0] = "Playing"; + PlaybackState[PlaybackState["Rendering"] = 1] = "Rendering"; + PlaybackState[PlaybackState["Paused"] = 2] = "Paused"; + PlaybackState[PlaybackState["Presenting"] = 3] = "Presenting"; +})(PlaybackState || (PlaybackState = {})); +/** + * A general class for managing a sequence of scenes. + * + * @remarks + * This class provides primitive operations that can be executed on a scene + * sequence, such as {@link progress} or {@link seek}. + * + * @internal + */ +export class PlaybackManager { + constructor() { + this.frame = 0; + this.speed = 1; + this.fps = 30; + this.duration = 0; + this.finished = false; + this.slides = []; + this.previousScene = null; + this.state = PlaybackState.Paused; + this.currentSceneReference = null; + this.scenes = new ValueDispatcher([]); + } + /** + * Triggered when the active scene changes. + * + * @eventProperty + */ + get onSceneChanged() { + if (this.currentSceneReference === null) { + throw new Error('PlaybackManager has not been properly initialized'); + } + return this.currentSceneReference.subscribable; + } + /** + * Triggered when the scenes get recalculated. + * + * @remarks + * This event indicates that the timing of at least one scene has changed. + * + * @eventProperty + */ + get onScenesRecalculated() { + return this.scenes.subscribable; + } + get currentScene() { + if (this.currentSceneReference === null) { + throw new Error('PlaybackManager has not been properly initialized'); + } + return this.currentSceneReference.current; + } + set currentScene(scene) { + if (!scene) { + throw new Error('Invalid scene.'); + } + this.currentSceneReference ?? (this.currentSceneReference = new ValueDispatcher(scene)); + this.currentSceneReference.current = scene; + } + setup(scenes) { + this.scenes.current = scenes; + this.currentScene = scenes[0]; + } + async progress() { + this.finished = await this.next(); + return this.finished; + } + async seek(frame) { + if (frame <= this.frame || + (this.currentScene.isCached() && this.currentScene.lastFrame < frame)) { + const scene = this.findBestScene(frame); + if (scene !== this.currentScene) { + this.previousScene = null; + this.currentScene = scene; + this.frame = this.currentScene.firstFrame; + await this.currentScene.reset(); + } + else if (this.frame >= frame) { + this.previousScene = null; + this.frame = this.currentScene.firstFrame; + await this.currentScene.reset(); + } + } + this.finished = false; + while (this.frame < frame && !this.finished) { + this.finished = await this.next(); + } + return this.finished; + } + async goBack() { + let target = this.currentScene.slides.getCurrent(); + if (target && this.currentScene.slides.isWaiting()) { + const index = this.slides.indexOf(target); + target = this.slides[index - 1]; + } + await this.seekSlide(target); + } + async goForward() { + const current = this.currentScene.slides.getCurrent(); + const index = this.slides.indexOf(current); + await this.seekSlide(this.slides[index + 1]); + } + async goTo(slideId) { + await this.seekSlide(this.slides.find(slide => slide.id === slideId)); + } + async seekSlide(slide = null) { + if (!slide) + return; + const { id, scene } = slide; + if (this.currentScene !== scene || this.currentScene.slides.didHappen(id)) { + this.previousScene = null; + this.currentScene = scene; + this.frame = this.currentScene.firstFrame; + this.currentScene.slides.setTarget(id); + await this.currentScene.reset(); + } + this.finished = false; + this.currentScene.slides.setTarget(id); + while (!this.currentScene.slides.isWaitingFor(id) && !this.finished) { + this.finished = await this.next(); + } + this.currentScene.slides.setTarget(null); + return this.finished; + } + async reset() { + this.previousScene = null; + this.currentScene = this.scenes.current[0]; + this.frame = 0; + await this.currentScene.reset(); + } + reload(description) { + this.scenes.current.forEach(scene => scene.reload(description)); + } + async recalculate() { + this.previousScene = null; + this.slides = []; + const speed = this.speed; + this.frame = 0; + this.speed = 1; + const scenes = []; + try { + for (const scene of this.scenes.current) { + await scene.recalculate(frame => { + this.frame = frame; + }); + this.slides.push(...scene.slides.onChanged.current); + scenes.push(scene); + } + } + finally { + this.speed = speed; + } + this.scenes.current = scenes; + this.duration = this.frame; + } + async next() { + if (this.previousScene) { + await this.previousScene.next(); + if (this.currentScene.isFinished()) { + this.previousScene = null; + } + } + this.frame += this.speed; + if (this.currentScene.isFinished()) { + return true; + } + await this.currentScene.next(); + if (this.previousScene && this.currentScene.isAfterTransitionIn()) { + this.previousScene = null; + } + if (this.currentScene.canTransitionOut()) { + this.previousScene = this.currentScene; + const nextScene = this.getNextScene(this.previousScene); + if (nextScene) { + this.currentScene = nextScene; + await this.currentScene.reset(this.previousScene); + } + if (!nextScene || this.currentScene.isAfterTransitionIn()) { + this.previousScene = null; + } + } + return this.currentScene.isFinished(); + } + findBestScene(frame) { + let lastScene = this.scenes.current[0]; + for (const scene of this.scenes.current) { + if (!scene.isCached() || scene.lastFrame > frame) { + return scene; + } + lastScene = scene; + } + return lastScene; + } + getNextScene(scene) { + const scenes = this.scenes.current; + if (!scene) { + return scenes[0]; + } + const index = scenes.findIndex(s => s === scene); + if (index < 0) { + return null; + } + return scenes[index + 1] ?? null; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWJhY2tNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9QbGF5YmFja01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUxQyxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUFPLENBQUE7SUFDUCwyREFBUyxDQUFBO0lBQ1QscURBQU0sQ0FBQTtJQUNOLDZEQUFVLENBQUE7QUFDWixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBeUJTLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFckIsa0JBQWEsR0FBaUIsSUFBSSxDQUFDO1FBQ25DLFVBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBaUI1QiwwQkFBcUIsR0FBa0MsSUFBSSxDQUFDO1FBQzVELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQStLcEQsQ0FBQztJQWpPQzs7OztPQUlHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRTtZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDdEU7UUFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxD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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts b/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts new file mode 100644 index 0000000..17e0870 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts @@ -0,0 +1,26 @@ +import { PlaybackManager, PlaybackState } from './PlaybackManager'; +/** + * A read-only representation of the playback. + */ +export declare class PlaybackStatus { + private readonly playback; + constructor(playback: PlaybackManager); + /** + * Convert seconds to frames using the current framerate. + * + * @param seconds - The seconds to convert. + */ + secondsToFrames(seconds: number): number; + /** + * Convert frames to seconds using the current framerate. + * + * @param frames - The frames to convert. + */ + framesToSeconds(frames: number): number; + get time(): number; + get frame(): number; + get speed(): number; + get fps(): number; + get state(): PlaybackState; +} +//# sourceMappingURL=PlaybackStatus.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts.map b/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts.map new file mode 100644 index 0000000..ce96057 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PlaybackStatus.d.ts","sourceRoot":"","sources":["../../src/app/PlaybackStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEjE;;GAEG;AACH,qBAAa,cAAc;IACN,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAE7D;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM;IAItC;;;;OAIG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IAIrC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,aAAa,CAEhC;CACF"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.js b/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.js new file mode 100644 index 0000000..1b4769d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/PlaybackStatus.js @@ -0,0 +1,40 @@ +/** + * A read-only representation of the playback. + */ +export class PlaybackStatus { + constructor(playback) { + this.playback = playback; + } + /** + * Convert seconds to frames using the current framerate. + * + * @param seconds - The seconds to convert. + */ + secondsToFrames(seconds) { + return Math.ceil(seconds * this.playback.fps); + } + /** + * Convert frames to seconds using the current framerate. + * + * @param frames - The frames to convert. + */ + framesToSeconds(frames) { + return frames / this.playback.fps; + } + get time() { + return this.framesToSeconds(this.playback.frame); + } + get frame() { + return this.playback.frame; + } + get speed() { + return this.playback.speed; + } + get fps() { + return this.playback.fps; + } + get state() { + return this.playback.state; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWJhY2tTdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1BsYXliYWNrU3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0MsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRWpFOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsT0FBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsTUFBYztRQUNuQyxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Player.d.ts b/node_modules/@motion-canvas/core/lib/app/Player.d.ts new file mode 100644 index 0000000..34ef5c9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Player.d.ts @@ -0,0 +1,117 @@ +import { Project } from './Project'; +import { PlaybackManager } from './PlaybackManager'; +import { AudioManager } from '../media'; +import { Logger } from './Logger'; +import { Vector2 } from '../types'; +import { PlaybackStatus } from './PlaybackStatus'; +export interface PlayerState extends Record { + paused: boolean; + loop: boolean; + muted: boolean; + speed: number; +} +export interface PlayerSettings { + range: [number, number]; + fps: number; + size: Vector2; + audioOffset: number; + resolutionScale: number; +} +/** + * The player logic used by the editor and embeddable player. + * + * @remarks + * This class builds on top of the `PlaybackManager` to provide a simple + * interface similar to other media players. It plays through the animation + * using a real-time update loop and optionally synchronises it with audio. + */ +export declare class Player { + private project; + private settings; + private initialState; + private initialFrame; + /** + * Triggered during each iteration of the update loop when the frame is ready + * to be rendered. + * + * @remarks + * Player does not perform any rendering on its own. For the animation to be + * visible, another class must subscribe to this event and perform the + * rendering itself. {@link Stage} can be used to display the animation. + * + * @eventProperty + */ + get onRender(): import("../events").Subscribable>; + private readonly render; + get onStateChanged(): import("../events").SubscribableValueEvent; + private readonly playerState; + get onFrameChanged(): import("../events").SubscribableValueEvent; + private readonly frame; + get onDurationChanged(): import("../events").SubscribableValueEvent; + private readonly duration; + /** + * Triggered right after recalculation finishes. + * + * @remarks + * Can be used to provide visual feedback. + * + * @eventProperty + */ + get onRecalculated(): import("../events").Subscribable>; + private readonly recalculated; + readonly playback: PlaybackManager; + readonly status: PlaybackStatus; + readonly audio: AudioManager; + readonly logger: Logger; + private readonly lock; + private startTime; + private endTime; + private requestId; + private renderTime; + private requestedSeek; + private requestedRecalculation; + private size; + private resolutionScale; + private active; + private get startFrame(); + private get endFrame(); + private get finished(); + constructor(project: Project, settings?: Partial, initialState?: Partial, initialFrame?: number); + configure(settings: PlayerSettings): Promise; + requestSeek(value: number): void; + requestPreviousFrame(): void; + requestNextFrame(): void; + requestReset(): void; + toggleLoop(value?: boolean): void; + togglePlayback(value?: boolean): void; + toggleAudio(value?: boolean): void; + setSpeed(value: number): void; + setVariables(variables: Record): void; + /** + * Activate the player. + * + * @remarks + * A player needs to be active in order for the update loop to run. Each + * player is active by default. + */ + activate(): void; + /** + * Deactivate the player. + * + * @remarks + * Deactivating the player prevents its update loop from running. This should + * be done before disposing the player, to prevent it from running in the + * background. + * + * Just pausing the player does not stop the loop. + */ + deactivate(): void; + private requestRecalculation; + private prepare; + private run; + private request; + private clampRange; + private isInRange; + private syncAudio; +} +//# sourceMappingURL=Player.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Player.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Player.d.ts.map new file mode 100644 index 0000000..2064388 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Player.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/app/Player.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Player.js b/node_modules/@motion-canvas/core/lib/app/Player.js new file mode 100644 index 0000000..c8e2274 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Player.js @@ -0,0 +1,376 @@ +import { PlaybackManager, PlaybackState } from './PlaybackManager'; +import { AudioManager } from '../media'; +import { clamp } from '../tweening'; +import { AsyncEventDispatcher, EventDispatcher, ValueDispatcher, } from '../events'; +import { Vector2 } from '../types'; +import { PlaybackStatus } from './PlaybackStatus'; +import { Semaphore } from '../utils'; +import { EditableTimeEvents } from '../scenes/timeEvents'; +const MAX_AUDIO_DESYNC = 1 / 50; +/** + * The player logic used by the editor and embeddable player. + * + * @remarks + * This class builds on top of the `PlaybackManager` to provide a simple + * interface similar to other media players. It plays through the animation + * using a real-time update loop and optionally synchronises it with audio. + */ +export class Player { + /** + * Triggered during each iteration of the update loop when the frame is ready + * to be rendered. + * + * @remarks + * Player does not perform any rendering on its own. For the animation to be + * visible, another class must subscribe to this event and perform the + * rendering itself. {@link Stage} can be used to display the animation. + * + * @eventProperty + */ + get onRender() { + return this.render.subscribable; + } + get onStateChanged() { + return this.playerState.subscribable; + } + get onFrameChanged() { + return this.frame.subscribable; + } + get onDurationChanged() { + return this.duration.subscribable; + } + /** + * Triggered right after recalculation finishes. + * + * @remarks + * Can be used to provide visual feedback. + * + * @eventProperty + */ + get onRecalculated() { + return this.recalculated.subscribable; + } + get startFrame() { + return Math.min(this.playback.duration, this.status.secondsToFrames(this.startTime)); + } + get endFrame() { + return Math.min(this.playback.duration, this.status.secondsToFrames(this.endTime)); + } + get finished() { + return this.playback.finished || this.playback.frame >= this.endFrame; + } + constructor(project, settings = {}, initialState = {}, initialFrame = -1) { + this.project = project; + this.settings = settings; + this.initialState = initialState; + this.initialFrame = initialFrame; + this.render = new AsyncEventDispatcher(); + this.frame = new ValueDispatcher(0); + this.duration = new ValueDispatcher(0); + this.recalculated = new EventDispatcher(); + this.lock = new Semaphore(); + this.startTime = 0; + this.endTime = Infinity; + this.requestId = null; + this.renderTime = 0; + this.requestedSeek = -1; + this.requestedRecalculation = true; + this.active = false; + this.playerState = new ValueDispatcher({ + loop: true, + muted: true, + speed: 1, + ...initialState, + paused: true, + }); + this.requestedSeek = initialFrame; + this.logger = this.project.logger; + this.playback = new PlaybackManager(); + this.status = new PlaybackStatus(this.playback); + this.audio = new AudioManager(this.logger); + this.size = settings.size ?? new Vector2(1920, 1080); + this.resolutionScale = settings.resolutionScale ?? 1; + this.startTime = settings.range?.[0] ?? 0; + this.endTime = settings.range?.[1] ?? Infinity; + this.playback.fps = settings.fps ?? 60; + this.audio.setOffset(settings.audioOffset ?? 0); + if (project.audio) { + this.audio.setSource(project.audio); + } + const scenes = []; + for (const description of project.scenes) { + const scene = new description.klass({ + ...description, + playback: this.status, + logger: this.project.logger, + size: this.size, + resolutionScale: this.resolutionScale, + timeEventsClass: EditableTimeEvents, + }); + description.onReplaced?.subscribe(description => { + scene.reload(description); + }, false); + scene.onReloaded.subscribe(() => this.requestRecalculation()); + scene.variables.updateSignals(project.variables ?? {}); + scenes.push(scene); + } + this.playback.setup(scenes); + this.activate(); + } + async configure(settings) { + await this.lock.acquire(); + let frame = this.playback.frame; + let recalculate = false; + this.startTime = settings.range[0]; + this.endTime = settings.range[1]; + if (this.playback.fps !== settings.fps) { + const ratio = settings.fps / this.playback.fps; + this.playback.fps = settings.fps; + frame = Math.floor(frame * ratio); + recalculate = true; + } + if (!settings.size.exactlyEquals(this.size) || + settings.resolutionScale !== this.resolutionScale) { + this.size = settings.size; + this.resolutionScale = settings.resolutionScale; + this.playback.reload({ + size: this.size, + resolutionScale: this.resolutionScale, + }); + } + if (settings.audioOffset !== undefined) { + this.audio.setOffset(settings.audioOffset); + } + this.lock.release(); + if (recalculate) { + this.playback.reload(); + this.frame.current = frame; + this.requestRecalculation(); + this.requestedSeek = frame; + } + } + requestSeek(value) { + this.requestedSeek = this.clampRange(value); + } + requestPreviousFrame() { + this.requestedSeek = this.frame.current - this.playback.speed; + } + requestNextFrame() { + this.requestedSeek = this.frame.current + this.playback.speed; + } + requestReset() { + this.requestedSeek = 0; + } + toggleLoop(value = !this.playerState.current.loop) { + if (value !== this.playerState.current.loop) { + this.playerState.current = { + ...this.playerState.current, + loop: value, + }; + } + } + togglePlayback(value = this.playerState.current.paused) { + if (value === this.playerState.current.paused) { + this.playerState.current = { + ...this.playerState.current, + paused: !value, + }; + // hitting play after the animation has finished should reset the + // playback, even if looping is disabled. + if (value && + !this.playerState.current.loop && + this.playback.frame === this.playback.duration) { + this.requestReset(); + } + } + } + toggleAudio(value = this.playerState.current.muted) { + if (value === this.playerState.current.muted) { + this.playerState.current = { + ...this.playerState.current, + muted: !value, + }; + } + } + setSpeed(value) { + if (value !== this.playerState.current.speed) { + this.playback.speed = value; + this.playback.reload(); + this.playerState.current = { + ...this.playerState.current, + speed: value, + }; + this.requestRecalculation(); + } + } + setVariables(variables) { + for (const scene of this.playback.onScenesRecalculated.current) { + scene.variables.updateSignals(variables); + } + } + /** + * Activate the player. + * + * @remarks + * A player needs to be active in order for the update loop to run. Each + * player is active by default. + */ + activate() { + this.active = true; + this.request(); + } + /** + * Deactivate the player. + * + * @remarks + * Deactivating the player prevents its update loop from running. This should + * be done before disposing the player, to prevent it from running in the + * background. + * + * Just pausing the player does not stop the loop. + */ + deactivate() { + this.active = false; + if (this.requestId !== null) { + cancelAnimationFrame(this.requestId); + this.requestId = null; + } + } + requestRecalculation() { + this.requestedRecalculation = true; + this.request(); + } + async prepare() { + const state = { + ...this.playerState.current, + seek: this.requestedSeek, + }; + this.requestedSeek = -1; + // Recalculate the project if necessary + if (this.requestedRecalculation) { + if (state.seek < 0) { + state.seek = this.playback.frame; + } + try { + await this.playback.recalculate(); + this.duration.current = this.playback.frame; + this.recalculated.dispatch(); + } + catch (e) { + this.requestSeek(state.seek); + throw e; + } + finally { + this.requestedRecalculation = false; + } + } + // Pause if reached the end or the range is 0 + if ((!state.loop && this.finished && !state.paused && state.seek < 0) || + this.endFrame === this.startFrame) { + this.togglePlayback(false); + state.paused = true; + } + // Seek to the beginning if looping is enabled + if (state.loop && + (state.seek > this.endFrame || (this.finished && !state.paused)) && + this.startFrame !== this.endTime) { + state.seek = this.startFrame; + } + // Pause / play audio. + const audioPaused = state.paused || this.finished || !this.audio.isInRange(this.status.time); + if (await this.audio.setPaused(audioPaused)) { + this.syncAudio(-3); + } + this.audio.setMuted(state.muted); + return state; + } + async run() { + const state = await this.prepare(); + const previousState = this.playback.state; + this.playback.state = state.paused + ? PlaybackState.Paused + : PlaybackState.Playing; + // Seek to the given frame + if (state.seek >= 0 || !this.isInRange(this.status.frame)) { + const seekFrame = state.seek < 0 ? this.status.frame : state.seek; + const clampedFrame = this.clampRange(seekFrame); + this.logger.profile('seek time'); + await this.playback.seek(clampedFrame); + this.logger.profile('seek time'); + this.syncAudio(-3); + } + // Do nothing if paused or is ahead of the audio. + else if (state.paused || + (state.speed === 1 && + this.audio.isReady() && + this.audio.isInRange(this.status.time) && + this.audio.getTime() < this.status.time)) { + if (state.paused && previousState !== PlaybackState.Paused) { + await this.render.dispatch(); + } + // Sync the audio if the animation is too far ahead. + if (!state.paused && + this.status.time > this.audio.getTime() + MAX_AUDIO_DESYNC) { + this.syncAudio(); + } + this.request(); + return; + } + // Seek to synchronize animation with audio. + else if (this.audio.isReady() && + state.speed === 1 && + this.audio.isInRange(this.status.time) && + this.status.framesToSeconds(this.playback.frame + 1) < + this.audio.getTime() - MAX_AUDIO_DESYNC) { + const seekFrame = this.status.secondsToFrames(this.audio.getTime()); + await this.playback.seek(seekFrame); + } + // Simply move forward one frame + else if (this.status.frame < this.endFrame) { + await this.playback.progress(); + if (state.speed !== 1) { + this.syncAudio(); + } + } + // Pause if a new slide has just started. + if (!state.paused && this.playback.currentScene.slides.isWaiting()) { + this.togglePlayback(false); + state.paused = true; + } + // Draw the project + await this.render.dispatch(); + this.frame.current = this.playback.frame; + this.request(); + } + request() { + if (!this.active) + return; + this.requestId ?? (this.requestId = requestAnimationFrame(async (time) => { + this.requestId = null; + if (time - this.renderTime >= 1000 / (this.status.fps + 5)) { + this.renderTime = time; + await this.lock.acquire(); + try { + await this.run(); + } + catch (e) { + this.logger.error(e); + } + this.lock.release(); + } + else { + this.request(); + } + })); + } + clampRange(frame) { + return clamp(this.startFrame, this.endFrame, frame); + } + isInRange(frame) { + return frame >= this.startFrame && frame <= this.endFrame; + } + syncAudio(frameOffset = 0) { + this.audio.setTime(this.status.framesToSeconds(this.playback.frame + frameOffset)); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9QbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFbEMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBaUJ4RCxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFaEM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxNQUFNO0lBQ2pCOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBR0QsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7SUFDdkMsQ0FBQztJQUdELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ2pDLENBQUM7SUFHRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFHRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFD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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Presenter.d.ts b/node_modules/@motion-canvas/core/lib/app/Presenter.d.ts new file mode 100644 index 0000000..b576143 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Presenter.d.ts @@ -0,0 +1,68 @@ +import type { Project } from './Project'; +import type { Slide } from '../scenes'; +import { PlaybackManager } from './PlaybackManager'; +import { Stage, StageSettings } from './Stage'; +export interface PresenterSettings extends StageSettings { + name: string; + fps: number; + slide: string | null; +} +export interface PresenterInfo extends Record { + currentSlideId: string | null; + nextSlideId: string | null; + hasNext: boolean; + hasPrevious: boolean; + isWaiting: boolean; + count: number; + index: number | null; +} +export declare enum PresenterState { + Initial = 0, + Working = 1, + Aborting = 2 +} +export declare class Presenter { + private project; + get onStateChanged(): import("../events").SubscribableValueEvent; + private readonly state; + get onInfoChanged(): import("../events").SubscribableValueEvent; + private readonly info; + get onSlidesChanged(): import("../events").SubscribableValueEvent; + private readonly slides; + readonly stage: Stage; + private readonly lock; + readonly playback: PlaybackManager; + private readonly status; + private readonly logger; + private abortController; + private renderTime; + private requestId; + private requestedResume; + private requestedSlide; + constructor(project: Project); + /** + * Present the animation. + * + * @param settings - The presentation settings. + */ + present(settings: PresenterSettings): Promise; + /** + * Abort the ongoing presentation process. + */ + abort(): void; + /** + * Resume the presentation if waiting for the next slide. + */ + resume(): void; + requestFirstSlide(): void; + requestLastSlide(): void; + requestPreviousSlide(): void; + requestNextSlide(): void; + requestSlide(id: string): void; + private run; + private reloadScenes; + private loop; + private request; + private updateInfo; +} +//# sourceMappingURL=Presenter.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Presenter.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Presenter.d.ts.map new file mode 100644 index 0000000..288fecc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Presenter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Presenter.d.ts","sourceRoot":"","sources":["../../src/app/Presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAEvC,OAAO,KAAK,EAAQ,KAAK,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAO7C,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,oBAAY,cAAc;IACxB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;CACT;AAKD,qBAAa,SAAS;IAwCD,OAAO,CAAC,OAAO;IAvClC,IAAW,cAAc,+DAExB;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+C;IAErE,IAAW,aAAa,8DAEvB;IACD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAQlB;IAEH,IAAW,eAAe,wDAEzB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE3D,SAAgB,KAAK,QAAe;IAEpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAIN;gBAEW,OAAO,EAAE,OAAO;IAoB3C;;;;OAIG;IACU,OAAO,CAAC,QAAQ,EAAE,iBAAiB;IAehD;;OAEG;IACI,KAAK;IAMZ;;OAEG;IACI,MAAM;IAIN,iBAAiB;IAOjB,gBAAgB;IAOhB,oBAAoB;IAIpB,gBAAgB;IAIhB,YAAY,CAAC,EAAE,EAAE,MAAM;YAIhB,GAAG;YAyBH,YAAY;YAcZ,IAAI;IA2ClB,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,UAAU;CAsBnB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Presenter.js b/node_modules/@motion-canvas/core/lib/app/Presenter.js new file mode 100644 index 0000000..19406f3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Presenter.js @@ -0,0 +1,236 @@ +import { PlaybackManager, PlaybackState } from './PlaybackManager'; +import { Stage } from './Stage'; +import { ValueDispatcher } from '../events'; +import { Vector2 } from '../types'; +import { PlaybackStatus } from './PlaybackStatus'; +import { Semaphore } from '../utils'; +import { ReadOnlyTimeEvents } from '../scenes/timeEvents'; +export var PresenterState; +(function (PresenterState) { + PresenterState[PresenterState["Initial"] = 0] = "Initial"; + PresenterState[PresenterState["Working"] = 1] = "Working"; + PresenterState[PresenterState["Aborting"] = 2] = "Aborting"; +})(PresenterState || (PresenterState = {})); +const NextSlide = Symbol('@motion-canvas/core/app/NextSlide'); +const PreviousSlide = Symbol('@motion-canvas/core/app/PreviousSlide'); +export class Presenter { + get onStateChanged() { + return this.state.subscribable; + } + get onInfoChanged() { + return this.info.subscribable; + } + get onSlidesChanged() { + return this.slides.subscribable; + } + constructor(project) { + this.project = project; + this.state = new ValueDispatcher(PresenterState.Initial); + this.info = new ValueDispatcher({ + currentSlideId: null, + nextSlideId: null, + hasNext: false, + hasPrevious: false, + isWaiting: false, + index: null, + count: 0, + }); + this.slides = new ValueDispatcher([]); + this.stage = new Stage(); + this.lock = new Semaphore(); + this.abortController = null; + this.renderTime = 0; + this.requestId = null; + this.requestedResume = false; + this.requestedSlide = null; + this.logger = project.logger; + this.playback = new PlaybackManager(); + this.status = new PlaybackStatus(this.playback); + const scenes = []; + for (const description of project.scenes) { + const scene = new description.klass({ + ...description, + meta: description.meta.clone(), + logger: this.logger, + playback: this.status, + size: new Vector2(1920, 1080), + resolutionScale: 1, + timeEventsClass: ReadOnlyTimeEvents, + }); + scenes.push(scene); + } + this.playback.setup(scenes); + } + /** + * Present the animation. + * + * @param settings - The presentation settings. + */ + async present(settings) { + if (this.state.current !== PresenterState.Initial) + return; + await this.lock.acquire(); + this.state.current = PresenterState.Working; + try { + this.abortController = new AbortController(); + await this.run(settings, this.abortController.signal); + } + catch (e) { + this.project.logger.error(e); + } + this.state.current = PresenterState.Initial; + this.lock.release(); + } + /** + * Abort the ongoing presentation process. + */ + abort() { + if (this.state.current === PresenterState.Initial) + return; + this.abortController?.abort(); + this.state.current = PresenterState.Aborting; + } + /** + * Resume the presentation if waiting for the next slide. + */ + resume() { + this.requestedResume = true; + } + requestFirstSlide() { + const first = this.playback.slides[0]; + if (first) { + this.requestedSlide = first.id; + } + } + requestLastSlide() { + const last = this.playback.slides.at(-1); + if (last) { + this.requestedSlide = last.id; + } + } + requestPreviousSlide() { + this.requestedSlide = PreviousSlide; + } + requestNextSlide() { + this.requestedSlide = NextSlide; + } + requestSlide(id) { + this.requestedSlide = id; + } + async run(settings, signal) { + this.stage.configure(settings); + this.playback.fps = settings.fps; + await this.reloadScenes(settings); + if (signal.aborted) + return; + this.playback.state = PlaybackState.Playing; + await this.playback.recalculate(); + if (signal.aborted) + return; + this.slides.current = this.playback.slides; + this.playback.state = PlaybackState.Presenting; + await this.playback.reset(); + if (signal.aborted) + return; + if (settings.slide) { + await this.playback.goTo(settings.slide); + if (signal.aborted) + return; + } + await new Promise(resolve => { + signal.addEventListener('abort', resolve); + this.request(); + }); + } + async reloadScenes(settings) { + for (let i = 0; i < this.project.scenes.length; i++) { + const description = this.project.scenes[i]; + const scene = this.playback.onScenesRecalculated.current[i]; + scene.reload({ + config: description.onReplaced.current.config, + size: settings.size, + resolutionScale: settings.resolutionScale, + }); + scene.meta.set(description.meta.get()); + scene.variables.updateSignals(this.project.variables ?? {}); + } + } + async loop() { + const slide = this.requestedSlide; + const resume = this.requestedResume; + this.requestedResume = false; + this.requestedSlide = null; + // Resume the presentation + if (resume) { + this.playback.currentScene.slides.resume(); + } + // Seek to the given slide + if (slide !== null) { + this.logger.profile('slide time'); + this.playback.state = PlaybackState.Playing; + if (slide === PreviousSlide) { + await this.playback.goBack(); + } + else if (slide === NextSlide) { + await this.playback.goForward(); + } + else { + await this.playback.goTo(slide); + } + this.logger.profile('slide time'); + } + // Move forward one frame + else if (!this.playback.finished) { + this.playback.state = PlaybackState.Presenting; + await this.playback.progress(); + } + // Draw the project + await this.stage.render(this.playback.currentScene, this.playback.previousScene); + if (!this.abortController?.signal.aborted) { + this.updateInfo(); + this.request(); + } + } + request() { + if (this.abortController?.signal.aborted) { + return; + } + this.requestId ?? (this.requestId = requestAnimationFrame(async (time) => { + this.requestId = null; + if (time - this.renderTime >= 1000 / (this.status.fps + 5)) { + this.renderTime = time; + try { + await this.loop(); + } + catch (e) { + this.logger.error(e); + this.abortController?.abort(); + } + } + else { + this.request(); + } + })); + } + updateInfo() { + const slides = this.playback.currentScene.slides; + const currentSlide = slides.getCurrent() ?? null; + const index = this.playback.slides.indexOf(currentSlide); + const info = { + currentSlideId: currentSlide?.id ?? null, + nextSlideId: this.playback.slides[index + 1]?.id ?? null, + hasNext: index !== null && index < this.playback.slides.length - 1, + hasPrevious: index !== null && index > 0, + isWaiting: slides.isWaiting(), + count: this.playback.slides.length, + index, + }; + for (const [key, value] of Object.entries(info)) { + if (this.info.current[key] !== value) { + this.info.current = info; + break; + } + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlc2VudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9QcmVzZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsS0FBSyxFQUFnQixNQUFNLFNBQVMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFrQnhELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIseURBQU8sQ0FBQTtJQUNQLHlEQUFPLENBQUE7SUFDUCwyREFBUSxDQUFBO0FBQ1YsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDOUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7QUFFdEUsTUFBTSxPQUFPLFNBQVM7SUFDcEIsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDakMsQ0FBQztJQUdELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2hDLENBQUM7SUFXRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBbUJELFlBQTJCLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxP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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Project.d.ts b/node_modules/@motion-canvas/core/lib/app/Project.d.ts new file mode 100644 index 0000000..d0ba578 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Project.d.ts @@ -0,0 +1,36 @@ +import { FullSceneDescription } from '../scenes'; +import { Logger } from './Logger'; +import type { ProjectMetadata } from './ProjectMetadata'; +import type { Plugin } from '../plugin'; +import { SettingsMetadata } from './SettingsMetadata'; +export interface ProjectSettings { + name?: string; + scenes: FullSceneDescription[]; + plugins?: Plugin[]; + logger?: Logger; + audio?: string; + /** + * @deprecated Configure the offset in the Video Settings tab of th editor. + */ + audioOffset?: number; + variables?: Record; +} +export interface Versions { + core: string; + two: string | null; + ui: string | null; + vitePlugin: string | null; +} +export interface Project { + name: string; + scenes: FullSceneDescription[]; + plugins: Plugin[]; + logger: Logger; + meta: ProjectMetadata; + settings: SettingsMetadata; + audio?: string; + variables?: Record; + versions: Versions; +} +export declare function makeProject(settings: ProjectSettings): ProjectSettings; +//# sourceMappingURL=Project.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Project.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Project.d.ts.map new file mode 100644 index 0000000..6b6dced --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Project.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../src/app/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,mBAEpD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Project.js b/node_modules/@motion-canvas/core/lib/app/Project.js new file mode 100644 index 0000000..7d08121 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Project.js @@ -0,0 +1,4 @@ +export function makeProject(settings) { + return settings; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvUHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ0EsTUFBTSxVQUFVLFdBQVcsQ0FBQyxRQUF5QjtJQUNuRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts b/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts new file mode 100644 index 0000000..dcef818 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts @@ -0,0 +1,48 @@ +import { ColorMetaField, EnumMetaField, ExporterMetaField, MetaField, NumberMetaField, ObjectMetaField, RangeMetaField, Vector2MetaField } from '../meta'; +import { CanvasColorSpace, Color, Vector2 } from '../types'; +import type { Project } from './Project'; +declare function createProjectMetadata(project: Project): { + version: MetaField; + shared: ObjectMetaField<{ + background: ColorMetaField; + range: RangeMetaField; + size: Vector2MetaField; + audioOffset: NumberMetaField; + }>; + preview: ObjectMetaField<{ + fps: NumberMetaField; + resolutionScale: EnumMetaField; + }>; + rendering: ObjectMetaField<{ + fps: NumberMetaField; + resolutionScale: EnumMetaField; + colorSpace: EnumMetaField; + exporter: ExporterMetaField; + }>; +}; +export declare class ProjectMetadata extends ObjectMetaField> { + constructor(project: Project); + getFullPreviewSettings(): { + fps: number; + resolutionScale: number; + background: Color | null; + range: [number, number]; + size: Vector2; + audioOffset: number; + }; + getFullRenderingSettings(): { + fps: number; + resolutionScale: number; + colorSpace: CanvasColorSpace; + background: Color | null; + range: [number, number]; + size: Vector2; + audioOffset: number; + exporter: { + name: string; + options: unknown; + }; + }; +} +export {}; +//# sourceMappingURL=ProjectMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts.map b/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts.map new file mode 100644 index 0000000..8d041ae --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ProjectMetadata.d.ts","sourceRoot":"","sources":["../../src/app/ProjectMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAE1D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAEvC,iBAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;EAwB9C;AAED,qBAAa,eAAgB,SAAQ,eAAe,CAClD,UAAU,CAAC,OAAO,qBAAqB,CAAC,CACzC;gBACoB,OAAO,EAAE,OAAO;IAI5B,sBAAsB,IAAI;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;QACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,EAAE,OAAO,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB;IAOM,wBAAwB,IAAI;QACjC,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,gBAAgB,CAAC;QAC7B,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;QACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,EAAE,OAAO,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;CAMF"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.js b/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.js new file mode 100644 index 0000000..97e5708 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/ProjectMetadata.js @@ -0,0 +1,44 @@ +import { ColorMetaField, EnumMetaField, ExporterMetaField, MetaField, NumberMetaField, ObjectMetaField, RangeMetaField, Vector2MetaField, } from '../meta'; +import { Vector2 } from '../types'; +import { ColorSpaces, FrameRates, Scales } from './presets'; +function createProjectMetadata(project) { + const meta = { + version: new MetaField('version', 1), + shared: new ObjectMetaField('General', { + background: new ColorMetaField('background', null), + range: new RangeMetaField('range', [0, Infinity]), + size: new Vector2MetaField('resolution', new Vector2(1920, 1080)), + audioOffset: new NumberMetaField('audio offset', 0), + }), + preview: new ObjectMetaField('Preview', { + fps: new NumberMetaField('frame rate', 30).setPresets(FrameRates), + resolutionScale: new EnumMetaField('scale', Scales, 1), + }), + rendering: new ObjectMetaField('Rendering', { + fps: new NumberMetaField('frame rate', 60).setPresets(FrameRates), + resolutionScale: new EnumMetaField('scale', Scales, 1), + colorSpace: new EnumMetaField('color space', ColorSpaces), + exporter: new ExporterMetaField('exporter', project), + }), + }; + meta.shared.audioOffset.disable(!project.audio); + return meta; +} +export class ProjectMetadata extends ObjectMetaField { + constructor(project) { + super('project', createProjectMetadata(project)); + } + getFullPreviewSettings() { + return { + ...this.shared.get(), + ...this.preview.get(), + }; + } + getFullRenderingSettings() { + return { + ...this.shared.get(), + ...this.rendering.get(), + }; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamVjdE1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9Qcm9qZWN0TWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUEwQixPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRzFELFNBQVMscUJBQXFCLENBQUMsT0FBZ0I7SUFDN0MsTUFBTSxJQUFJLEdBQUc7UUFDWCxPQUFPLEVBQUUsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLEVBQUUsSUFBSSxlQUFlLENBQUMsU0FBUyxFQUFFO1lBQ3JDLFVBQVUsRUFBRSxJQUFJLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsSUFBSSxFQUFFLElBQUksZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRSxXQUFXLEVBQUUsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUNwRCxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRTtZQUN0QyxHQUFHLEVBQUUsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDakUsZUFBZSxFQUFFLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZELENBQUM7UUFDRixTQUFTLEVBQUUsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFFO1lBQzFDLEdBQUcsRUFBRSxJQUFJLGVBQWUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUNqRSxlQUFlLEVBQUUsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEQsVUFBVSxFQUFFLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7WUFDekQsUUFBUSxFQUFFLElBQUksaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztTQUNyRCxDQUFDO0tBQ0gsQ0FBQztJQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVoRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUVwQztJQUNDLFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sc0JBQXNCO1FBUTNCLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTSx3QkFBd0I7UUFhN0IsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDcEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtTQUN4QixDQUFDO0lBQ0osQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Renderer.d.ts b/node_modules/@motion-canvas/core/lib/app/Renderer.d.ts new file mode 100644 index 0000000..e211b0d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Renderer.d.ts @@ -0,0 +1,73 @@ +import type { Project } from './Project'; +import { Stage, StageSettings } from './Stage'; +import { TimeEstimator } from './TimeEstimator'; +export interface RendererSettings extends StageSettings { + name: string; + range: [number, number]; + fps: number; + exporter: { + name: string; + options: unknown; + }; +} +export declare enum RendererState { + Initial = 0, + Working = 1, + Aborting = 2 +} +export declare enum RendererResult { + Success = 0, + Error = 1, + Aborted = 2 +} +/** + * The rendering logic used by the editor to export animations. + * + * @remarks + * This class uses the `PlaybackManager` to render animations. In contrast to a + * player, a renderer does not use an update loop. It plays through the + * animation as fast as it can, occasionally pausing to keep the UI responsive. + * + * The actual exporting is outsourced to an {@link Exporter}. + */ +export declare class Renderer { + private project; + get onStateChanged(): import("../events").SubscribableValueEvent; + private readonly state; + get onFinished(): import("../events").Subscribable>; + private readonly finished; + get onFrameChanged(): import("../events").SubscribableValueEvent; + private readonly frame; + readonly stage: Stage; + readonly estimator: TimeEstimator; + private readonly lock; + private readonly playback; + private readonly status; + private exporter; + private abortController; + constructor(project: Project); + /** + * Render the animation using the provided settings. + * + * @param settings - The rendering settings. + */ + render(settings: RendererSettings): Promise; + /** + * Abort the ongoing render process. + */ + abort(): void; + /** + * Export an individual frame. + * + * @remarks + * This method always uses the default `ImageExporter`. + * + * @param settings - The rendering settings. + * @param time - The timestamp to export. + */ + renderFrame(settings: RendererSettings, time: number): Promise; + private run; + private reloadScenes; + private exportFrame; +} +//# sourceMappingURL=Renderer.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Renderer.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Renderer.d.ts.map new file mode 100644 index 0000000..45f6c28 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Renderer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../src/app/Renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAIvC,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAO7C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;CACT;AAED,oBAAY,cAAc;IACxB,OAAO,IAAA;IACP,KAAK,IAAA;IACL,OAAO,IAAA;CACR;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IAyBA,OAAO,CAAC,OAAO;IAxBlC,IAAW,cAAc,8DAExB;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IAEpE,IAAW,UAAU,uGAEpB;IACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAElE,IAAW,cAAc,uDAExB;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAEhD,SAAgB,KAAK,QAAe;IACpC,SAAgB,SAAS,gBAAuB;IAEhD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,eAAe,CAAgC;gBAE5B,OAAO,EAAE,OAAO;IAmB3C;;;;OAIG;IACU,MAAM,CAAC,QAAQ,EAAE,gBAAgB;IA4B9C;;OAEG;IACI,KAAK;IAMZ;;;;;;;;OAQG;IACU,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM;YAgCnD,GAAG;YAiFH,YAAY;YAcZ,WAAW;CAiB1B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Renderer.js b/node_modules/@motion-canvas/core/lib/app/Renderer.js new file mode 100644 index 0000000..171ff1f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Renderer.js @@ -0,0 +1,233 @@ +import { PlaybackManager, PlaybackState } from './PlaybackManager'; +import { Stage } from './Stage'; +import { EventDispatcher, ValueDispatcher } from '../events'; +import { Vector2 } from '../types'; +import { PlaybackStatus } from './PlaybackStatus'; +import { Semaphore } from '../utils'; +import { ReadOnlyTimeEvents } from '../scenes/timeEvents'; +import { clampRemap } from '../tweening'; +import { TimeEstimator } from './TimeEstimator'; +export var RendererState; +(function (RendererState) { + RendererState[RendererState["Initial"] = 0] = "Initial"; + RendererState[RendererState["Working"] = 1] = "Working"; + RendererState[RendererState["Aborting"] = 2] = "Aborting"; +})(RendererState || (RendererState = {})); +export var RendererResult; +(function (RendererResult) { + RendererResult[RendererResult["Success"] = 0] = "Success"; + RendererResult[RendererResult["Error"] = 1] = "Error"; + RendererResult[RendererResult["Aborted"] = 2] = "Aborted"; +})(RendererResult || (RendererResult = {})); +/** + * The rendering logic used by the editor to export animations. + * + * @remarks + * This class uses the `PlaybackManager` to render animations. In contrast to a + * player, a renderer does not use an update loop. It plays through the + * animation as fast as it can, occasionally pausing to keep the UI responsive. + * + * The actual exporting is outsourced to an {@link Exporter}. + */ +export class Renderer { + get onStateChanged() { + return this.state.subscribable; + } + get onFinished() { + return this.finished.subscribable; + } + get onFrameChanged() { + return this.frame.subscribable; + } + constructor(project) { + this.project = project; + this.state = new ValueDispatcher(RendererState.Initial); + this.finished = new EventDispatcher(); + this.frame = new ValueDispatcher(0); + this.stage = new Stage(); + this.estimator = new TimeEstimator(); + this.lock = new Semaphore(); + this.exporter = null; + this.abortController = null; + this.playback = new PlaybackManager(); + this.status = new PlaybackStatus(this.playback); + const scenes = []; + for (const description of project.scenes) { + const scene = new description.klass({ + ...description, + meta: description.meta.clone(), + logger: this.project.logger, + playback: this.status, + size: new Vector2(1920, 1080), + resolutionScale: 1, + timeEventsClass: ReadOnlyTimeEvents, + }); + scenes.push(scene); + } + this.playback.setup(scenes); + } + /** + * Render the animation using the provided settings. + * + * @param settings - The rendering settings. + */ + async render(settings) { + if (this.state.current !== RendererState.Initial) + return; + await this.lock.acquire(); + this.estimator.reset(); + this.state.current = RendererState.Working; + let result; + try { + this.abortController = new AbortController(); + result = await this.run(settings, this.abortController.signal); + } + catch (e) { + this.project.logger.error(e); + result = RendererResult.Error; + if (this.exporter) { + try { + await this.exporter.stop?.(result); + } + catch (_) { + // do nothing + } + this.exporter = null; + } + } + this.estimator.update(1); + this.state.current = RendererState.Initial; + this.finished.dispatch(result); + this.lock.release(); + } + /** + * Abort the ongoing render process. + */ + abort() { + if (this.state.current !== RendererState.Working) + return; + this.abortController?.abort(); + this.state.current = RendererState.Aborting; + } + /** + * Export an individual frame. + * + * @remarks + * This method always uses the default `ImageExporter`. + * + * @param settings - The rendering settings. + * @param time - The timestamp to export. + */ + async renderFrame(settings, time) { + await this.lock.acquire(); + try { + const frame = this.status.secondsToFrames(time); + this.stage.configure(settings); + this.playback.fps = settings.fps; + this.playback.state = PlaybackState.Rendering; + await this.reloadScenes(settings); + await this.playback.reset(); + await this.playback.seek(frame); + await this.stage.render(this.playback.currentScene, this.playback.previousScene); + if (import.meta.hot) { + import.meta.hot.send('motion-canvas:export', { + frame, + data: this.stage.finalBuffer.toDataURL('image/png'), + mimeType: 'image/png', + subDirectories: ['still', this.project.name], + }); + } + } + catch (e) { + this.project.logger.error(e); + } + this.lock.release(); + } + async run(settings, signal) { + const exporterClass = this.project.meta.rendering.exporter.exporters.find(exporter => exporter.id === settings.exporter.name); + if (!exporterClass) { + this.project.logger.error(`Could not find the "${settings.exporter.name}" exporter.`); + return RendererResult.Error; + } + this.exporter = await exporterClass.create(this.project, settings); + if (this.exporter.configuration) { + settings = { + ...settings, + ...((await this.exporter.configuration()) ?? {}), + }; + } + this.stage.configure(settings); + this.playback.fps = settings.fps; + this.playback.state = PlaybackState.Rendering; + const from = this.status.secondsToFrames(settings.range[0]); + this.frame.current = from; + await this.reloadScenes(settings); + await this.playback.recalculate(); + if (signal.aborted) + return RendererResult.Aborted; + await this.playback.reset(); + if (signal.aborted) + return RendererResult.Aborted; + const to = Math.min(this.playback.duration, this.status.secondsToFrames(settings.range[1])); + await this.playback.seek(from); + if (signal.aborted) + return RendererResult.Aborted; + await this.exporter.start?.(); + let lastRefresh = performance.now(); + let result = RendererResult.Success; + try { + this.estimator.reset(1 / (to - from)); + await this.exportFrame(signal); + this.estimator.update(clampRemap(from, to, 0, 1, this.playback.frame)); + if (signal.aborted) { + result = RendererResult.Aborted; + } + else { + let finished = false; + while (!finished) { + await this.playback.progress(); + await this.exportFrame(signal); + this.estimator.update(clampRemap(from, to, 0, 1, this.playback.frame)); + if (performance.now() - lastRefresh > 1 / 30) { + lastRefresh = performance.now(); + await new Promise(resolve => setTimeout(resolve, 0)); + } + if (this.playback.finished || this.playback.frame >= to) { + finished = true; + } + if (signal.aborted) { + result = RendererResult.Aborted; + finished = true; + } + } + } + } + catch (e) { + this.project.logger.error(e); + result = RendererResult.Error; + } + await this.exporter.stop?.(result); + this.exporter = null; + return result; + } + async reloadScenes(settings) { + for (let i = 0; i < this.project.scenes.length; i++) { + const description = this.project.scenes[i]; + const scene = this.playback.onScenesRecalculated.current[i]; + scene.reload({ + config: description.onReplaced.current.config, + size: settings.size, + resolutionScale: settings.resolutionScale, + }); + scene.meta.set(description.meta.get()); + scene.variables.updateSignals(this.project.variables ?? {}); + } + } + async exportFrame(signal) { + this.frame.current = this.playback.frame; + await this.stage.render(this.playback.currentScene, this.playback.previousScene); + const sceneFrame = this.playback.frame - this.playback.currentScene.firstFrame; + await this.exporter.handleFrame(this.stage.finalBuffer, this.playback.frame, sceneFrame, this.playback.currentScene.name, signal); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFDLEtBQUssRUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDM0QsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQVk5QyxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUFPLENBQUE7SUFDUCx1REFBTyxDQUFBO0lBQ1AseURBQVEsQ0FBQTtBQUNWLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIseURBQU8sQ0FBQTtJQUNQLHFEQUFLLENBQUE7SUFDTCx5REFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDbkIsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDakMsQ0FBQztJQUdELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUks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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts b/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts new file mode 100644 index 0000000..ed8ee7e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts @@ -0,0 +1,21 @@ +import { BoolMetaField, ColorMetaField, MetaField, ObjectMetaField, Vector2MetaField } from '../meta'; +/** + * Create a runtime representation of the settings metadata. + */ +export declare function createSettingsMetadata(): ObjectMetaField<{ + version: MetaField; + appearance: ObjectMetaField<{ + color: ColorMetaField; + font: BoolMetaField; + coordinates: BoolMetaField; + }>; + defaults: ObjectMetaField<{ + background: ColorMetaField; + size: Vector2MetaField; + }>; +}>; +/** + * A runtime representation of the settings metadata. + */ +export type SettingsMetadata = ReturnType; +//# sourceMappingURL=SettingsMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts.map b/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts.map new file mode 100644 index 0000000..86e8f1c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SettingsMetadata.d.ts","sourceRoot":"","sources":["../../src/app/SettingsMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,eAAe,EACf,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,wBAAgB,sBAAsB;;;;;;;;;;;GAwBrC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.js b/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.js new file mode 100644 index 0000000..09d94a3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/SettingsMetadata.js @@ -0,0 +1,20 @@ +import { BoolMetaField, ColorMetaField, MetaField, ObjectMetaField, Vector2MetaField, } from '../meta'; +import { Vector2, Color } from '../types'; +/** + * Create a runtime representation of the settings metadata. + */ +export function createSettingsMetadata() { + return new ObjectMetaField('Application Settings', { + version: new MetaField('version', 1), + appearance: new ObjectMetaField('Appearance', { + color: new ColorMetaField('accent color', new Color('#33a6ff')).describe('The accent color for the user interface. (Leave empty to use the default color)'), + font: new BoolMetaField('legacy font', false).describe("Use the 'JetBrains Mono' font for the user interface."), + coordinates: new BoolMetaField('coordinates', true).describe('Display mouse coordinates within the preview window.'), + }), + defaults: new ObjectMetaField('Defaults', { + background: new ColorMetaField('background', null).describe('The default background color used in new projects.'), + size: new Vector2MetaField('resolution', new Vector2(1920, 1080)).describe('The default resolution used in new projects.'), + }), + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2V0dGluZ3NNZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvU2V0dGluZ3NNZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZUFBZSxFQUNmLGdCQUFnQixHQUNqQixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUV4Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRTtRQUNqRCxPQUFPLEVBQUUsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwQyxVQUFVLEVBQUUsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFO1lBQzVDLEtBQUssRUFBRSxJQUFJLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ3RFLGlGQUFpRixDQUNsRjtZQUNELElBQUksRUFBRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUNwRCx1REFBdUQsQ0FDeEQ7WUFDRCxXQUFXLEVBQUUsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FDMUQsc0RBQXNELENBQ3ZEO1NBQ0YsQ0FBQztRQUNGLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUU7WUFDeEMsVUFBVSxFQUFFLElBQUksY0FBYyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQ3pELG9EQUFvRCxDQUNyRDtZQUNELElBQUksRUFBRSxJQUFJLGdCQUFnQixDQUN4QixZQUFZLEVBQ1osSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUN4QixDQUFDLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQztTQUMzRCxDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Stage.d.ts b/node_modules/@motion-canvas/core/lib/app/Stage.d.ts new file mode 100644 index 0000000..0d17d3a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Stage.d.ts @@ -0,0 +1,31 @@ +import { Scene } from '../scenes'; +import { CanvasColorSpace, Vector2 } from '../types'; +import type { Color } from '../types'; +export interface StageSettings { + size: Vector2; + resolutionScale: number; + colorSpace: CanvasColorSpace; + background: Color | string | null; +} +/** + * Manages canvases on which an animation can be displayed. + */ +export declare class Stage { + private background; + private resolutionScale; + private colorSpace; + private size; + readonly finalBuffer: HTMLCanvasElement; + private readonly currentBuffer; + private readonly previousBuffer; + private context; + private currentContext; + private previousContext; + private get canvasSize(); + constructor(); + configure({ colorSpace, size, resolutionScale, background, }: Partial): void; + render(currentScene: Scene, previousScene: Scene | null): Promise; + transformCanvas(context: CanvasRenderingContext2D): void; + resizeCanvas(context: CanvasRenderingContext2D): void; +} +//# sourceMappingURL=Stage.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Stage.d.ts.map b/node_modules/@motion-canvas/core/lib/app/Stage.d.ts.map new file mode 100644 index 0000000..db6c128 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Stage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Stage.d.ts","sourceRoot":"","sources":["../../src/app/Stage.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAC;AAChC,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,KAAK;IAGhB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,IAAI,CAAgB;IAE5B,SAAgB,WAAW,EAAE,iBAAiB,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IAEnD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,KAAK,UAAU,GAErB;;IAaM,SAAS,CAAC,EACf,UAA4B,EAC5B,IAAgB,EAChB,eAAsC,EACtC,UAA4B,GAC7B,EAAE,OAAO,CAAC,aAAa,CAAC;IAyBZ,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,IAAI;IAwB7D,eAAe,CAAC,OAAO,EAAE,wBAAwB;IAYjD,YAAY,CAAC,OAAO,EAAE,wBAAwB;CAKtD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/Stage.js b/node_modules/@motion-canvas/core/lib/app/Stage.js new file mode 100644 index 0000000..13817f3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/Stage.js @@ -0,0 +1,74 @@ +import { getContext } from '../utils'; +import { Vector2 } from '../types'; +/** + * Manages canvases on which an animation can be displayed. + */ +export class Stage { + get canvasSize() { + return this.size.scale(this.resolutionScale); + } + constructor() { + // TODO Consider adding pooling for canvases. + this.background = null; + this.resolutionScale = 1; + this.colorSpace = 'srgb'; + this.size = Vector2.zero; + this.finalBuffer = document.createElement('canvas'); + this.currentBuffer = document.createElement('canvas'); + this.previousBuffer = document.createElement('canvas'); + const colorSpace = this.colorSpace; + this.context = getContext({ colorSpace }, this.finalBuffer); + this.currentContext = getContext({ colorSpace }, this.currentBuffer); + this.previousContext = getContext({ colorSpace }, this.previousBuffer); + } + configure({ colorSpace = this.colorSpace, size = this.size, resolutionScale = this.resolutionScale, background = this.background, }) { + if (colorSpace !== this.colorSpace) { + this.colorSpace = colorSpace; + this.context = getContext({ colorSpace }, this.finalBuffer); + this.currentContext = getContext({ colorSpace }, this.currentBuffer); + this.previousContext = getContext({ colorSpace }, this.previousBuffer); + } + if (!size.exactlyEquals(this.size) || + resolutionScale !== this.resolutionScale) { + this.resolutionScale = resolutionScale; + this.size = size; + this.resizeCanvas(this.context); + this.resizeCanvas(this.currentContext); + this.resizeCanvas(this.previousContext); + } + this.background = + typeof background === 'string' + ? background + : background?.serialize() ?? null; + } + async render(currentScene, previousScene) { + if (previousScene) { + this.transformCanvas(this.previousContext); + await previousScene.render(this.previousContext); + } + this.transformCanvas(this.currentContext); + await currentScene.render(this.currentContext); + const size = this.canvasSize; + this.context.clearRect(0, 0, size.width, size.height); + if (this.background) { + this.context.save(); + this.context.fillStyle = this.background; + this.context.fillRect(0, 0, size.width, size.height); + this.context.restore(); + } + if (previousScene) { + this.context.drawImage(this.previousBuffer, 0, 0); + } + this.context.drawImage(this.currentBuffer, 0, 0); + } + transformCanvas(context) { + const offset = this.canvasSize.scale(0.5); + context.setTransform(this.resolutionScale, 0, 0, this.resolutionScale, offset.x, offset.y); + } + resizeCanvas(context) { + const size = this.canvasSize; + context.canvas.width = size.width; + context.canvas.height = size.height; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1N0YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFtQixPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFVbkQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sS0FBSztJQWdCaEIsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDtRQW5CQSw2Q0FBNkM7UUFFckMsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFDcEIsZUFBVSxHQUFxQixNQUFNLENBQUM7UUFDdEMsU0FBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFlMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLElBQUksQ0FB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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts b/node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts new file mode 100644 index 0000000..d9b8a3f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts @@ -0,0 +1,52 @@ +/** + * An estimate of the time remaining until the process is finished. + */ +export interface TimeEstimate { + /** + * The completion percentage ranging from `0` to `1`. + */ + completion: number; + /** + * The time passed since the beginning of the process in milliseconds. + */ + elapsed: number; + /** + * The estimated time remaining until the process is finished in milliseconds. + */ + eta: number; +} +/** + * Calculates the estimated time remaining until a process is finished. + */ +export declare class TimeEstimator { + get onCompletionChanged(): import("../events").SubscribableValueEvent; + private readonly completion; + private startTimestamp; + private lastUpdateTimestamp; + private nextCompletion; + /** + * Get the current time estimate. + * + * @param timestamp - The timestamp to calculate the estimate against. + * Defaults to `performance.now()`. + */ + estimate(timestamp?: number): TimeEstimate; + /** + * Update the completion percentage. + * + * @param completion - The completion percentage ranging from `0` to `1`. + * @param timestamp - A timestamp at which the process was updated. + * Defaults to `performance.now()`. + */ + update(completion: number, timestamp?: number): void; + /** + * Reset the estimator. + * + * @param nextCompletion - If known, the completion percentage of the next + * update. + * @param timestamp - A timestamp at which the process started. + * Defaults to `performance.now()`. + */ + reset(nextCompletion?: number, timestamp?: number): void; +} +//# sourceMappingURL=TimeEstimator.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts.map b/node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts.map new file mode 100644 index 0000000..71ddef7 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/TimeEstimator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TimeEstimator.d.ts","sourceRoot":"","sources":["../../src/app/TimeEstimator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,IAAW,mBAAmB,uDAE7B;IACD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,cAAc,CAAK;IAE3B;;;;;OAKG;IACI,QAAQ,CAAC,SAAS,SAAoB,GAAG,YAAY;IAkB5D;;;;;;OAMG;IACI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,SAAoB;IAK/D;;;;;;;OAOG;IACI,KAAK,CAAC,cAAc,SAAI,EAAE,SAAS,SAAoB;CAM/D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/TimeEstimator.js b/node_modules/@motion-canvas/core/lib/app/TimeEstimator.js new file mode 100644 index 0000000..9b7499a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/TimeEstimator.js @@ -0,0 +1,65 @@ +import { ValueDispatcher } from '../events'; +import { clamp } from '../tweening'; +/** + * Calculates the estimated time remaining until a process is finished. + */ +export class TimeEstimator { + constructor() { + this.completion = new ValueDispatcher(0); + this.startTimestamp = 0; + this.lastUpdateTimestamp = 0; + this.nextCompletion = 0; + } + get onCompletionChanged() { + return this.completion.subscribable; + } + /** + * Get the current time estimate. + * + * @param timestamp - The timestamp to calculate the estimate against. + * Defaults to `performance.now()`. + */ + estimate(timestamp = performance.now()) { + const elapsed = timestamp - this.startTimestamp; + const completion = this.completion.current; + let eta = Infinity; + if (completion >= 1) { + eta = 0; + } + else if (completion > 0) { + const lastUpdateDuration = this.lastUpdateTimestamp - this.startTimestamp; + eta = lastUpdateDuration / completion - elapsed; + eta = Math.max(0, eta); + } + else if (this.nextCompletion > 0) { + eta = elapsed / this.nextCompletion - elapsed; + } + return { completion, elapsed, eta }; + } + /** + * Update the completion percentage. + * + * @param completion - The completion percentage ranging from `0` to `1`. + * @param timestamp - A timestamp at which the process was updated. + * Defaults to `performance.now()`. + */ + update(completion, timestamp = performance.now()) { + this.completion.current = clamp(0, 1, completion); + this.lastUpdateTimestamp = timestamp; + } + /** + * Reset the estimator. + * + * @param nextCompletion - If known, the completion percentage of the next + * update. + * @param timestamp - A timestamp at which the process started. + * Defaults to `performance.now()`. + */ + reset(nextCompletion = 0, timestamp = performance.now()) { + this.startTimestamp = timestamp; + this.lastUpdateTimestamp = timestamp; + this.completion.current = 0; + this.nextCompletion = nextCompletion; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUVzdGltYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvVGltZUVzdGltYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFvQmxDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFJbUIsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUN4QixtQkFBYyxHQUFHLENBQUMsQ0FBQztJQW9EN0IsQ0FBQztJQTFEQyxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFNRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUUzQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFDbkIsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFO1lBQ25CLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDVDthQUFNLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRTtZQUN6QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFFLEdBQUcsR0FBRyxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQ2hELEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUU7WUFDbEMsR0FBRyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztTQUMvQztRQUVELE9BQU8sRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBa0IsRUFBRSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts b/node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts new file mode 100644 index 0000000..fd694ad --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts @@ -0,0 +1,17 @@ +import { Project, ProjectSettings, Versions } from './Project'; +import { Plugin } from '../plugin'; +import { MetaFile } from '../meta'; +/** + * Bootstrap a project. + * + * @param name - The name of the project. + * @param versions - Package versions. + * @param plugins - Loaded plugins. + * @param config - Project settings. + * @param metaFile - The project meta file. + * @param settingsFile - The settings meta file. + * + * @internal + */ +export declare function bootstrap(name: string, versions: Versions, plugins: Plugin[], config: ProjectSettings, metaFile: MetaFile, settingsFile: MetaFile): Project; +//# sourceMappingURL=bootstrap.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts.map b/node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts.map new file mode 100644 index 0000000..24c2e69 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/bootstrap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/app/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAGjC;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EACvB,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC1B,OAAO,CA+BT"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/bootstrap.js b/node_modules/@motion-canvas/core/lib/app/bootstrap.js new file mode 100644 index 0000000..4b4964c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/bootstrap.js @@ -0,0 +1,41 @@ +import { Logger } from './Logger'; +import { ProjectMetadata } from './ProjectMetadata'; +import DefaultPlugin from '../plugin/DefaultPlugin'; +import { createSettingsMetadata } from './SettingsMetadata'; +/** + * Bootstrap a project. + * + * @param name - The name of the project. + * @param versions - Package versions. + * @param plugins - Loaded plugins. + * @param config - Project settings. + * @param metaFile - The project meta file. + * @param settingsFile - The settings meta file. + * + * @internal + */ +export function bootstrap(name, versions, plugins, config, metaFile, settingsFile) { + const settings = createSettingsMetadata(); + settingsFile.attach(settings); + const defaultPlugin = DefaultPlugin(); + plugins = [ + defaultPlugin, + ...(config.plugins ?? []), + ...plugins.filter(plugin => plugin.name !== defaultPlugin.name), + ]; + const reducedSettings = plugins.reduce((settings, plugin) => ({ + ...settings, + ...(plugin.settings?.(settings) ?? {}), + }), { name, ...config }); + const project = { ...reducedSettings }; + project.versions = versions; + project.logger = new Logger(); + project.plugins = plugins; + project.settings = settings; + project.meta = new ProjectMetadata(project); + project.meta.shared.set(settings.defaults.get()); + metaFile.attach(project.meta); + plugins.forEach(plugin => plugin.project?.(project)); + return project; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixJQUFZLEVBQ1osUUFBa0IsRUFDbEIsT0FBaUIsRUFDakIsTUFBdUIsRUFDdkIsUUFBdUIsRUFDdkIsWUFBMkI7SUFFM0IsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUMxQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlCLE1BQU0sYUFBYSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLE9BQU8sR0FBRztRQUNSLGFBQWE7UUFDYixHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDekIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxDQUFDO0tBQ2hFLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNwQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckIsR0FBRyxRQUFRO1FBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDdkMsQ0FBQyxFQUNGLEVBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFvQixDQUNyQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsRUFBQyxHQUFHLGVBQWUsRUFBWSxDQUFDO0lBQ2hELE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzVCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztJQUM5QixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMxQixPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM1QixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFOUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/index.d.ts b/node_modules/@motion-canvas/core/lib/app/index.d.ts new file mode 100644 index 0000000..3e12563 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/index.d.ts @@ -0,0 +1,19 @@ +/** + * Main Motion Canvas classes. + * + * @packageDocumentation + */ +export * from './bootstrap'; +export * from './Exporter'; +export * from './ImageExporter'; +export * from './Logger'; +export * from './PlaybackManager'; +export * from './PlaybackStatus'; +export * from './Player'; +export * from './Presenter'; +export * from './Project'; +export * from './ProjectMetadata'; +export * from './Renderer'; +export * from './SettingsMetadata'; +export * from './Stage'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/index.d.ts.map b/node_modules/@motion-canvas/core/lib/app/index.d.ts.map new file mode 100644 index 0000000..af6669b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/index.js b/node_modules/@motion-canvas/core/lib/app/index.js new file mode 100644 index 0000000..0b7e2c2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/index.js @@ -0,0 +1,19 @@ +/** + * Main Motion Canvas classes. + * + * @packageDocumentation + */ +export * from './bootstrap'; +export * from './Exporter'; +export * from './ImageExporter'; +export * from './Logger'; +export * from './PlaybackManager'; +export * from './PlaybackStatus'; +export * from './Player'; +export * from './Presenter'; +export * from './Project'; +export * from './ProjectMetadata'; +export * from './Renderer'; +export * from './SettingsMetadata'; +export * from './Stage'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxTQUFTLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/presets.d.ts b/node_modules/@motion-canvas/core/lib/app/presets.d.ts new file mode 100644 index 0000000..fbb4e15 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/presets.d.ts @@ -0,0 +1,7 @@ +import { CanvasColorSpace, CanvasOutputMimeType } from '../types'; +import { MetaOption } from '../meta'; +export declare const Scales: MetaOption[]; +export declare const ColorSpaces: MetaOption[]; +export declare const FileTypes: MetaOption[]; +export declare const FrameRates: MetaOption[]; +//# sourceMappingURL=presets.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/presets.d.ts.map b/node_modules/@motion-canvas/core/lib/app/presets.d.ts.map new file mode 100644 index 0000000..fda269a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/presets.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/app/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,UAAU,CAAC;AAChE,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAEnC,eAAO,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAKtC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAGrD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,oBAAoB,CAAC,EAIvD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAG1C,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/app/presets.js b/node_modules/@motion-canvas/core/lib/app/presets.js new file mode 100644 index 0000000..70cfebb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/app/presets.js @@ -0,0 +1,20 @@ +export const Scales = [ + { value: 0.25, text: '0.25x (Quarter)' }, + { value: 0.5, text: `0.5x (Half)` }, + { value: 1, text: `1.0x (Full)` }, + { value: 2, text: `2.0x (Double)` }, +]; +export const ColorSpaces = [ + { value: 'srgb', text: 'sRGB' }, + { value: 'display-p3', text: 'DCI-P3' }, +]; +export const FileTypes = [ + { value: 'image/png', text: 'png' }, + { value: 'image/jpeg', text: 'jpeg' }, + { value: 'image/webp', text: 'webp' }, +]; +export const FrameRates = [ + { value: 30, text: '30 FPS' }, + { value: 60, text: '60 FPS' }, +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvcHJlc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQXlCO0lBQzFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUM7SUFDdEMsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUM7SUFDakMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUM7SUFDL0IsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUM7Q0FDbEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBbUM7SUFDekQsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUM7SUFDN0IsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUM7Q0FDdEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBdUM7SUFDM0QsRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUM7SUFDakMsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUM7SUFDbkMsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUM7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBeUI7SUFDOUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUM7SUFDM0IsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUM7Q0FDNUIsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts b/node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts new file mode 100644 index 0000000..d52ad20 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts @@ -0,0 +1,2 @@ +export declare function decorate(fn: Callback, ...decorators: MethodDecorator[]): void; +//# sourceMappingURL=decorate.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts.map b/node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts.map new file mode 100644 index 0000000..51b8f1d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/decorate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decorate.d.ts","sourceRoot":"","sources":["../../src/decorators/decorate.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,eAAe,EAAE,QAQtE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/decorate.js b/node_modules/@motion-canvas/core/lib/decorators/decorate.js new file mode 100644 index 0000000..78de483 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/decorate.js @@ -0,0 +1,10 @@ +export function decorate(fn, ...decorators) { + const target = { [fn.name]: fn }; + const descriptor = Object.getOwnPropertyDescriptor(target, fn.name); + if (descriptor) { + for (let i = decorators.length - 1; i >= 0; i--) { + decorators[i](target, fn.name, descriptor); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9kZWNvcmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLEVBQVksRUFBRSxHQUFHLFVBQTZCO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLEVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDL0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO0tBQ0Y7QUFDSCxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts b/node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts new file mode 100644 index 0000000..8f275cd --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts @@ -0,0 +1,5 @@ +/** + * Create a deprecated decorator that marks methods as deprecated. + */ +export declare function deprecated(remarks?: string): MethodDecorator; +//# sourceMappingURL=deprecated.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts.map b/node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts.map new file mode 100644 index 0000000..954c8a9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/deprecated.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"deprecated.d.ts","sourceRoot":"","sources":["../../src/decorators/deprecated.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CAuB5D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/deprecated.js b/node_modules/@motion-canvas/core/lib/decorators/deprecated.js new file mode 100644 index 0000000..fdc39af --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/deprecated.js @@ -0,0 +1,23 @@ +import { deprecate } from '../utils'; +/** + * Create a deprecated decorator that marks methods as deprecated. + */ +export function deprecated(remarks) { + return function (target, propertyKey, descriptor) { + const name = target.constructor.name + ? `${target.constructor.name}.${propertyKey}` + : propertyKey; + const message = `${name}() has been deprecated.`; + if (descriptor.value) { + descriptor.value = deprecate(descriptor.value, message, remarks); + } + if (descriptor.get) { + descriptor.get = deprecate(descriptor.get, message, remarks); + } + if (descriptor.set) { + descriptor.set = deprecate(descriptor.set, message, remarks); + } + return descriptor; + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2RlcHJlY2F0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQzs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBZ0I7SUFDekMsT0FBTyxVQUNMLE1BQVcsRUFDWCxXQUE0QixFQUM1QixVQUE4QjtRQUU5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQVksV0FBVyxFQUFFO1lBQ3JELENBQUMsQ0FBUyxXQUFXLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLHlCQUF5QixDQUFDO1FBRWpELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNwQixVQUFVLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNsRTtRQUNELElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQixVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQixVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM5RDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNKLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/index.d.ts b/node_modules/@motion-canvas/core/lib/decorators/index.d.ts new file mode 100644 index 0000000..00b4863 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/index.d.ts @@ -0,0 +1,9 @@ +/** + * Property decorators. + * + * @packageDocumentation + */ +export * from './decorate'; +export * from './lazy'; +export * from './threadable'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/index.d.ts.map b/node_modules/@motion-canvas/core/lib/decorators/index.d.ts.map new file mode 100644 index 0000000..338bf59 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/index.js b/node_modules/@motion-canvas/core/lib/decorators/index.js new file mode 100644 index 0000000..5ce1ed4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/index.js @@ -0,0 +1,9 @@ +/** + * Property decorators. + * + * @packageDocumentation + */ +export * from './decorate'; +export * from './lazy'; +export * from './threadable'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxjQUFjLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts b/node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts new file mode 100644 index 0000000..e91e2cf --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts @@ -0,0 +1,14 @@ +/** + * Create a lazy decorator. + * + * @remarks + * A property marked as lazy will not be initialized until it's requested for + * the first time. Lazy properties are read-only. + * + * Must be used for any static properties that require the DOM API to be + * initialized. + * + * @param factory - A function that returns the value of this property. + */ +export declare function lazy(factory: () => unknown): PropertyDecorator; +//# sourceMappingURL=lazy.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts.map b/node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts.map new file mode 100644 index 0000000..e623ed2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/lazy.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/decorators/lazy.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,iBAAiB,CAY9D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/lazy.js b/node_modules/@motion-canvas/core/lib/decorators/lazy.js new file mode 100644 index 0000000..90e3793 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/lazy.js @@ -0,0 +1,27 @@ +const UNINITIALIZED = Symbol.for('@motion-canvas/core/decorators/UNINITIALIZED'); +/** + * Create a lazy decorator. + * + * @remarks + * A property marked as lazy will not be initialized until it's requested for + * the first time. Lazy properties are read-only. + * + * Must be used for any static properties that require the DOM API to be + * initialized. + * + * @param factory - A function that returns the value of this property. + */ +export function lazy(factory) { + return (target, propertyKey) => { + let value = UNINITIALIZED; + Object.defineProperty(target, propertyKey, { + get() { + if (value === UNINITIALIZED) { + value = factory.call(this); + } + return value; + }, + }); + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2xhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FDOUIsOENBQThDLENBQy9DLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQUMsT0FBc0I7SUFDekMsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUM3QixJQUFJLEtBQUssR0FBWSxhQUFhLENBQUM7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLEdBQUc7Z0JBQ0QsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFO29CQUMzQixLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUI7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts b/node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts new file mode 100644 index 0000000..c0f6bc8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts @@ -0,0 +1,2 @@ +export declare function threadable(customName?: string): MethodDecorator; +//# sourceMappingURL=threadable.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts.map b/node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts.map new file mode 100644 index 0000000..6d39f28 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/threadable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"threadable.d.ts","sourceRoot":"","sources":["../../src/decorators/threadable.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAS/D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/decorators/threadable.js b/node_modules/@motion-canvas/core/lib/decorators/threadable.js new file mode 100644 index 0000000..d4e81ed --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/decorators/threadable.js @@ -0,0 +1,7 @@ +export function threadable(customName) { + return function (_, propertyKey, descriptor) { + descriptor.value.prototype.name = customName ?? propertyKey; + descriptor.value.prototype.threadable = true; + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL3RocmVhZGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFVBQVUsQ0FBQyxVQUFtQjtJQUM1QyxPQUFPLFVBQ0wsQ0FBVSxFQUNWLFdBQTRCLEVBQzVCLFVBQThCO1FBRTlCLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLElBQUksV0FBVyxDQUFDO1FBQzVELFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts b/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts new file mode 100644 index 0000000..28b4ee2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts @@ -0,0 +1,44 @@ +import { EventDispatcherBase, Subscribable } from './EventDispatcherBase'; +export interface AsyncEventHandler { + (value: T): Promise; +} +/** + * Dispatches an asynchronous {@link SubscribableEvent}. + * + * @remarks + * The {@link dispatch} method returns a promise that resolves when all the + * handlers resolve. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onValueChanged { + * return this.value.subscribable; + * } + * // create a private dispatcher + * private value = new AsyncEventDispatcher(); + * + * private async dispatchExample() { + * // dispatching returns a Promise. + * await this.value.dispatch(0); + * } + * } + * ``` + * + * @typeParam T - The type of the argument passed to subscribers. + */ +export declare class AsyncEventDispatcher extends EventDispatcherBase> { + dispatch(value: T): Promise; +} +/** + * Provides safe access to the public interface of {@link AsyncEventDispatcher}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + * + * @typeParam T - The type of the argument passed to subscribers. + */ +export type SubscribableAsyncEvent = Subscribable>; +//# sourceMappingURL=AsyncEventDispatcher.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts.map b/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts.map new file mode 100644 index 0000000..7014432 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncEventDispatcher.d.ts","sourceRoot":"","sources":["../../src/events/AsyncEventDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AAExE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAC9D,CAAC,EACD,iBAAiB,CAAC,CAAC,CAAC,CACrB;IACc,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.js b/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.js new file mode 100644 index 0000000..31291af --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/AsyncEventDispatcher.js @@ -0,0 +1,33 @@ +import { EventDispatcherBase } from './EventDispatcherBase'; +/** + * Dispatches an asynchronous {@link SubscribableEvent}. + * + * @remarks + * The {@link dispatch} method returns a promise that resolves when all the + * handlers resolve. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onValueChanged { + * return this.value.subscribable; + * } + * // create a private dispatcher + * private value = new AsyncEventDispatcher(); + * + * private async dispatchExample() { + * // dispatching returns a Promise. + * await this.value.dispatch(0); + * } + * } + * ``` + * + * @typeParam T - The type of the argument passed to subscribers. + */ +export class AsyncEventDispatcher extends EventDispatcherBase { + async dispatch(value) { + await Promise.all(this.notifySubscribers(value)); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXN5bmNFdmVudERpc3BhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL0FzeW5jRXZlbnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxtQkFBbUIsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBTXhFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxPQUFPLG9CQUF3QixTQUFRLG1CQUc1QztJQUNRLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBUTtRQUM1QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts b/node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts new file mode 100644 index 0000000..851411b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts @@ -0,0 +1,37 @@ +import { EventDispatcherBase, Subscribable } from './EventDispatcherBase'; +/** + * Dispatches a {@link SubscribableEvent}. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onValueChanged { + * return this.value.subscribable; + * } + * // create a private dispatcher + * private value = new EventDispatcher(); + * + * private dispatchExample() { + * // dispatching will notify all subscribers. + * this.value.dispatch(0); + * } + * } + * ``` + * + * @typeParam T - The type of the value argument to subscribers. + */ +export declare class EventDispatcher extends EventDispatcherBase { + dispatch(value: T): void; +} +/** + * Provides safe access to the public interface of {@link EventDispatcher}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + * + * @typeParam T - The type of the argument passed to subscribers. + */ +export type SubscribableEvent = Subscribable; +//# sourceMappingURL=EventDispatcher.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts.map b/node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts.map new file mode 100644 index 0000000..5c8d63e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/EventDispatcher.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EventDispatcher.d.ts","sourceRoot":"","sources":["../../src/events/EventDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,CAAC;CAGzB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/EventDispatcher.js b/node_modules/@motion-canvas/core/lib/events/EventDispatcher.js new file mode 100644 index 0000000..9225c9b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/EventDispatcher.js @@ -0,0 +1,29 @@ +import { EventDispatcherBase } from './EventDispatcherBase'; +/** + * Dispatches a {@link SubscribableEvent}. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onValueChanged { + * return this.value.subscribable; + * } + * // create a private dispatcher + * private value = new EventDispatcher(); + * + * private dispatchExample() { + * // dispatching will notify all subscribers. + * this.value.dispatch(0); + * } + * } + * ``` + * + * @typeParam T - The type of the value argument to subscribers. + */ +export class EventDispatcher extends EventDispatcherBase { + dispatch(value) { + this.notifySubscribers(value); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9FdmVudERpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG1CQUFtQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFFeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sT0FBTyxlQUFtQixTQUFRLG1CQUFzQjtJQUNyRCxRQUFRLENBQUMsS0FBUTtRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts b/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts new file mode 100644 index 0000000..6c1bfaa --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts @@ -0,0 +1,55 @@ +export interface EventHandler { + (value: T): any; +} +/** + * A base for dispatching {@link Subscribable}s. + * + * @typeParam TValue - The type of the argument passed to subscribers. + * @typeParam THandler - The type of the callback function. + */ +export declare abstract class EventDispatcherBase = EventHandler> { + readonly subscribable: Subscribable; + private subscribers; + /** + * {@inheritDoc Subscribable.subscribe} + */ + subscribe(handler: THandler): () => void; + /** + * {@inheritDoc Subscribable.unsubscribe} + */ + unsubscribe(handler: THandler): void; + /** + * Unsubscribe all subscribers from the event. + */ + clear(): void; + protected notifySubscribers(value: TValue): ReturnType[]; +} +/** + * Provides safe access to the public interface of {@link EventDispatcherBase}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + * + * @typeParam TValue - The type of the argument passed to subscribers. + * @typeParam THandler - The type of the callback function. + */ +export declare class Subscribable = EventHandler> { + protected dispatcher: EventDispatcherBase; + constructor(dispatcher: EventDispatcherBase); + /** + * Subscribe to the event. + * + * @param handler - The handler to invoke when the event occurs. + * + * @returns A callback function that cancels the subscription. + */ + subscribe(handler: THandler): () => void; + /** + * Unsubscribe from the event. + * + * @param handler - The handler to unsubscribe. + */ + unsubscribe(handler: THandler): void; +} +//# sourceMappingURL=EventDispatcherBase.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts.map b/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts.map new file mode 100644 index 0000000..0435cdc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EventDispatcherBase.d.ts","sourceRoot":"","sources":["../../src/events/EventDispatcherBase.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;CACjB;AAED;;;;;GAKG;AACH,8BAAsB,mBAAmB,CACvC,MAAM,EACN,QAAQ,SAAS,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;IAE5D,SAAgB,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnC;IAEzB,OAAO,CAAC,WAAW,CAAuB;IAE1C;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,QAAQ;IAKlC;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,QAAQ;IAIpC;;OAEG;IACI,KAAK;IAIZ,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE;CAGnE;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY,CACvB,MAAM,EACN,QAAQ,SAAS,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;IAG1D,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAAjD,UAAU,EAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAG7D;;;;;;OAMG;IACI,SAAS,CAAC,OAAO,EAAE,QAAQ;IAIlC;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,QAAQ;CAGrC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.js b/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.js new file mode 100644 index 0000000..52c34db --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/EventDispatcherBase.js @@ -0,0 +1,68 @@ +/** + * A base for dispatching {@link Subscribable}s. + * + * @typeParam TValue - The type of the argument passed to subscribers. + * @typeParam THandler - The type of the callback function. + */ +export class EventDispatcherBase { + constructor() { + this.subscribable = new Subscribable(this); + this.subscribers = new Set(); + } + /** + * {@inheritDoc Subscribable.subscribe} + */ + subscribe(handler) { + this.subscribers.add(handler); + return () => this.unsubscribe(handler); + } + /** + * {@inheritDoc Subscribable.unsubscribe} + */ + unsubscribe(handler) { + this.subscribers.delete(handler); + } + /** + * Unsubscribe all subscribers from the event. + */ + clear() { + this.subscribers.clear(); + } + notifySubscribers(value) { + return [...this.subscribers].map(handler => handler(value)); + } +} +/** + * Provides safe access to the public interface of {@link EventDispatcherBase}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + * + * @typeParam TValue - The type of the argument passed to subscribers. + * @typeParam THandler - The type of the callback function. + */ +export class Subscribable { + constructor(dispatcher) { + this.dispatcher = dispatcher; + } + /** + * Subscribe to the event. + * + * @param handler - The handler to invoke when the event occurs. + * + * @returns A callback function that cancels the subscription. + */ + subscribe(handler) { + return this.dispatcher.subscribe(handler); + } + /** + * Unsubscribe from the event. + * + * @param handler - The handler to unsubscribe. + */ + unsubscribe(handler) { + this.dispatcher.unsubscribe(handler); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnREaXNwYXRjaGVyQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudHMvRXZlbnREaXNwYXRjaGVyQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0lBQXpDO1FBSWtCLGlCQUFZLEdBQzFCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVksQ0FBQztJQTJCNUMsQ0FBQztJQXpCQzs7T0FFRztJQUNJLFNBQVMsQ0FBQyxPQUFpQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLE9BQWlCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUNZLFVBQWlEO1FBQWpELGVBQVUsR0FBVixVQUFVLENBQXVDO0lBQzFELENBQUM7SUFFSjs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsT0FBaUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxPQUFpQjtRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts b/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts new file mode 100644 index 0000000..f8b5a3d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts @@ -0,0 +1,53 @@ +import { EventDispatcherBase, EventHandler, Subscribable } from './EventDispatcherBase'; +/** + * Dispatches a {@link SubscribableFlagEvent}. + * + * @remarks + * Subscribers are notified only when the flag is set. + * Subsequent calls to {@link raise} don't trigger anything. + * Any handlers added while the flag is raised are immediately invoked. + * + * Resetting the flag doesn't notify the subscribers, but raising it again does. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onChanged { + * return this.flag.subscribable; + * } + * // create a private dispatcher + * private flag = new FlagDispatcher(); + * + * private dispatchExample() { + * // setting the flag will notify all subscribers + * this.flag.raise(); + * } + * } + * ``` + */ +export declare class FlagDispatcher extends EventDispatcherBase { + private value; + /** + * Notify all current and future subscribers. + */ + raise(): void; + /** + * Stop notifying future subscribers. + */ + reset(): void; + /** + * Are subscribers being notified? + */ + isRaised(): boolean; + subscribe(handler: EventHandler): () => void; +} +/** + * Provides safe access to the public interface of {@link FlagDispatcher}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + */ +export type SubscribableFlagEvent = Subscribable; +//# sourceMappingURL=FlagDispatcher.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts.map b/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts.map new file mode 100644 index 0000000..bd8ed7a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FlagDispatcher.d.ts","sourceRoot":"","sources":["../../src/events/FlagDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAe,SAAQ,mBAAmB,CAAC,IAAI,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAS;IAEtB;;OAEG;IACI,KAAK;IAOZ;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACI,QAAQ;IAIR,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC;CAO7C;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.js b/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.js new file mode 100644 index 0000000..d41c2af --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/FlagDispatcher.js @@ -0,0 +1,63 @@ +import { EventDispatcherBase, } from './EventDispatcherBase'; +/** + * Dispatches a {@link SubscribableFlagEvent}. + * + * @remarks + * Subscribers are notified only when the flag is set. + * Subsequent calls to {@link raise} don't trigger anything. + * Any handlers added while the flag is raised are immediately invoked. + * + * Resetting the flag doesn't notify the subscribers, but raising it again does. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onChanged { + * return this.flag.subscribable; + * } + * // create a private dispatcher + * private flag = new FlagDispatcher(); + * + * private dispatchExample() { + * // setting the flag will notify all subscribers + * this.flag.raise(); + * } + * } + * ``` + */ +export class FlagDispatcher extends EventDispatcherBase { + constructor() { + super(...arguments); + this.value = false; + } + /** + * Notify all current and future subscribers. + */ + raise() { + if (!this.value) { + this.value = true; + this.notifySubscribers(); + } + } + /** + * Stop notifying future subscribers. + */ + reset() { + this.value = false; + } + /** + * Are subscribers being notified? + */ + isRaised() { + return this.value; + } + subscribe(handler) { + const unsubscribe = super.subscribe(handler); + if (this.value) { + handler(); + } + return unsubscribe; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxhZ0Rpc3BhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL0ZsYWdEaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsR0FHcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLG1CQUF5QjtJQUE3RDs7UUFDVSxVQUFLLEdBQUcsS0FBSyxDQUFDO0lBaUN4QixDQUFDO0lBL0JDOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU0sU0FBUyxDQUFDLE9BQTJCO1FBQzFDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts b/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts new file mode 100644 index 0000000..0f9875b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts @@ -0,0 +1,80 @@ +import { Subscribable, EventDispatcherBase, EventHandler } from './EventDispatcherBase'; +/** + * Dispatches a {@link SubscribableValueEvent} + * + * @remarks + * Changing the value stored by a value dispatcher will immediately notify all + * its subscribers. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onValueChanged { + * return this.value.subscribable; + * } + * // create a private dispatcher + * private value = new ValueDispatcher(0); + * + * private changingValueExample() { + * // changing the value will notify all subscribers. + * this.value.current = 7; + * } + * } + * ``` + * + * @typeParam T - The type of the value passed to subscribers. + */ +export declare class ValueDispatcher extends EventDispatcherBase { + private value; + readonly subscribable: SubscribableValueEvent; + /** + * {@inheritDoc SubscribableValueEvent.current} + */ + get current(): T; + /** + * Set the current value of this dispatcher. + * + * @remarks + * Setting the value will immediately notify all subscribers. + * + * @param value - The new value. + */ + set current(value: T); + /** + * @param value - The initial value. + */ + constructor(value: T); + /** + * {@inheritDoc SubscribableValueEvent.subscribe} + */ + subscribe(handler: EventHandler, dispatchImmediately?: boolean): () => void; +} +/** + * Provides safe access to the public interface of {@link ValueDispatcher}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + * + * @typeParam T - The type of the value passed to subscribers. + */ +export declare class SubscribableValueEvent extends Subscribable> { + /** + * Get the most recent value of this dispatcher. + */ + get current(): T; + /** + * Subscribe to the event. + * + * Subscribing will immediately invoke the handler with the most recent value. + * + * @param handler - The handler to invoke when the event occurs. + * @param dispatchImmediately - Whether the handler should be immediately + * invoked with the most recent value. + * + * @returns Callback function that cancels the subscription. + */ + subscribe(handler: EventHandler, dispatchImmediately?: boolean): () => void; +} +//# sourceMappingURL=ValueDispatcher.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts.map b/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts.map new file mode 100644 index 0000000..7fdd2b6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ValueDispatcher.d.ts","sourceRoot":"","sources":["../../src/events/ValueDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IA2BzC,OAAO,CAAC,KAAK;IA1BhC,SAAgB,YAAY,EAAE,sBAAsB,CAAC,CAAC,CAAC,CACpB;IAEnC;;OAEG;IACH,IAAW,OAAO,IAYQ,CAAC,CAV1B;IAED;;;;;;;OAOG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,CAAC,EAG1B;IAED;;OAEG;gBACwB,KAAK,EAAE,CAAC;IAInC;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,mBAAmB,UAAO;CAOtE;AAED;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,CAAC,CAAE,SAAQ,YAAY,CACzD,CAAC,EACD,YAAY,CAAC,CAAC,CAAC,CAChB;IACC;;OAEG;IACH,IAAW,OAAO,MAEjB;IAED;;;;;;;;;;OAUG;IACI,SAAS,CACd,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,mBAAmB,UAAO,GACzB,MAAM,IAAI;CAMd"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.js b/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.js new file mode 100644 index 0000000..be170d7 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/ValueDispatcher.js @@ -0,0 +1,97 @@ +import { Subscribable, EventDispatcherBase, } from './EventDispatcherBase'; +/** + * Dispatches a {@link SubscribableValueEvent} + * + * @remarks + * Changing the value stored by a value dispatcher will immediately notify all + * its subscribers. + * + * @example + * ```ts + * class Example { + * // expose the event to external classes + * public get onValueChanged { + * return this.value.subscribable; + * } + * // create a private dispatcher + * private value = new ValueDispatcher(0); + * + * private changingValueExample() { + * // changing the value will notify all subscribers. + * this.value.current = 7; + * } + * } + * ``` + * + * @typeParam T - The type of the value passed to subscribers. + */ +export class ValueDispatcher extends EventDispatcherBase { + /** + * {@inheritDoc SubscribableValueEvent.current} + */ + get current() { + return this.value; + } + /** + * Set the current value of this dispatcher. + * + * @remarks + * Setting the value will immediately notify all subscribers. + * + * @param value - The new value. + */ + set current(value) { + this.value = value; + this.notifySubscribers(value); + } + /** + * @param value - The initial value. + */ + constructor(value) { + super(); + this.value = value; + this.subscribable = new SubscribableValueEvent(this); + } + /** + * {@inheritDoc SubscribableValueEvent.subscribe} + */ + subscribe(handler, dispatchImmediately = true) { + const unsubscribe = super.subscribe(handler); + if (dispatchImmediately) { + handler(this.value); + } + return unsubscribe; + } +} +/** + * Provides safe access to the public interface of {@link ValueDispatcher}. + * + * @remarks + * External classes can use it to subscribe to an event without being able to + * dispatch it. + * + * @typeParam T - The type of the value passed to subscribers. + */ +export class SubscribableValueEvent extends Subscribable { + /** + * Get the most recent value of this dispatcher. + */ + get current() { + return this.dispatcher.current; + } + /** + * Subscribe to the event. + * + * Subscribing will immediately invoke the handler with the most recent value. + * + * @param handler - The handler to invoke when the event occurs. + * @param dispatchImmediately - Whether the handler should be immediately + * invoked with the most recent value. + * + * @returns Callback function that cancels the subscription. + */ + subscribe(handler, dispatchImmediately = true) { + return this.dispatcher.subscribe(handler, dispatchImmediately); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsdWVEaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9WYWx1ZURpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsR0FFcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxlQUFtQixTQUFRLG1CQUFzQjtJQUk1RDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLE9BQU8sQ0FBQyxLQUFRO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUEyQixLQUFRO1FBQ2pDLEtBQUssRUFBRSxDQUFDO1FBRGlCLFVBQUssR0FBTCxLQUFLLENBQUc7UUExQm5CLGlCQUFZLEdBQzFCLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUEyQm5DLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxPQUF3QixFQUFFLG1CQUFtQixHQUFHLElBQUk7UUFDbkUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLG1CQUFtQixFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxzQkFBMEIsU0FBUSxZQUc5QztJQUNDOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2hCLE9BQTRCLElBQUksQ0FBQyxVQUFXLENBQUMsT0FBTyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksU0FBUyxDQUNkLE9BQXdCLEVBQ3hCLG1CQUFtQixHQUFHLElBQUk7UUFFMUIsT0FBNEIsSUFBSSxDQUFDLFVBQVcsQ0FBQyxTQUFTLENBQ3BELE9BQU8sRUFDUCxtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/index.d.ts b/node_modules/@motion-canvas/core/lib/events/index.d.ts new file mode 100644 index 0000000..a8ee486 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/index.d.ts @@ -0,0 +1,11 @@ +/** + * Subscriptions and triggering of events. + * + * @packageDocumentation + */ +export * from './AsyncEventDispatcher'; +export * from './EventDispatcher'; +export * from './EventDispatcherBase'; +export * from './FlagDispatcher'; +export * from './ValueDispatcher'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/index.d.ts.map b/node_modules/@motion-canvas/core/lib/events/index.d.ts.map new file mode 100644 index 0000000..242997b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/events/index.js b/node_modules/@motion-canvas/core/lib/events/index.js new file mode 100644 index 0000000..ca18649 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/events/index.js @@ -0,0 +1,11 @@ +/** + * Subscriptions and triggering of events. + * + * @packageDocumentation + */ +export * from './AsyncEventDispatcher'; +export * from './EventDispatcher'; +export * from './EventDispatcherBase'; +export * from './FlagDispatcher'; +export * from './ValueDispatcher'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/all.d.ts b/node_modules/@motion-canvas/core/lib/flow/all.d.ts new file mode 100644 index 0000000..244df10 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/all.d.ts @@ -0,0 +1,18 @@ +import { ThreadGenerator } from '../threading'; +/** + * Run all tasks concurrently and wait for all of them to finish. + * + * @example + * ```ts + * // current time: 0s + * yield* all( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ); + * // current time: 2s + * ``` + * + * @param tasks - A list of tasks to run. + */ +export declare function all(...tasks: ThreadGenerator[]): ThreadGenerator; +//# sourceMappingURL=all.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/all.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/all.d.ts.map new file mode 100644 index 0000000..5564e3b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/all.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/flow/all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,eAAe,EAAC,MAAM,cAAc,CAAC;AAInD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,GAAG,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAKjE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/all.js b/node_modules/@motion-canvas/core/lib/flow/all.js new file mode 100644 index 0000000..7b15c61 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/all.js @@ -0,0 +1,25 @@ +import { join } from '../threading'; +import { decorate, threadable } from '../decorators'; +decorate(all, threadable()); +/** + * Run all tasks concurrently and wait for all of them to finish. + * + * @example + * ```ts + * // current time: 0s + * yield* all( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ); + * // current time: 2s + * ``` + * + * @param tasks - A list of tasks to run. + */ +export function* all(...tasks) { + for (const task of tasks) { + yield task; + } + yield* join(...tasks); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUM1Qjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBd0I7SUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsTUFBTSxJQUFJLENBQUM7S0FDWjtJQUNELEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/any.d.ts b/node_modules/@motion-canvas/core/lib/flow/any.d.ts new file mode 100644 index 0000000..73c85c5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/any.d.ts @@ -0,0 +1,18 @@ +import { ThreadGenerator } from '../threading'; +/** + * Run all tasks concurrently and wait for any of them to finish. + * + * @example + * ```ts + * // current time: 0s + * yield* any( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ); + * // current time: 1s + * ``` + * + * @param tasks - A list of tasks to run. + */ +export declare function any(...tasks: ThreadGenerator[]): ThreadGenerator; +//# sourceMappingURL=any.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/any.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/any.d.ts.map new file mode 100644 index 0000000..3b0366b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/any.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"any.d.ts","sourceRoot":"","sources":["../../src/flow/any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,eAAe,EAAC,MAAM,cAAc,CAAC;AAInD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,GAAG,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAKjE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/any.js b/node_modules/@motion-canvas/core/lib/flow/any.js new file mode 100644 index 0000000..57360dc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/any.js @@ -0,0 +1,25 @@ +import { join } from '../threading'; +import { decorate, threadable } from '../decorators'; +decorate(any, threadable()); +/** + * Run all tasks concurrently and wait for any of them to finish. + * + * @example + * ```ts + * // current time: 0s + * yield* any( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ); + * // current time: 1s + * ``` + * + * @param tasks - A list of tasks to run. + */ +export function* any(...tasks) { + for (const task of tasks) { + yield task; + } + yield* join(false, ...tasks); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvYW55LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUM1Qjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBd0I7SUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsTUFBTSxJQUFJLENBQUM7S0FDWjtJQUNELEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/chain.d.ts b/node_modules/@motion-canvas/core/lib/flow/chain.d.ts new file mode 100644 index 0000000..a99130e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/chain.d.ts @@ -0,0 +1,36 @@ +import { ThreadGenerator } from '../threading'; +/** + * Run tasks one after another. + * + * @example + * ```ts + * // current time: 0s + * yield* chain( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ); + * // current time: 3s + * ``` + * + * Note that the same animation can be written as: + * ```ts + * yield* rect.fill('#ff0000', 2), + * yield* rect.opacity(1, 1), + * ``` + * + * The reason `chain` exists is to make it easier to pass it to other flow + * functions. For example: + * ```ts + * yield* all( + * rect.radius(20, 3), + * chain( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ), + * ); + * ``` + * + * @param tasks - A list of tasks to run. + */ +export declare function chain(...tasks: (ThreadGenerator | Callback)[]): ThreadGenerator; +//# sourceMappingURL=chain.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/chain.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/chain.d.ts.map new file mode 100644 index 0000000..d3032b9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/chain.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/flow/chain.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,eAAe,EAAC,MAAM,cAAc,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAiB,KAAK,CACpB,GAAG,KAAK,EAAE,CAAC,eAAe,GAAG,QAAQ,CAAC,EAAE,GACvC,eAAe,CAQjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/chain.js b/node_modules/@motion-canvas/core/lib/flow/chain.js new file mode 100644 index 0000000..767a15d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/chain.js @@ -0,0 +1,47 @@ +import { decorate, threadable } from '../decorators'; +import { isThreadGenerator } from '../threading'; +decorate(chain, threadable()); +/** + * Run tasks one after another. + * + * @example + * ```ts + * // current time: 0s + * yield* chain( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ); + * // current time: 3s + * ``` + * + * Note that the same animation can be written as: + * ```ts + * yield* rect.fill('#ff0000', 2), + * yield* rect.opacity(1, 1), + * ``` + * + * The reason `chain` exists is to make it easier to pass it to other flow + * functions. For example: + * ```ts + * yield* all( + * rect.radius(20, 3), + * chain( + * rect.fill('#ff0000', 2), + * rect.opacity(1, 1), + * ), + * ); + * ``` + * + * @param tasks - A list of tasks to run. + */ +export function* chain(...tasks) { + for (const generator of tasks) { + if (isThreadGenerator(generator)) { + yield* generator; + } + else { + generator(); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9jaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBRWhFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSCxNQUFNLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FDcEIsR0FBRyxLQUFxQztJQUV4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLEtBQUssRUFBRTtRQUM3QixJQUFJLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0FBQ0gsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/delay.d.ts b/node_modules/@motion-canvas/core/lib/flow/delay.d.ts new file mode 100644 index 0000000..b7887c4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/delay.d.ts @@ -0,0 +1,29 @@ +import { ThreadGenerator } from '../threading'; +/** + * Run the given generator or callback after a specific amount of time. + * + * @example + * ```ts + * yield* delay(1, rect.fill('#ff0000', 2)); + * ``` + * + * Note that the same animation can be written as: + * ```ts + * yield* waitFor(1), + * yield* rect.fill('#ff0000', 2), + * ``` + * + * The reason `delay` exists is to make it easier to pass it to other flow + * functions. For example: + * ```ts + * yield* all( + * rect.opacity(1, 3), + * delay(1, rect.fill('#ff0000', 2)); + * ); + * ``` + * + * @param time - The delay in seconds + * @param task - The task or callback to run after the delay. + */ +export declare function delay(time: number, task: ThreadGenerator | Callback): ThreadGenerator; +//# sourceMappingURL=delay.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/delay.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/delay.d.ts.map new file mode 100644 index 0000000..a148a66 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/delay.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/flow/delay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,eAAe,EAAC,MAAM,cAAc,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAiB,KAAK,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,GAAG,QAAQ,GAC/B,eAAe,CAOjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/delay.js b/node_modules/@motion-canvas/core/lib/flow/delay.js new file mode 100644 index 0000000..e56918a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/delay.js @@ -0,0 +1,40 @@ +import { waitFor } from './scheduling'; +import { decorate, threadable } from '../decorators'; +import { isThreadGenerator } from '../threading'; +decorate(delay, threadable()); +/** + * Run the given generator or callback after a specific amount of time. + * + * @example + * ```ts + * yield* delay(1, rect.fill('#ff0000', 2)); + * ``` + * + * Note that the same animation can be written as: + * ```ts + * yield* waitFor(1), + * yield* rect.fill('#ff0000', 2), + * ``` + * + * The reason `delay` exists is to make it easier to pass it to other flow + * functions. For example: + * ```ts + * yield* all( + * rect.opacity(1, 3), + * delay(1, rect.fill('#ff0000', 2)); + * ); + * ``` + * + * @param time - The delay in seconds + * @param task - The task or callback to run after the delay. + */ +export function* delay(time, task) { + yield* waitFor(time); + if (isThreadGenerator(task)) { + yield* task; + } + else { + task(); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9kZWxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFFaEUsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQzlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQ3BCLElBQVksRUFDWixJQUFnQztJQUVoQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQixLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDYjtTQUFNO1FBQ0wsSUFBSSxFQUFFLENBQUM7S0FDUjtBQUNILENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/every.d.ts b/node_modules/@motion-canvas/core/lib/flow/every.d.ts new file mode 100644 index 0000000..13311f7 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/every.d.ts @@ -0,0 +1,42 @@ +import { ThreadGenerator } from '../threading'; +/** + * A callback called by {@link EveryTimer} every N seconds. + */ +export interface EveryCallback { + /** + * @param tick - The amount of times the timer has ticked. + */ + (tick: number): void; +} +export interface EveryTimer { + /** + * The generator responsible for running this timer. + */ + runner: ThreadGenerator; + setInterval(value: number): void; + setCallback(value: EveryCallback): void; + /** + * Wait until the timer ticks. + */ + sync(): ThreadGenerator; +} +/** + * Call the given callback every N seconds. + * + * @example + * ```ts + * const timer = every(2, time => console.log(time)); + * yield timer.runner; + * + * // current time: 0s + * yield* waitFor(5); + * // current time: 5s + * yield* timer.sync(); + * // current time: 6s + * ``` + * + * @param interval - The interval between subsequent calls. + * @param callback - The callback to be called. + */ +export declare function every(interval: number, callback: EveryCallback): EveryTimer; +//# sourceMappingURL=every.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/every.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/every.d.ts.map new file mode 100644 index 0000000..de817c0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/every.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../src/flow/every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAExC;;OAEG;IACH,IAAI,IAAI,eAAe,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,UAAU,CAwC3E"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/every.js b/node_modules/@motion-canvas/core/lib/flow/every.js new file mode 100644 index 0000000..d7dec45 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/every.js @@ -0,0 +1,61 @@ +import { decorate, threadable } from '../decorators'; +import { usePlayback } from '../utils'; +/** + * Call the given callback every N seconds. + * + * @example + * ```ts + * const timer = every(2, time => console.log(time)); + * yield timer.runner; + * + * // current time: 0s + * yield* waitFor(5); + * // current time: 5s + * yield* timer.sync(); + * // current time: 6s + * ``` + * + * @param interval - The interval between subsequent calls. + * @param callback - The callback to be called. + */ +export function every(interval, callback) { + let changed = false; + decorate(everyRunner, threadable('every')); + function* everyRunner() { + const project = usePlayback(); + let acc = 0; + let tick = 0; + callback(tick); + changed = true; + while (true) { + if (acc >= project.secondsToFrames(interval)) { + acc = 0; + tick++; + callback(tick); + changed = true; + } + else { + changed = false; + } + acc++; + yield; + } + } + return { + runner: everyRunner(), + setInterval(value) { + interval = value; + changed = false; + }, + setCallback(value) { + callback = value; + changed = false; + }, + *sync() { + while (!changed) { + yield; + } + }, + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9ldmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBMEJyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBdUI7SUFDN0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLENBQUMsV0FBVztRQUNuQixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsT0FBTyxJQUFJLEVBQUU7WUFDWCxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM1QyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDZixPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ2hCO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDakI7WUFDRCxHQUFHLEVBQUUsQ0FBQztZQUNOLEtBQUssQ0FBQztTQUNQO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3JCLFdBQVcsQ0FBQyxLQUFLO1lBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxXQUFXLENBQUMsS0FBSztZQUNmLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO1FBQ0QsQ0FBQyxJQUFJO1lBQ0gsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDZixLQUFLLENBQUM7YUFDUDtRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/index.d.ts b/node_modules/@motion-canvas/core/lib/flow/index.d.ts new file mode 100644 index 0000000..caae1f1 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/index.d.ts @@ -0,0 +1,17 @@ +/** + * Utilities for controlling the flow and timing of an animation. + * @packageDocumentation + */ +export * from './all'; +export * from './any'; +export * from './chain'; +export * from './delay'; +export * from './every'; +export * from './loop'; +export * from './loopFor'; +export * from './loopUntil'; +export * from './noop'; +export * from './run'; +export * from './scheduling'; +export * from './sequence'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/index.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/index.d.ts.map new file mode 100644 index 0000000..46983f1 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/index.js b/node_modules/@motion-canvas/core/lib/flow/index.js new file mode 100644 index 0000000..89e41f4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/index.js @@ -0,0 +1,17 @@ +/** + * Utilities for controlling the flow and timing of an animation. + * @packageDocumentation + */ +export * from './all'; +export * from './any'; +export * from './chain'; +export * from './delay'; +export * from './every'; +export * from './loop'; +export * from './loopFor'; +export * from './loopUntil'; +export * from './noop'; +export * from './run'; +export * from './scheduling'; +export * from './sequence'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loop.d.ts b/node_modules/@motion-canvas/core/lib/flow/loop.d.ts new file mode 100644 index 0000000..d83f433 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loop.d.ts @@ -0,0 +1,38 @@ +import { ThreadGenerator } from '../threading'; +/** + * A callback called by {@link loop} during each iteration. + */ +export interface LoopCallback { + /** + * @param i - The current iteration index. + */ + (i: number): ThreadGenerator | void; +} +/** + * Run the given generator N times. + * + * @remarks + * Each iteration waits until the previous one is completed. + * + * @example + * ```ts + * const colors = [ + * '#ff6470', + * '#ffc66d', + * '#68abdf', + * '#99c47a', + * ]; + * + * yield* loop( + * colors.length, + * i => rect.fill(colors[i], 2), + * ); + * ``` + * + * @param iterations - The number of iterations. + * @param factory - A function creating the generator to run. Because generators + * can't be reset, a new generator is created on each + * iteration. + */ +export declare function loop(iterations: number, factory: LoopCallback): ThreadGenerator; +//# sourceMappingURL=loop.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loop.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/loop.d.ts.map new file mode 100644 index 0000000..9198376 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loop.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/flow/loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CACrC;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAiB,IAAI,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,eAAe,CASjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loop.js b/node_modules/@motion-canvas/core/lib/flow/loop.js new file mode 100644 index 0000000..60a0787 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loop.js @@ -0,0 +1,40 @@ +import { decorate, threadable } from '../decorators'; +decorate(loop, threadable()); +/** + * Run the given generator N times. + * + * @remarks + * Each iteration waits until the previous one is completed. + * + * @example + * ```ts + * const colors = [ + * '#ff6470', + * '#ffc66d', + * '#68abdf', + * '#99c47a', + * ]; + * + * yield* loop( + * colors.length, + * i => rect.fill(colors[i], 2), + * ); + * ``` + * + * @param iterations - The number of iterations. + * @param factory - A function creating the generator to run. Because generators + * can't be reset, a new generator is created on each + * iteration. + */ +export function* loop(iterations, factory) { + for (let i = 0; i < iterations; i++) { + const generator = factory(i); + if (generator) { + yield* generator; + } + else { + yield; + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L2xvb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFhbkQsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQzdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ25CLFVBQWtCLEVBQ2xCLE9BQXFCO0lBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksU0FBUyxFQUFFO1lBQ2IsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxLQUFLLENBQUM7U0FDUDtLQUNGO0FBQ0gsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts b/node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts new file mode 100644 index 0000000..d4901f2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts @@ -0,0 +1,25 @@ +import { ThreadGenerator } from '../threading'; +import { LoopCallback } from './loop'; +/** + * Run a generator in a loop for the given amount of time. + * + * @remarks + * Generators are executed completely before the next iteration starts. + * An iteration is allowed to finish even when the time is up. This means that + * the actual duration of the loop may be longer than the given duration. + * + * @example + * ```ts + * yield* loopFor( + * 3, + * () => circle().position.x(-10, 0.1).to(10, 0.1) + * ); + * ``` + * + * @param seconds - The duration in seconds. + * @param factory - A function creating the generator to run. Because generators + * can't be reset, a new generator is created on each + * iteration. + */ +export declare function loopFor(seconds: number, factory: LoopCallback): ThreadGenerator; +//# sourceMappingURL=loopFor.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts.map new file mode 100644 index 0000000..014ecac --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loopFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"loopFor.d.ts","sourceRoot":"","sources":["../../src/flow/loopFor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAiB,OAAO,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,eAAe,CAgBjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loopFor.js b/node_modules/@motion-canvas/core/lib/flow/loopFor.js new file mode 100644 index 0000000..ec05dbd --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loopFor.js @@ -0,0 +1,42 @@ +import { usePlayback, useThread } from '../utils'; +import { decorate, threadable } from '../decorators'; +decorate(loopFor, threadable()); +/** + * Run a generator in a loop for the given amount of time. + * + * @remarks + * Generators are executed completely before the next iteration starts. + * An iteration is allowed to finish even when the time is up. This means that + * the actual duration of the loop may be longer than the given duration. + * + * @example + * ```ts + * yield* loopFor( + * 3, + * () => circle().position.x(-10, 0.1).to(10, 0.1) + * ); + * ``` + * + * @param seconds - The duration in seconds. + * @param factory - A function creating the generator to run. Because generators + * can't be reset, a new generator is created on each + * iteration. + */ +export function* loopFor(seconds, factory) { + const thread = useThread(); + const step = usePlayback().framesToSeconds(1); + const targetTime = thread.time() + seconds; + let iteration = 0; + while (targetTime - step > thread.fixed) { + const generator = factory(iteration); + if (generator) { + yield* generator; + } + else { + yield; + } + iteration += 1; + } + thread.time(targetTime); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcEZvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L2xvb3BGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJbkQsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsT0FBTyxDQUN0QixPQUFlLEVBQ2YsT0FBcUI7SUFFckIsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFM0MsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE9BQU8sVUFBVSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxJQUFJLFNBQVMsRUFBRTtZQUNiLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsS0FBSyxDQUFDO1NBQ1A7UUFDRCxTQUFTLElBQUksQ0FBQyxDQUFDO0tBQ2hCO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts b/node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts new file mode 100644 index 0000000..9f10289 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts @@ -0,0 +1,25 @@ +import { ThreadGenerator } from '../threading'; +import { LoopCallback } from './loop'; +/** + * Run a generator in a loop until the given time event. + * + * @remarks + * Generators are executed completely before the next iteration starts. + * An iteration is allowed to finish even when the time is up. This means that + * the actual duration of the loop may be longer than the given duration. + * + * @example + * ```ts + * yield* loopUntil( + * 'Stop Looping', + * () => circle().position.x(-10, 0.1).to(10, 0.1) + * ); + * ``` + * + * @param event - The event. + * @param factory - A function creating the generator to run. Because generators + * can't be reset, a new generator is created on each + * iteration. + */ +export declare function loopUntil(event: string, factory: LoopCallback): ThreadGenerator; +//# sourceMappingURL=loopUntil.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts.map new file mode 100644 index 0000000..52b2c95 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loopUntil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"loopUntil.d.ts","sourceRoot":"","sources":["../../src/flow/loopUntil.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAIpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAiB,SAAS,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GACpB,eAAe,CAEjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/loopUntil.js b/node_modules/@motion-canvas/core/lib/flow/loopUntil.js new file mode 100644 index 0000000..8893dbb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/loopUntil.js @@ -0,0 +1,29 @@ +import { useDuration } from '../utils'; +import { decorate, threadable } from '../decorators'; +import { loopFor } from './loopFor'; +decorate(loopUntil, threadable()); +/** + * Run a generator in a loop until the given time event. + * + * @remarks + * Generators are executed completely before the next iteration starts. + * An iteration is allowed to finish even when the time is up. This means that + * the actual duration of the loop may be longer than the given duration. + * + * @example + * ```ts + * yield* loopUntil( + * 'Stop Looping', + * () => circle().position.x(-10, 0.1).to(10, 0.1) + * ); + * ``` + * + * @param event - The event. + * @param factory - A function creating the generator to run. Because generators + * can't be reset, a new generator is created on each + * iteration. + */ +export function* loopUntil(event, factory) { + yield* loopFor(useDuration(event), factory); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcFVudGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvbG9vcFVudGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVsQyxRQUFRLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQ3hCLEtBQWEsRUFDYixPQUFxQjtJQUVyQixLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/noop.d.ts b/node_modules/@motion-canvas/core/lib/flow/noop.d.ts new file mode 100644 index 0000000..acc0551 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/noop.d.ts @@ -0,0 +1,6 @@ +import { ThreadGenerator } from '../threading'; +/** + * Do nothing. + */ +export declare function noop(): ThreadGenerator; +//# sourceMappingURL=noop.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/noop.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/noop.d.ts.map new file mode 100644 index 0000000..7eb8d25 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/noop.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../src/flow/noop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAI7C;;GAEG;AACH,wBAAiB,IAAI,IAAI,eAAe,CAEvC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/noop.js b/node_modules/@motion-canvas/core/lib/flow/noop.js new file mode 100644 index 0000000..ed21e73 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/noop.js @@ -0,0 +1,9 @@ +import { decorate, threadable } from '../decorators'; +decorate(noop, threadable()); +/** + * Do nothing. + */ +export function* noop() { + // do nothing +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L25vb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQzdCOztHQUVHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxJQUFJO0lBQ25CLGFBQWE7QUFDZixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/run.d.ts b/node_modules/@motion-canvas/core/lib/flow/run.d.ts new file mode 100644 index 0000000..88f5d05 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/run.d.ts @@ -0,0 +1,29 @@ +import { ThreadGenerator } from '../threading'; +/** + * Turn the given generator function into a threadable generator. + * + * @example + * ```ts + * yield run(function* () { + * // do things + * }); + * ``` + * + * @param runner - A generator function or a factory that creates the generator. + */ +export declare function run(runner: () => ThreadGenerator): ThreadGenerator; +/** + * Turn the given generator function into a threadable generator. + * + * @example + * ```ts + * yield run(function* () { + * // do things + * }); + * ``` + * + * @param runner - A generator function or a factory that creates the generator. + * @param name - An optional name used when displaying this generator in the UI. + */ +export declare function run(name: string, runner: () => ThreadGenerator): ThreadGenerator; +//# sourceMappingURL=run.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/run.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/run.d.ts.map new file mode 100644 index 0000000..632241a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/run.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/flow/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAC,MAAM,cAAc,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,eAAe,GAAG,eAAe,CAAC;AACpE;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,eAAe,GAC5B,eAAe,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/run.js b/node_modules/@motion-canvas/core/lib/flow/run.js new file mode 100644 index 0000000..5930047 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/run.js @@ -0,0 +1,14 @@ +import { setTaskName } from '../threading'; +export function run(firstArg, runner) { + let task; + if (typeof firstArg === 'string') { + task = runner(); + setTaskName(task, firstArg); + } + else { + task = firstArg(); + setTaskName(task, task); + } + return task; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvcnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBZ0MxRCxNQUFNLFVBQVUsR0FBRyxDQUNqQixRQUEwQyxFQUMxQyxNQUE4QjtJQUU5QixJQUFJLElBQUksQ0FBQztJQUNULElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2hDLElBQUksR0FBRyxNQUFPLEVBQUUsQ0FBQztRQUNqQixXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzdCO1NBQU07UUFDTCxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDbEIsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN6QjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts b/node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts new file mode 100644 index 0000000..da1dded --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts @@ -0,0 +1,34 @@ +import { ThreadGenerator } from '../threading'; +/** + * Wait until the given time event. + * + * @remarks + * Time events are displayed on the timeline and can be edited to adjust the + * delay. By default, an event happens immediately - without any delay. + * + * @example + * ```ts + * yield waitUntil('event'); + * ``` + * + * @param event - The name of the time event. + * @param after - An optional task to be run after the function completes. + */ +export declare function waitUntil(event: string, after?: ThreadGenerator): ThreadGenerator; +/** + * Wait for the given amount of time. + * + * @example + * ```ts + * // current time: 0s + * yield waitFor(2); + * // current time: 2s + * yield waitFor(3); + * // current time: 5s + * ``` + * + * @param seconds - The relative time in seconds. + * @param after - An optional task to be run after the function completes. + */ +export declare function waitFor(seconds?: number, after?: ThreadGenerator): ThreadGenerator; +//# sourceMappingURL=scheduling.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts.map new file mode 100644 index 0000000..c62e76b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/scheduling.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../src/flow/scheduling.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAI7C;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,SAAS,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,eAAe,GACtB,eAAe,CAMjB;AAGD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,OAAO,CACtB,OAAO,SAAI,EACX,KAAK,CAAC,EAAE,eAAe,GACtB,eAAe,CAejB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/scheduling.js b/node_modules/@motion-canvas/core/lib/flow/scheduling.js new file mode 100644 index 0000000..938c1cb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/scheduling.js @@ -0,0 +1,55 @@ +import { decorate, threadable } from '../decorators'; +import { useDuration, usePlayback, useThread } from '../utils'; +decorate(waitUntil, threadable()); +/** + * Wait until the given time event. + * + * @remarks + * Time events are displayed on the timeline and can be edited to adjust the + * delay. By default, an event happens immediately - without any delay. + * + * @example + * ```ts + * yield waitUntil('event'); + * ``` + * + * @param event - The name of the time event. + * @param after - An optional task to be run after the function completes. + */ +export function* waitUntil(event, after) { + yield* waitFor(useDuration(event)); + if (after) { + yield* after; + } +} +decorate(waitFor, threadable()); +/** + * Wait for the given amount of time. + * + * @example + * ```ts + * // current time: 0s + * yield waitFor(2); + * // current time: 2s + * yield waitFor(3); + * // current time: 5s + * ``` + * + * @param seconds - The relative time in seconds. + * @param after - An optional task to be run after the function completes. + */ +export function* waitFor(seconds = 0, after) { + const thread = useThread(); + const step = usePlayback().framesToSeconds(1); + const targetTime = thread.time() + seconds; + // subtracting the step is not necessary, but it keeps the thread time ahead + // of the project time. + while (targetTime - step > thread.fixed) { + yield; + } + thread.time(targetTime); + if (after) { + yield* after; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L3NjaGVkdWxpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTdELFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUNsQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsU0FBUyxDQUN4QixLQUFhLEVBQ2IsS0FBdUI7SUFFdkIsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRW5DLElBQUksS0FBSyxFQUFFO1FBQ1QsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBRUQsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQ3RCLE9BQU8sR0FBRyxDQUFDLEVBQ1gsS0FBdUI7SUFFdkIsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDM0MsNEVBQTRFO0lBQzVFLHVCQUF1QjtJQUN2QixPQUFPLFVBQVUsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUN2QyxLQUFLLENBQUM7S0FDUDtJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEIsSUFBSSxLQUFLLEVBQUU7UUFDVCxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/sequence.d.ts b/node_modules/@motion-canvas/core/lib/flow/sequence.d.ts new file mode 100644 index 0000000..84f385a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/sequence.d.ts @@ -0,0 +1,22 @@ +import { ThreadGenerator } from '../threading'; +/** + * Start all tasks one after another with a constant delay between. + * + * @remarks + * The function doesn't wait until the previous task in the sequence has + * finished. Once the delay has passed, the next task will start even if + * the previous is still running. + * + * @example + * ```ts + * yield* sequence( + * 0.1, + * ...rects.map(rect => rect.x(100, 1)) + * ); + * ``` + * + * @param delay - The delay between each of the tasks. + * @param tasks - A list of tasks to be run in a sequence. + */ +export declare function sequence(delay: number, ...tasks: ThreadGenerator[]): ThreadGenerator; +//# sourceMappingURL=sequence.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/sequence.d.ts.map b/node_modules/@motion-canvas/core/lib/flow/sequence.d.ts.map new file mode 100644 index 0000000..46aee72 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/sequence.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../src/flow/sequence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,eAAe,EAAC,MAAM,cAAc,CAAC;AAGnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAiB,QAAQ,CACvB,KAAK,EAAE,MAAM,EACb,GAAG,KAAK,EAAE,eAAe,EAAE,GAC1B,eAAe,CAOjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/flow/sequence.js b/node_modules/@motion-canvas/core/lib/flow/sequence.js new file mode 100644 index 0000000..c28175a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/flow/sequence.js @@ -0,0 +1,31 @@ +import { waitFor } from './scheduling'; +import { decorate, threadable } from '../decorators'; +import { join } from '../threading'; +decorate(sequence, threadable()); +/** + * Start all tasks one after another with a constant delay between. + * + * @remarks + * The function doesn't wait until the previous task in the sequence has + * finished. Once the delay has passed, the next task will start even if + * the previous is still running. + * + * @example + * ```ts + * yield* sequence( + * 0.1, + * ...rects.map(rect => rect.x(100, 1)) + * ); + * ``` + * + * @param delay - The delay between each of the tasks. + * @param tasks - A list of tasks to be run in a sequence. + */ +export function* sequence(delay, ...tasks) { + for (const task of tasks) { + yield task; + yield* waitFor(delay); + } + yield* join(...tasks); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9zZXF1ZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxJQUFJLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBRW5ELFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUNqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQ3ZCLEtBQWEsRUFDYixHQUFHLEtBQXdCO0lBRTNCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxDQUFDO1FBQ1gsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/index.d.ts b/node_modules/@motion-canvas/core/lib/index.d.ts new file mode 100644 index 0000000..7662cdf --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/index.d.ts @@ -0,0 +1,16 @@ +export * from './app'; +export * from './decorators'; +export * from './events'; +export * from './flow'; +export * from './media'; +export * from './meta'; +export * from './plugin'; +export * from './scenes'; +export * from './signals'; +export * from './threading'; +export * from './transitions'; +export * from './tweening'; +export * from './types'; +export * from './utils'; +export { default as DefaultPlugin } from './plugin/DefaultPlugin'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/index.d.ts.map b/node_modules/@motion-canvas/core/lib/index.d.ts.map new file mode 100644 index 0000000..21fc829 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/index.js b/node_modules/@motion-canvas/core/lib/index.js new file mode 100644 index 0000000..2bec08a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/index.js @@ -0,0 +1,16 @@ +export * from './app'; +export * from './decorators'; +export * from './events'; +export * from './flow'; +export * from './media'; +export * from './meta'; +export * from './plugin'; +export * from './scenes'; +export * from './signals'; +export * from './threading'; +export * from './transitions'; +export * from './tweening'; +export * from './types'; +export * from './utils'; +export { default as DefaultPlugin } from './plugin/DefaultPlugin'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsT0FBTyxFQUFDLE9BQU8sSUFBSSxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/AudioData.d.ts b/node_modules/@motion-canvas/core/lib/media/AudioData.d.ts new file mode 100644 index 0000000..233181f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/AudioData.d.ts @@ -0,0 +1,20 @@ +export interface AudioData { + /** + * An array of minimum and maximum waveform data points, interleaved. + * Each value is in range of -1 to 1. + */ + peaks: number[]; + /** + * The amount of samples taken. + */ + length: number; + /** + * The absolute biggest value from the peaks array. + */ + absoluteMax: number; + /** + * Samples per seconds. + */ + sampleRate: number; +} +//# sourceMappingURL=AudioData.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/AudioData.d.ts.map b/node_modules/@motion-canvas/core/lib/media/AudioData.d.ts.map new file mode 100644 index 0000000..7b2ca91 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/AudioData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AudioData.d.ts","sourceRoot":"","sources":["../../src/media/AudioData.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/AudioData.js b/node_modules/@motion-canvas/core/lib/media/AudioData.js new file mode 100644 index 0000000..149582e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/AudioData.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVkaW9EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lZGlhL0F1ZGlvRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts b/node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts new file mode 100644 index 0000000..258bcef --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts @@ -0,0 +1,34 @@ +import { AudioData } from './AudioData'; +import { Logger } from '../app'; +export declare class AudioManager { + private readonly logger; + get onDataChanged(): import("../events").SubscribableValueEvent; + private readonly data; + private readonly context; + private readonly audioElement; + private source; + private error; + private abortController; + private offset; + constructor(logger: Logger); + getTime(): number; + setTime(value: number): void; + setOffset(value: number): void; + setMuted(isMuted: boolean): void; + setSource(src: string): void; + isInRange(time: number): boolean; + toRelativeTime(time: number): number; + toAbsoluteTime(time: number): number; + isReady(): boolean | "" | null; + /** + * Pause/resume the audio. + * + * @param isPaused - Whether the audio should be paused or resumed. + * + * @returns `true` if the audio successfully started playing. + */ + setPaused(isPaused: boolean): Promise; + private loadData; + private decodeAudioData; +} +//# sourceMappingURL=AudioManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts.map b/node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts.map new file mode 100644 index 0000000..bb996c7 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/AudioManager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../src/media/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAE9B,qBAAa,YAAY;IAaJ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZ1C,IAAW,aAAa,iEAEvB;IACD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,MAAM,CAAK;gBAEiB,MAAM,EAAE,MAAM;IAS3C,OAAO;IAIP,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB,SAAS,CAAC,KAAK,EAAE,MAAM;IAIvB,QAAQ,CAAC,OAAO,EAAE,OAAO;IAIzB,SAAS,CAAC,GAAG,EAAE,MAAM;IAYrB,SAAS,CAAC,IAAI,EAAE,MAAM;IAItB,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,OAAO;IAId;;;;;;OAMG;IACU,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAqB7C,QAAQ;IAqEtB,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/AudioManager.js b/node_modules/@motion-canvas/core/lib/media/AudioManager.js new file mode 100644 index 0000000..d3dee8e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/AudioManager.js @@ -0,0 +1,150 @@ +import { ValueDispatcher } from '../events'; +import { useLogger } from '../utils'; +export class AudioManager { + get onDataChanged() { + return this.data.subscribable; + } + constructor(logger) { + this.logger = logger; + this.data = new ValueDispatcher(null); + this.context = new AudioContext(); + this.audioElement = new Audio(); + this.source = null; + this.error = false; + this.abortController = null; + this.offset = 0; + if (import.meta.hot) { + import.meta.hot.on('motion-canvas:assets', ({ urls }) => { + if (this.source && urls.includes(this.source)) { + this.setSource(this.source); + } + }); + } + } + getTime() { + return this.toAbsoluteTime(this.audioElement.currentTime); + } + setTime(value) { + this.audioElement.currentTime = this.toRelativeTime(value); + } + setOffset(value) { + this.offset = value; + } + setMuted(isMuted) { + this.audioElement.muted = isMuted; + } + setSource(src) { + this.source = src; + this.audioElement.src = src; + this.abortController?.abort(); + this.abortController = new AbortController(); + this.loadData(this.abortController.signal).catch(e => { + if (e.name !== 'AbortError') { + this.logger.error(e); + } + }); + } + isInRange(time) { + return time >= this.offset && time < this.audioElement.duration; + } + toRelativeTime(time) { + return Math.max(0, time - this.offset); + } + toAbsoluteTime(time) { + return time + this.offset; + } + isReady() { + return this.source && !this.error; + } + /** + * Pause/resume the audio. + * + * @param isPaused - Whether the audio should be paused or resumed. + * + * @returns `true` if the audio successfully started playing. + */ + async setPaused(isPaused) { + if (this.source && this.audioElement.paused !== isPaused) { + if (isPaused) { + this.audioElement.pause(); + } + else { + try { + await this.audioElement.play(); + this.error = false; + return true; + } + catch (e) { + if (!this.error) { + useLogger().error(e); + } + this.error = true; + } + } + } + return false; + } + async loadData(signal) { + this.data.current = null; + if (!this.source) { + return; + } + const response = await fetch(this.source, { signal }); + const rawBuffer = await response.arrayBuffer(); + if (signal.aborted) + return; + let audioBuffer; + try { + audioBuffer = await this.decodeAudioData(rawBuffer); + } + catch (e) { + return; + } + if (signal.aborted) + return; + const sampleSize = 256; + const samples = ~~(audioBuffer.length / sampleSize); + const peaks = []; + let absoluteMax = 0; + for (let channelId = 0; channelId < audioBuffer.numberOfChannels; channelId++) { + const channel = audioBuffer.getChannelData(channelId); + for (let i = 0; i < samples; i++) { + const start = ~~(i * sampleSize); + const end = ~~(start + sampleSize); + let min = channel[start]; + let max = min; + for (let j = start; j < end; j++) { + const value = channel[j]; + if (value > max) { + max = value; + } + if (value < min) { + min = value; + } + } + if (channelId === 0 || max > peaks[i * 2]) { + peaks[i * 2] = max; + } + if (channelId === 0 || min < peaks[i * 2 + 1]) { + peaks[i * 2 + 1] = min; + } + if (max > absoluteMax) { + absoluteMax = max; + } + if (Math.abs(min) > absoluteMax) { + absoluteMax = Math.abs(min); + } + } + } + this.data.current = { + peaks, + absoluteMax, + length: samples, + sampleRate: (audioBuffer.sampleRate / sampleSize) * 2, + }; + } + decodeAudioData(buffer) { + return new Promise((resolve, reject) => this.context.decodeAudioData(buffer, resolve, reject).catch(reject)); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVkaW9NYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lZGlhL0F1ZGlvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHbkMsTUFBTSxPQUFPLFlBQVk7SUFDdkIsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDaEMsQ0FBQztJQVVELFlBQW9DLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVGpDLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBbUIsSUFBSSxDQUFDLENBQUM7UUFFbkQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0IsaUJBQVksR0FBcUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN0RCxXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM3QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2Qsb0JBQWUsR0FBMkIsSUFBSSxDQUFDO1FBQy9DLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFHakIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7Z0JBQ3BELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzdCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFDTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFD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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/index.d.ts b/node_modules/@motion-canvas/core/lib/media/index.d.ts new file mode 100644 index 0000000..b2f119c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/index.d.ts @@ -0,0 +1,9 @@ +/** + * Multi-media management. + * + * @packageDocumentation + */ +export * from './AudioData'; +export * from './AudioManager'; +export * from './loadImage'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/index.d.ts.map b/node_modules/@motion-canvas/core/lib/media/index.d.ts.map new file mode 100644 index 0000000..fbc86f4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/index.js b/node_modules/@motion-canvas/core/lib/media/index.js new file mode 100644 index 0000000..c232409 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/index.js @@ -0,0 +1,9 @@ +/** + * Multi-media management. + * + * @packageDocumentation + */ +export * from './AudioData'; +export * from './AudioManager'; +export * from './loadImage'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVkaWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/loadImage.d.ts b/node_modules/@motion-canvas/core/lib/media/loadImage.d.ts new file mode 100644 index 0000000..ff19e31 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/loadImage.d.ts @@ -0,0 +1,8 @@ +export type ImageDataSource = CanvasImageSource & { + width: number; + height: number; +}; +export declare function loadImage(source: string): Promise; +export declare function loadAnimation(sources: string[]): Promise; +export declare function getImageData(image: ImageDataSource): ImageData; +//# sourceMappingURL=loadImage.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/loadImage.d.ts.map b/node_modules/@motion-canvas/core/lib/media/loadImage.d.ts.map new file mode 100644 index 0000000..b86d2a8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/loadImage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"loadImage.d.ts","sourceRoot":"","sources":["../../src/media/loadImage.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWnE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE5E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,aAUlD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/media/loadImage.js b/node_modules/@motion-canvas/core/lib/media/loadImage.js new file mode 100644 index 0000000..2ba7dc2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/media/loadImage.js @@ -0,0 +1,29 @@ +import { getContext } from '../utils'; +let Canvas; +let Context; +export function loadImage(source) { + const image = new Image(); + image.src = source; + return new Promise((resolve, reject) => { + if (image.complete) { + resolve(image); + } + else { + image.onload = () => resolve(image); + image.onerror = reject; + } + }); +} +export function loadAnimation(sources) { + return Promise.all(sources.map(loadImage)); +} +export function getImageData(image) { + Canvas ?? (Canvas = document.createElement('canvas')); + Context ?? (Context = getContext({ willReadFrequently: true }, Canvas)); + Canvas.width = image.width; + Canvas.height = image.height; + Context.clearRect(0, 0, image.width, image.height); + Context.drawImage(image, 0, 0); + return Context.getImageData(0, 0, image.width, image.height); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZEltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lZGlhL2xvYWRJbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXBDLElBQUksTUFBeUIsQ0FBQztBQUM5QixJQUFJLE9BQWlDLENBQUM7QUFPdEMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFjO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFDMUIsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDbkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hCO2FBQU07WUFDTCxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUN4QjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBaUI7SUFDN0MsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFzQjtJQUNqRCxNQUFNLEtBQU4sTUFBTSxHQUFLLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUM7SUFDNUMsT0FBTyxLQUFQLE9BQU8sR0FBSyxVQUFVLENBQUMsRUFBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUMsRUFBRSxNQUFNLENBQUMsRUFBQztJQUUzRCxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0IsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts new file mode 100644 index 0000000..bf00711 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts @@ -0,0 +1,9 @@ +import { MetaField } from './MetaField'; +/** + * Represents a boolean value stored in a meta file. + */ +export declare class BoolMetaField extends MetaField { + readonly type: BooleanConstructor; + parse(value: any): boolean; +} +//# sourceMappingURL=BoolMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts.map new file mode 100644 index 0000000..4f71ce2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoolMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/BoolMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;IACxD,SAAgB,IAAI,qBAAW;IAExB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;CAGlC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.js b/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.js new file mode 100644 index 0000000..893a122 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/BoolMetaField.js @@ -0,0 +1,14 @@ +import { MetaField } from './MetaField'; +/** + * Represents a boolean value stored in a meta file. + */ +export class BoolMetaField extends MetaField { + constructor() { + super(...arguments); + this.type = Boolean; + } + parse(value) { + return !!value; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vbE1ldGFGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRhL0Jvb2xNZXRhRmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBdUI7SUFBMUQ7O1FBQ2tCLFNBQUksR0FBRyxPQUFPLENBQUM7SUFLakMsQ0FBQztJQUhRLEtBQUssQ0FBQyxLQUFVO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts new file mode 100644 index 0000000..e67d7f9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts @@ -0,0 +1,11 @@ +import { MetaField } from './MetaField'; +import { Color, PossibleColor } from '../types'; +/** + * Represents a color stored in a meta file. + */ +export declare class ColorMetaField extends MetaField { + readonly type: symbol; + parse(value: PossibleColor | null): Color | null; + serialize(): PossibleColor | null; +} +//# sourceMappingURL=ColorMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts.map new file mode 100644 index 0000000..41ceab1 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ColorMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/ColorMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS,CAC3C,aAAa,GAAG,IAAI,EACpB,KAAK,GAAG,IAAI,CACb;IACC,SAAgB,IAAI,SAAgB;IAEpB,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;IAIhD,SAAS,IAAI,aAAa,GAAG,IAAI;CAGlD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.js b/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.js new file mode 100644 index 0000000..4eeb1e0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ColorMetaField.js @@ -0,0 +1,18 @@ +import { MetaField } from './MetaField'; +import { Color } from '../types'; +/** + * Represents a color stored in a meta file. + */ +export class ColorMetaField extends MetaField { + constructor() { + super(...arguments); + this.type = Color.symbol; + } + parse(value) { + return value === null ? null : new Color(value); + } + serialize() { + return this.value.current?.serialize() ?? null; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sb3JNZXRhRmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YS9Db2xvck1ldGFGaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQWdCLE1BQU0sVUFBVSxDQUFDO0FBRTlDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxTQUduQztJQUhEOztRQUlrQixTQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQVN0QyxDQUFDO0lBUGlCLEtBQUssQ0FBQyxLQUEyQjtRQUMvQyxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVlLFNBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDakQsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts new file mode 100644 index 0000000..9a3bc35 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts @@ -0,0 +1,15 @@ +import { MetaField } from './MetaField'; +import { MetaOption } from './MetaOption'; +/** + * Represents an enum value stored in a meta file. + */ +export declare class EnumMetaField extends MetaField { + readonly options: MetaOption[]; + static readonly symbol: unique symbol; + readonly type: symbol; + constructor(name: string, options: MetaOption[], initial?: T); + set(value: T): void; + parse(value: T): T; + getOption(value: T): MetaOption; +} +//# sourceMappingURL=EnumMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts.map new file mode 100644 index 0000000..1351a9e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EnumMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/EnumMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,qBAAa,aAAa,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;aAQ9B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;IAP1C,gBAAuB,MAAM,gBAE3B;IACF,SAAgB,IAAI,SAAwB;gBAG1C,IAAI,EAAE,MAAM,EACI,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EACxC,OAAO,GAAE,CAAoB;IAKxB,GAAG,CAAC,KAAK,EAAE,CAAC;IAIZ,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;IAIlB,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;CAK1C"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.js b/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.js new file mode 100644 index 0000000..e102cb1 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/EnumMetaField.js @@ -0,0 +1,22 @@ +import { MetaField } from './MetaField'; +/** + * Represents an enum value stored in a meta file. + */ +export class EnumMetaField extends MetaField { + constructor(name, options, initial = options[0].value) { + super(name, initial); + this.options = options; + this.type = EnumMetaField.symbol; + } + set(value) { + super.set(this.getOption(value).value); + } + parse(value) { + return this.getOption(value).value; + } + getOption(value) { + return (this.options.find(option => option.value === value) ?? this.options[0]); + } +} +EnumMetaField.symbol = Symbol.for('@motion-canvas/core/meta/EnumMetaField'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW51bU1ldGFGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRhL0VudW1NZXRhRmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUd0Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFpQixTQUFRLFNBQVk7SUFNaEQsWUFDRSxJQUFZLEVBQ0ksT0FBd0IsRUFDeEMsVUFBYSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUU3QixLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBSEwsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFKMUIsU0FBSSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFRNUMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFRO1FBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQVE7UUFDdkIsT0FBTyxDQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQzs7QUF6QnNCLG9CQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FDeEMsd0NBQXdDLENBQ3pDLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts b/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts new file mode 100644 index 0000000..295028e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts @@ -0,0 +1,35 @@ +import { MetaField } from './MetaField'; +import type { ExporterClass, Project } from '../app'; +/** + * Represents the exporter configuration. + */ +export declare class ExporterMetaField extends MetaField<{ + name: string; + options: unknown; +}> { + private current; + readonly type: ObjectConstructor; + /** + * Triggered when the nested fields change. + * + * @eventProperty + */ + get onFieldsChanged(): import("../events").SubscribableValueEvent[]>; + private readonly fields; + get options(): MetaField; + private readonly exporterField; + private readonly optionFields; + readonly exporters: ExporterClass[]; + constructor(name: string, project: Project, current?: number); + set(value: { + name: string; + options: any; + }): void; + serialize(): { + name: string; + options: any; + }; + clone(): this; + private handleChange; +} +//# sourceMappingURL=ExporterMetaFile.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts.map new file mode 100644 index 0000000..6536957 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExporterMetaFile.d.ts","sourceRoot":"","sources":["../../src/meta/ExporterMetaFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,QAAQ,CAAC;AAInD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,SAAS,CAAC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;IAqBmD,OAAO,CAAC,OAAO;IApBlE,SAAgB,IAAI,oBAAU;IAE9B;;;;OAIG;IACH,IAAW,eAAe,sEAEzB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE3D,IAAW,OAAO,gCAEjB;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,SAAgB,SAAS,EAAE,aAAa,EAAE,CAAC;gBAExB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAU,OAAO,SAAI;IA4B/D,GAAG,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC;IAKvC,SAAS,IAAI;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC;IAOzC,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,YAAY,CAkBlB;CACH"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.js b/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.js new file mode 100644 index 0000000..e9e184e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ExporterMetaFile.js @@ -0,0 +1,68 @@ +import { MetaField } from './MetaField'; +import { EnumMetaField } from './EnumMetaField'; +import { ValueDispatcher } from '../events'; +/** + * Represents the exporter configuration. + */ +export class ExporterMetaField extends MetaField { + /** + * Triggered when the nested fields change. + * + * @eventProperty + */ + get onFieldsChanged() { + return this.fields.subscribable; + } + get options() { + return this.optionFields[this.current]; + } + constructor(name, project, current = 0) { + const exporters = project.plugins.flatMap(plugin => plugin.exporters?.(project) ?? []); + const optionFields = exporters.map(exporter => exporter.meta(project)); + const exporterField = new EnumMetaField('exporter', exporters.map(exporter => ({ + value: exporter.id, + text: exporter.displayName, + })), exporters[current].id); + super(name, { + name: exporterField.get(), + options: optionFields[current].get(), + }); + this.current = current; + this.type = Object; + this.handleChange = () => { + const value = this.exporterField.get(); + const index = Math.max(this.exporters.findIndex(exporter => exporter.id === value), 0); + if (this.current !== index) { + this.options.onChanged.unsubscribe(this.handleChange); + this.current = index; + this.options.onChanged.subscribe(this.handleChange, false); + this.fields.current = [this.exporterField, this.options]; + } + this.value.current = { + name: this.exporterField.get(), + options: this.options.get(), + }; + }; + this.exporters = exporters; + this.exporterField = exporterField; + this.exporterField.onChanged.subscribe(this.handleChange, false); + this.exporterField.disable(optionFields.length < 2).space(); + this.optionFields = optionFields; + this.optionFields[current].onChanged.subscribe(this.handleChange, false); + this.fields = new ValueDispatcher([this.exporterField, this.options]); + } + set(value) { + this.exporterField.set(value.name); + this.options.set(value.options); + } + serialize() { + return { + name: this.exporterField.serialize(), + options: this.options.serialize(), + }; + } + clone() { + return new this.constructor(this.name, this.exporters, this.current); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0ZXJNZXRhRmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRhL0V4cG9ydGVyTWV0YUZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUxQzs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUdyQztJQUdBOzs7O09BSUc7SUFDSCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBR0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQU1ELFlBQW1CLElBQVksRUFBRSxPQUFnQixFQUFVLFVBQVUsQ0FBQztRQUNwRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDdkMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUM1QyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FDckMsVUFBVSxFQUNWLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNsQixJQUFJLEVBQUUsUUFBUSxDQUFDLFdBQVc7U0FDM0IsQ0FBQyxDQUFD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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts new file mode 100644 index 0000000..a8d9851 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts @@ -0,0 +1,80 @@ +import { ValueDispatcher } from '../events'; +/** + * Represents an entry in the meta file. + * + * @typeParam TSerializedValue - The type used to store this field in the meta + * file. + * @typeParam TValue - The runtime type of this field. + */ +export declare class MetaField { + readonly name: string; + readonly initial: TValue; + /** + * The type of this field used by the editor to display the correct input. + */ + readonly type: any; + spacing: boolean; + description: string; + /** + * Triggered when the data of this field changes. + * + * @eventProperty + */ + get onChanged(): import("../events").SubscribableValueEvent; + protected readonly value: ValueDispatcher; + /** + * Triggered when the field becomes disabled or enabled. + * + * @eventProperty + */ + get onDisabled(): import("../events").SubscribableValueEvent; + protected readonly disabled: ValueDispatcher; + /** + * @param name - The name of this field displayed in the editor. + * @param initial - The initial value of this field. + */ + constructor(name: string, initial: TValue); + /** + * Get the current value. + */ + get(): TValue; + /** + * Set the current value. + * + * @param value - The new value. + */ + set(value: TSerializedValue): void; + /** + * Convert a serialized value into a runtime type. + * + * @param value - The serialized value. + */ + parse(value: TSerializedValue): TValue; + /** + * Serialize the value of this field. + */ + serialize(): TSerializedValue; + /** + * Create a clone of this field. + */ + clone(): this; + /** + * Disable or enable the field in the editor. + * + * @param value - Whether the field should be disabled. + */ + disable(value?: boolean): this; + /** + * Add or remove spacing at the beginning of this field. + * + * @param value - Whether to include the spacing. + */ + space(value?: boolean): this; + /** + * Set the description of this field. + * + * @param description - The description. + */ + describe(description: string): this; +} +//# sourceMappingURL=MetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts.map new file mode 100644 index 0000000..fbd097b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MetaField.d.ts","sourceRoot":"","sources":["../../src/meta/MetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAE1C;;;;;;GAMG;AACH,qBAAa,SAAS,CACpB,gBAAgB,EAChB,MAAM,SAAS,gBAAgB,GAAG,gBAAgB;aAoChC,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,MAAM;IAnCjC;;OAEG;IACH,SAAgB,IAAI,EAAE,GAAG,CAAa;IAC/B,OAAO,UAAS;IAChB,WAAW,SAAM;IAExB;;;;OAIG;IACH,IAAW,SAAS,uDAEnB;IAED,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAElD;;;;OAIG;IACH,IAAW,UAAU,wDAEpB;IAED,SAAS,CAAC,QAAQ,CAAC,QAAQ,2BAA8B;IAEzD;;;OAGG;gBAEe,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM;IAKjC;;OAEG;IACI,GAAG,IAAI,MAAM;IAIpB;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,gBAAgB;IAIlC;;;;OAIG;IACI,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAI7C;;OAEG;IACI,SAAS,IAAI,gBAAgB;IAIpC;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;OAIG;IACI,OAAO,CAAC,KAAK,UAAO,GAAG,IAAI;IAKlC;;;;OAIG;IACI,KAAK,CAAC,KAAK,UAAO,GAAG,IAAI;IAKhC;;;;OAIG;IACI,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAI3C"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaField.js b/node_modules/@motion-canvas/core/lib/meta/MetaField.js new file mode 100644 index 0000000..4f95792 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaField.js @@ -0,0 +1,104 @@ +import { ValueDispatcher } from '../events'; +/** + * Represents an entry in the meta file. + * + * @typeParam TSerializedValue - The type used to store this field in the meta + * file. + * @typeParam TValue - The runtime type of this field. + */ +export class MetaField { + /** + * Triggered when the data of this field changes. + * + * @eventProperty + */ + get onChanged() { + return this.value.subscribable; + } + /** + * Triggered when the field becomes disabled or enabled. + * + * @eventProperty + */ + get onDisabled() { + return this.disabled.subscribable; + } + /** + * @param name - The name of this field displayed in the editor. + * @param initial - The initial value of this field. + */ + constructor(name, initial) { + this.name = name; + this.initial = initial; + /** + * The type of this field used by the editor to display the correct input. + */ + this.type = undefined; + this.spacing = false; + this.description = ''; + this.disabled = new ValueDispatcher(false); + this.value = new ValueDispatcher(initial); + } + /** + * Get the current value. + */ + get() { + return this.value.current; + } + /** + * Set the current value. + * + * @param value - The new value. + */ + set(value) { + this.value.current = this.parse(value); + } + /** + * Convert a serialized value into a runtime type. + * + * @param value - The serialized value. + */ + parse(value) { + return value; + } + /** + * Serialize the value of this field. + */ + serialize() { + return this.value.current; + } + /** + * Create a clone of this field. + */ + clone() { + return new this.constructor(this.name, this.get()); + } + /** + * Disable or enable the field in the editor. + * + * @param value - Whether the field should be disabled. + */ + disable(value = true) { + this.disabled.current = value; + return this; + } + /** + * Add or remove spacing at the beginning of this field. + * + * @param value - Whether to include the spacing. + */ + space(value = true) { + this.spacing = value; + return this; + } + /** + * Set the description of this field. + * + * @param description - The description. + */ + describe(description) { + this.description = description; + return this; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0YUZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldGEvTWV0YUZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFXcEI7Ozs7T0FJRztJQUNILElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ2pDLENBQUM7SUFJRDs7OztPQUlHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUlEOzs7T0FHRztJQUNILFlBQ2tCLElBQVksRUFDWixPQUFlO1FBRGYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFuQ2pDOztXQUVHO1FBQ2EsU0FBSSxHQUFRLFNBQVMsQ0FBQztRQUMvQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBc0JMLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVV2RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUc7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksR0FBRyxDQUFDLEtBQXVCO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsS0FBdUI7UUFDbEMsT0FBTyxLQUFlLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLE9BQU8sSUFBVSxJQUFJLENBQUMsV0FBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxXQUFtQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts b/node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts new file mode 100644 index 0000000..592ef76 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts @@ -0,0 +1,35 @@ +import type { MetaField } from './MetaField'; +/** + * Represents the meta file of a given entity. + * + * @remarks + * This class is used exclusively by our Vite plugin as a bridge between + * physical files and their runtime representation. + * + * @typeParam T - The type of the data stored in the meta file. + * + * @internal + */ +export declare class MetaFile { + private readonly name; + private source; + private readonly lock; + private ignoreChange; + private cache; + private metaField; + constructor(name: string, source?: string | false); + attach(field: MetaField): void; + protected handleChanged: () => Promise; + private saveData; + /** + * Load new metadata from a file. + * + * @remarks + * This method is called during hot module replacement. + * + * @param data - New metadata. + */ + loadData(data: T): void; + private static sourceLookup; +} +//# sourceMappingURL=MetaFile.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts.map new file mode 100644 index 0000000..9d3a114 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaFile.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MetaFile.d.ts","sourceRoot":"","sources":["../../src/meta/MetaFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAG3C;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ,CAAC,CAAC;IAOnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAA6B;gBAG3B,IAAI,EAAE,MAAM,EACrB,MAAM,GAAE,MAAM,GAAG,KAAa;IAGjC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IASjC,SAAS,CAAC,aAAa,sBAYrB;YAEY,QAAQ;IA8BtB;;;;;;;OAOG;IACI,QAAQ,CAAC,IAAI,EAAE,CAAC;IAOvB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgC;CAS5D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaFile.js b/node_modules/@motion-canvas/core/lib/meta/MetaFile.js new file mode 100644 index 0000000..74b3351 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaFile.js @@ -0,0 +1,96 @@ +var _a; +import { Semaphore, useLogger } from '../utils'; +/** + * Represents the meta file of a given entity. + * + * @remarks + * This class is used exclusively by our Vite plugin as a bridge between + * physical files and their runtime representation. + * + * @typeParam T - The type of the data stored in the meta file. + * + * @internal + */ +export class MetaFile { + constructor(name, source = false) { + this.name = name; + this.source = source; + this.lock = new Semaphore(); + this.ignoreChange = false; + this.cache = null; + this.metaField = null; + this.handleChanged = async () => { + if (import.meta.hot && this.metaField && !this.ignoreChange) { + const data = this.metaField.serialize(); + await this.lock.acquire(); + try { + // TODO Consider debouncing saving the meta file. + await this.saveData(data); + } + catch (e) { + useLogger().error(e); + } + this.lock.release(); + } + }; + } + attach(field) { + if (this.metaField) + return; + this.metaField = field; + if (this.cache) { + this.metaField.set(this.cache); + } + this.metaField?.onChanged.subscribe(this.handleChanged); + } + async saveData(data) { + if (this.source === false) { + return; + } + if (!this.source) { + throw new Error(`The meta file for ${this.name} is missing.`); + } + if (MetaFile.sourceLookup[this.source]) { + throw new Error(`Metadata for ${this.name} is already being updated`); + } + const source = this.source; + await new Promise((resolve, reject) => { + setTimeout(() => { + delete MetaFile.sourceLookup[source]; + reject(`Connection timeout when updating metadata for ${this.name}`); + }, 1000); + MetaFile.sourceLookup[source] = () => { + delete MetaFile.sourceLookup[source]; + resolve(); + }; + import.meta.hot.send('motion-canvas:meta', { + source, + data, + }); + }); + } + /** + * Load new metadata from a file. + * + * @remarks + * This method is called during hot module replacement. + * + * @param data - New metadata. + */ + loadData(data) { + this.ignoreChange = true; + this.cache = data; + this.metaField?.set(data); + this.ignoreChange = false; + } +} +_a = MetaFile; +MetaFile.sourceLookup = {}; +(() => { + if (import.meta.hot) { + import.meta.hot.on('motion-canvas:meta-ack', ({ source }) => { + _a.sourceLookup[source]?.(); + }); + } +})(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0YUZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YS9NZXRhRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBTW5CLFlBQ21CLElBQVksRUFDckIsU0FBeUIsS0FBSztRQURyQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQXdCO1FBUHZCLFNBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFVBQUssR0FBYSxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFnQnBDLGtCQUFhLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDbkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJO29CQUNGLGlEQUFpRDtvQkFDakQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQjtnQkFBQyxPQUFPLENBQU0sRUFBRTtvQkFDZixTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RCO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUM7SUF2QkMsQ0FBQztJQUVHLE1BQU0sQ0FBQyxLQUFtQjtRQUMvQixJQUFJLElBQUksQ0FBQyxT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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts b/node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts new file mode 100644 index 0000000..43062a5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts @@ -0,0 +1,5 @@ +export interface MetaOption { + text: string; + value: T; +} +//# sourceMappingURL=MetaOption.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts.map new file mode 100644 index 0000000..3abd764 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaOption.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MetaOption.d.ts","sourceRoot":"","sources":["../../src/meta/MetaOption.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACV"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/MetaOption.js b/node_modules/@motion-canvas/core/lib/meta/MetaOption.js new file mode 100644 index 0000000..f734931 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/MetaOption.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0YU9wdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRhL01ldGFPcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts new file mode 100644 index 0000000..8962810 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts @@ -0,0 +1,16 @@ +import { MetaField } from './MetaField'; +import { MetaOption } from './MetaOption'; +/** + * Represents a number stored in a meta file. + */ +export declare class NumberMetaField extends MetaField { + readonly type: NumberConstructor; + protected presets: MetaOption[]; + protected min?: number; + protected max?: number; + parse(value: any): number; + getPresets(): MetaOption[]; + setPresets(options: MetaOption[]): this; + setRange(min?: number, max?: number): this; +} +//# sourceMappingURL=NumberMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts.map new file mode 100644 index 0000000..9a7a507 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NumberMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/NumberMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACzD,SAAgB,IAAI,oBAAU;IAC9B,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAM;IAC7C,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAYzB,UAAU;IAIV,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI;IAK/C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAKlD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.js b/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.js new file mode 100644 index 0000000..3b13b4f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/NumberMetaField.js @@ -0,0 +1,34 @@ +import { MetaField } from './MetaField'; +/** + * Represents a number stored in a meta file. + */ +export class NumberMetaField extends MetaField { + constructor() { + super(...arguments); + this.type = Number; + this.presets = []; + } + parse(value) { + let parsed = parseFloat(value); + if (this.min !== undefined && parsed < this.min) { + parsed = this.min; + } + if (this.max !== undefined && parsed > this.max) { + parsed = this.max; + } + return parsed; + } + getPresets() { + return this.presets; + } + setPresets(options) { + this.presets = options; + return this; + } + setRange(min, max) { + this.min = min; + this.max = max; + return this; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVtYmVyTWV0YUZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldGEvTnVtYmVyTWV0YUZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFHdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxTQUFzQjtJQUEzRDs7UUFDa0IsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUNwQixZQUFPLEdBQXlCLEVBQUUsQ0FBQztJQThCL0MsQ0FBQztJQTFCUSxLQUFLLENBQUMsS0FBVTtRQUNyQixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMvQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNuQjtRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDL0MsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDbkI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQTZCO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFZLEVBQUUsR0FBWTtRQUN4QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts new file mode 100644 index 0000000..c21faa0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts @@ -0,0 +1,43 @@ +import { MetaField } from './MetaField'; +import { ValueDispatcher } from '../events'; +export type ValueOf> = { + [K in keyof T]: T[K] extends MetaField ? P : never; +}; +type TransformationOf, TKey extends CallableKeys>> = { + [K in keyof TObject]: TObject[K] extends MetaField ? ReturnType[TKey]> : never; +}; +type CallableKeys = { + [K in keyof T]: T[K] extends () => void ? K : never; +}[keyof T]; +/** + * Represents an object with nested meta-fields. + */ +declare class ObjectMetaFieldInternal>> extends MetaField> { + readonly type: ObjectConstructor; + /** + * Triggered when the nested fields change. + * + * @eventProperty + */ + get onFieldsChanged(): import("../events").SubscribableValueEvent[]>; + protected ignoreChange: boolean; + protected customFields: Record; + protected readonly fields: Map>; + protected readonly event: ValueDispatcher[]>; + constructor(name: string, fields: T); + set(value: Partial>): void; + serialize(): ValueOf; + clone(): this; + protected handleChange: () => void; + protected transform>>(fn: TKey): TransformationOf; +} +/** + * {@inheritDoc ObjectMetaFieldInternal} + */ +export type ObjectMetaField>> = ObjectMetaFieldInternal & T; +/** + * {@inheritDoc ObjectMetaFieldInternal} + */ +export declare const ObjectMetaField: new >>(name: string, data: T) => ObjectMetaField; +export {}; +//# sourceMappingURL=ObjectMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts.map new file mode 100644 index 0000000..9fd1b18 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ObjectMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/ObjectMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;KAClD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC;AAEF,KAAK,gBAAgB,CACnB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,IAAI,SAAS,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IACvC;KACD,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAChE,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GACjC,KAAK;CACV,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,IAAI;KACpB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK;CACpD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,cAAM,uBAAuB,CAC3B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CACxC,SAAQ,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,SAAgB,IAAI,oBAAU;IAE9B;;;;OAIG;IACH,IAAW,eAAe,8EAEzB;IAED,SAAS,CAAC,YAAY,UAAS;IAC/B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAE7C,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAiB1B,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAc9B,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC;IAIvB,KAAK,IAAI,IAAI;IAI7B,SAAS,CAAC,YAAY,aAGpB;IAEF,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC3D,EAAE,EAAE,IAAI,GACP,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC;CAU7B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAClE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,eAAe,4DAElB,MAAM,gCAGf,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.js b/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.js new file mode 100644 index 0000000..400f2ed --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/ObjectMetaField.js @@ -0,0 +1,65 @@ +import { MetaField } from './MetaField'; +import { ValueDispatcher } from '../events'; +/** + * Represents an object with nested meta-fields. + */ +class ObjectMetaFieldInternal extends MetaField { + /** + * Triggered when the nested fields change. + * + * @eventProperty + */ + get onFieldsChanged() { + return this.event.subscribable; + } + constructor(name, fields) { + const map = new Map(Object.entries(fields)); + super(name, Object.fromEntries(Array.from(map, ([name, field]) => [name, field.get()]))); + this.type = Object; + this.ignoreChange = false; + this.customFields = {}; + this.handleChange = () => { + if (this.ignoreChange) + return; + this.value.current = this.transform('get'); + }; + this.event = new ValueDispatcher([...map.values()]); + this.fields = map; + for (const [key, field] of this.fields) { + Object.defineProperty(this, key, { value: field }); + field.onChanged.subscribe(this.handleChange); + } + } + set(value) { + this.ignoreChange = true; + for (const [key, fieldValue] of Object.entries(value)) { + const field = this.fields.get(key); + if (field) { + field.set(fieldValue); + } + else { + this.customFields[key] = fieldValue; + } + } + this.ignoreChange = false; + this.handleChange(); + } + serialize() { + return this.transform('serialize'); + } + clone() { + return new this.constructor(this.name, this.transform('clone')); + } + transform(fn) { + const transformed = Object.fromEntries(Array.from(this.fields, ([name, field]) => [name, field[fn]()])); + return { + ...transformed, + ...this.customFields, + }; + } +} +/** + * {@inheritDoc ObjectMetaFieldInternal} + */ +export const ObjectMetaField = ObjectMetaFieldInternal; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JqZWN0TWV0YUZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldGEvT2JqZWN0TWV0YUZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQW1CMUM7O0dBRUc7QUFDSCxNQUFNLHVCQUVKLFNBQVEsU0FBcUI7SUFHN0I7Ozs7T0FJRztJQUNILElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ2pDLENBQUM7SUFPRCxZQUFtQixJQUFZLEVBQUUsTUFBUztRQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUNILElBQUksRUFDSixNQUFNLENBQUMsV0FBVyxDQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUMxQyxDQUNoQixDQUFDO1FBdkJZLFNBQUksR0FBRyxNQUFNLENBQUM7UUFXcEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsaUJBQVksR0FBNEIsRUFBRSxDQUFDO1FBMkMzQyxpQkFBWSxHQUFHLEdBQUcsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU87WUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUM7UUFqQ0EsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRWUsR0FBRyxDQUFDLEtBQTBCO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDckM7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRWUsU0FBUztRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVlLEtBQUs7UUFDbkIsT0FBTyxJQUFVLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQU9TLFNBQVMsQ0FDakIsRUFBUTtRQUVSLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ25DLENBQUM7UUFFL0IsT0FBTztZQUNMLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLFlBQVk7U0FDckIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVFEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLHVCQUs5QixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts new file mode 100644 index 0000000..c20cdf5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts @@ -0,0 +1,34 @@ +import { MetaField } from './MetaField'; +/** + * Represents a range stored in a meta file. + * + * @remarks + * Range is an array with two elements denoting the beginning and end of a + * range, respectively. + */ +export declare class RangeMetaField extends MetaField<[ + number, + number | null +], [ + number, + number +]> { + static readonly symbol: unique symbol; + readonly type: symbol; + parse(value: [number, number | null]): [number, number]; + /** + * Convert the given range from frames to seconds and update this field. + * + * @remarks + * This helper method applies additional validation to the range, preventing + * it from overflowing the timeline. + * + * @param startFrame - The beginning of the range. + * @param endFrame - The end of the range. + * @param duration - The current duration in frames. + * @param fps - The current framerate. + */ + update(startFrame: number, endFrame: number, duration: number, fps: number): void; + protected parseRange(duration: number, startFrame?: number, endFrame?: number): [number, number]; +} +//# sourceMappingURL=RangeMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts.map new file mode 100644 index 0000000..4446890 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RangeMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/RangeMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAItC;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,SAAS,CAC3C;IAAC,MAAM;IAAE,MAAM,GAAG,IAAI;CAAC,EACvB;IAAC,MAAM;IAAE,MAAM;CAAC,CACjB;IACC,gBAAuB,MAAM,gBAE3B;IACF,SAAgB,IAAI,SAAyB;IAE7B,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIvE;;;;;;;;;;;OAWG;IACI,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM;IASb,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAA8B,EAC1C,QAAQ,GAAE,MAA8B,GACvC,CAAC,MAAM,EAAE,MAAM,CAAC;CAcpB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.js b/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.js new file mode 100644 index 0000000..5f362d4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/RangeMetaField.js @@ -0,0 +1,47 @@ +import { MetaField } from './MetaField'; +import { EPSILON } from '../types'; +import { clamp } from '../tweening'; +/** + * Represents a range stored in a meta file. + * + * @remarks + * Range is an array with two elements denoting the beginning and end of a + * range, respectively. + */ +export class RangeMetaField extends MetaField { + constructor() { + super(...arguments); + this.type = RangeMetaField.symbol; + } + parse(value) { + return this.parseRange(Infinity, value[0], value[1] ?? Infinity); + } + /** + * Convert the given range from frames to seconds and update this field. + * + * @remarks + * This helper method applies additional validation to the range, preventing + * it from overflowing the timeline. + * + * @param startFrame - The beginning of the range. + * @param endFrame - The end of the range. + * @param duration - The current duration in frames. + * @param fps - The current framerate. + */ + update(startFrame, endFrame, duration, fps) { + this.value.current = this.parseRange(duration / fps - EPSILON, startFrame / fps - EPSILON, endFrame / fps - EPSILON); + } + parseRange(duration, startFrame = this.value.current[0], endFrame = this.value.current[1]) { + startFrame = clamp(0, duration, startFrame); + endFrame = clamp(0, duration, endFrame ?? Infinity); + if (startFrame > endFrame) { + [startFrame, endFrame] = [endFrame, startFrame]; + } + if (endFrame >= duration) { + endFrame = Infinity; + } + return [startFrame, endFrame]; + } +} +RangeMetaField.symbol = Symbol.for('@motion-canvas/core/meta/RangeMetaField'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZ2VNZXRhRmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YS9SYW5nZU1ldGFGaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUVsQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBR25DO0lBSEQ7O1FBT2tCLFNBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBaUQvQyxDQUFDO0lBL0NpQixLQUFLLENBQUMsS0FBOEI7UUFDbEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FDWCxVQUFrQixFQUNsQixRQUFnQixFQUNoQixRQUFnQixFQUNoQixHQUFXO1FBRVgsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDbEMsUUFBUSxHQUFHLEdBQUcsR0FBRyxPQUFPLEVBQ3hCLFVBQVUsR0FBRyxHQUFHLEdBQUcsT0FBTyxFQUMxQixRQUFRLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFUyxVQUFVLENBQ2xCLFFBQWdCLEVBQ2hCLGFBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUMxQyxXQUFtQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFeEMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7UUFFcEQsSUFBSSxVQUFVLEdBQUcsUUFBUSxFQUFFO1lBQ3pCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxRQUFRLElBQUksUUFBUSxFQUFFO1lBQ3hCLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDckI7UUFFRCxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0FBbkRzQixxQkFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQ3hDLHlDQUF5QyxDQUMxQyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts new file mode 100644 index 0000000..70db8f0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts @@ -0,0 +1,12 @@ +import { MetaField } from './MetaField'; +import { MetaOption } from './MetaOption'; +/** + * Represents a string stored in a meta file. + */ +export declare class StringMetaField extends MetaField { + readonly type: StringConstructor; + protected presets: MetaOption[]; + getPresets(): MetaOption[]; + setPresets(options: MetaOption[]): this; +} +//# sourceMappingURL=StringMetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts.map new file mode 100644 index 0000000..0e5a591 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/StringMetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StringMetaField.d.ts","sourceRoot":"","sources":["../../src/meta/StringMetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,qBAAa,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC1E,SAAgB,IAAI,oBAAU;IAC9B,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAM;IAEjC,UAAU;IAIV,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;CAIlD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/StringMetaField.js b/node_modules/@motion-canvas/core/lib/meta/StringMetaField.js new file mode 100644 index 0000000..f210801 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/StringMetaField.js @@ -0,0 +1,19 @@ +import { MetaField } from './MetaField'; +/** + * Represents a string stored in a meta file. + */ +export class StringMetaField extends MetaField { + constructor() { + super(...arguments); + this.type = String; + this.presets = []; + } + getPresets() { + return this.presets; + } + setPresets(options) { + this.presets = options; + return this; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyaW5nTWV0YUZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldGEvU3RyaW5nTWV0YUZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFHdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBMkMsU0FBUSxTQUFZO0lBQTVFOztRQUNrQixTQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLFlBQU8sR0FBb0IsRUFBRSxDQUFDO0lBVTFDLENBQUM7SUFSUSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBd0I7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts b/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts new file mode 100644 index 0000000..eebf14a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts @@ -0,0 +1,11 @@ +import { MetaField } from './MetaField'; +import { PossibleVector2, Vector2 } from '../types'; +/** + * Represents a two-dimensional vector stored in a meta file. + */ +export declare class Vector2MetaField extends MetaField { + readonly type: symbol; + parse(value: PossibleVector2): Vector2; + serialize(): PossibleVector2; +} +//# sourceMappingURL=Vector2MetaField.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts.map new file mode 100644 index 0000000..04bf9e3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vector2MetaField.d.ts","sourceRoot":"","sources":["../../src/meta/Vector2MetaField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,eAAe,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAElD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;IACvE,SAAgB,IAAI,SAAkB;IAEtB,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAItC,SAAS,IAAI,eAAe;CAG7C"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.js b/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.js new file mode 100644 index 0000000..8d7d601 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/Vector2MetaField.js @@ -0,0 +1,18 @@ +import { MetaField } from './MetaField'; +import { Vector2 } from '../types'; +/** + * Represents a two-dimensional vector stored in a meta file. + */ +export class Vector2MetaField extends MetaField { + constructor() { + super(...arguments); + this.type = Vector2.symbol; + } + parse(value) { + return new Vector2(value); + } + serialize() { + return this.value.current.serialize(); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMk1ldGFGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRhL1ZlY3RvcjJNZXRhRmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQWtCLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUFtQztJQUF6RTs7UUFDa0IsU0FBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFTeEMsQ0FBQztJQVBpQixLQUFLLENBQUMsS0FBc0I7UUFDMUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRWUsU0FBUztRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/index.d.ts b/node_modules/@motion-canvas/core/lib/meta/index.d.ts new file mode 100644 index 0000000..805c963 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/index.d.ts @@ -0,0 +1,18 @@ +/** + * The runtime representation of meta files. + * + * @packageDocumentation + */ +export * from './ObjectMetaField'; +export * from './BoolMetaField'; +export * from './ColorMetaField'; +export * from './EnumMetaField'; +export * from './ExporterMetaFile'; +export * from './MetaField'; +export * from './MetaFile'; +export * from './NumberMetaField'; +export * from './RangeMetaField'; +export * from './StringMetaField'; +export * from './Vector2MetaField'; +export * from './MetaOption'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/index.d.ts.map b/node_modules/@motion-canvas/core/lib/meta/index.d.ts.map new file mode 100644 index 0000000..971dec8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/meta/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/meta/index.js b/node_modules/@motion-canvas/core/lib/meta/index.js new file mode 100644 index 0000000..5964285 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/meta/index.js @@ -0,0 +1,18 @@ +/** + * The runtime representation of meta files. + * + * @packageDocumentation + */ +export * from './ObjectMetaField'; +export * from './BoolMetaField'; +export * from './ColorMetaField'; +export * from './EnumMetaField'; +export * from './ExporterMetaFile'; +export * from './MetaField'; +export * from './MetaFile'; +export * from './NumberMetaField'; +export * from './RangeMetaField'; +export * from './StringMetaField'; +export * from './Vector2MetaField'; +export * from './MetaOption'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts b/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts new file mode 100644 index 0000000..a0f423a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts @@ -0,0 +1,8 @@ +/** + * The default plugin included in every Motion Canvas project. + * + * @internal + */ +declare const _default: () => import("./Plugin").Plugin; +export default _default; +//# sourceMappingURL=DefaultPlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts.map b/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts.map new file mode 100644 index 0000000..c554073 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DefaultPlugin.d.ts","sourceRoot":"","sources":["../../src/plugin/DefaultPlugin.ts"],"names":[],"mappings":"AAGA;;;;GAIG;;AACH,wBAKG"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.js b/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.js new file mode 100644 index 0000000..a188dc3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/DefaultPlugin.js @@ -0,0 +1,14 @@ +import { makePlugin } from './makePlugin'; +import { ImageExporter } from '../app'; +/** + * The default plugin included in every Motion Canvas project. + * + * @internal + */ +export default makePlugin({ + name: 'mc-default-plugin', + exporters() { + return [ImageExporter]; + }, +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW4vRGVmYXVsdFBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFckM7Ozs7R0FJRztBQUNILGVBQWUsVUFBVSxDQUFDO0lBQ3hCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsU0FBUztRQUNQLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0YsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts b/node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts new file mode 100644 index 0000000..c798d4f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts @@ -0,0 +1,44 @@ +import type { ExporterClass, Project, Player, ProjectSettings, Presenter, Renderer } from '../app'; +/** + * Represents a runtime Motion Canvas plugin. + */ +export interface Plugin { + name: string; + /** + * Modify the project settings before the project is initialized. + * + * @param settings - The project settings. + */ + settings?(settings: ProjectSettings): ProjectSettings | void; + /** + * Receive the project instance right after it is initialized. + * + * @param project - The project instance. + */ + project?(project: Project): void; + /** + * Receive the player instance right after it is initialized. + * + * @param player - The player instance. + */ + player?(player: Player): void; + /** + * Receive the presenter instance right after it is initialized. + * + * @param presenter - The presenter instance. + */ + presenter?(presenter: Presenter): void; + /** + * Receive the renderer instance right after it is initialized. + * + * @param renderer - The renderer instance. + */ + renderer?(renderer: Renderer): void; + /** + * Provide custom exporters for the project. + * + * @param project - The project instance. + */ + exporters?(project: Project): ExporterClass[]; +} +//# sourceMappingURL=Plugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts.map b/node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts.map new file mode 100644 index 0000000..fdd5f6c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/Plugin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,MAAM,EACN,eAAe,EACf,SAAS,EACT,QAAQ,EACT,MAAM,QAAQ,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IAE7D;;;;OAIG;IACH,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEpC;;;;OAIG;IACH,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAAC;CAC/C"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/Plugin.js b/node_modules/@motion-canvas/core/lib/plugin/Plugin.js new file mode 100644 index 0000000..9a3c190 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/Plugin.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi9QbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/index.d.ts b/node_modules/@motion-canvas/core/lib/plugin/index.d.ts new file mode 100644 index 0000000..5027cfc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/index.d.ts @@ -0,0 +1,3 @@ +export * from './Plugin'; +export * from './makePlugin'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/index.d.ts.map b/node_modules/@motion-canvas/core/lib/plugin/index.d.ts.map new file mode 100644 index 0000000..de6bf33 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/index.js b/node_modules/@motion-canvas/core/lib/plugin/index.js new file mode 100644 index 0000000..3483e8c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/index.js @@ -0,0 +1,3 @@ +export * from './Plugin'; +export * from './makePlugin'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGx1Z2luL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts b/node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts new file mode 100644 index 0000000..ed16766 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts @@ -0,0 +1,15 @@ +import type { Plugin } from './Plugin'; +/** + * A helper function for exporting Motion Canvas plugins. + * + * @param plugin - The plugin configuration. + * + * @example + * ```ts + * export default makePlugin({ + * name: 'my-custom-plugin', + * }); + * ``` + */ +export declare function makePlugin(plugin: Plugin | (() => Plugin)): () => Plugin; +//# sourceMappingURL=makePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts.map b/node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts.map new file mode 100644 index 0000000..b5d9a4e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/makePlugin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"makePlugin.d.ts","sourceRoot":"","sources":["../../src/plugin/makePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,MAAM,CAExE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/plugin/makePlugin.js b/node_modules/@motion-canvas/core/lib/plugin/makePlugin.js new file mode 100644 index 0000000..569dfd9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/plugin/makePlugin.js @@ -0,0 +1,16 @@ +/** + * A helper function for exporting Motion Canvas plugins. + * + * @param plugin - The plugin configuration. + * + * @example + * ```ts + * export default makePlugin({ + * name: 'my-custom-plugin', + * }); + * ``` + */ +export function makePlugin(plugin) { + return typeof plugin === 'function' ? plugin : () => plugin; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW4vbWFrZVBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBK0I7SUFDeEQsT0FBTyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQzlELENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts b/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts new file mode 100644 index 0000000..3766741 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts @@ -0,0 +1,92 @@ +import { Thread, ThreadGenerator } from '../threading'; +import { Logger, PlaybackStatus } from '../app'; +import { TimeEvents } from './timeEvents'; +import { Variables } from './Variables'; +import { EventDispatcher } from '../events'; +import { CachedSceneData, FullSceneDescription, Scene, SceneDescriptionReload, SceneRenderEvent } from './Scene'; +import { LifecycleEvents } from './LifecycleEvents'; +import { Threadable } from './Threadable'; +import { Vector2 } from '../types'; +import { Random } from './Random'; +import { SceneMetadata } from './SceneMetadata'; +import { Slides } from './Slides'; +export interface ThreadGeneratorFactory { + (view: T): ThreadGenerator; +} +/** + * The default implementation of the {@link Scene} interface. + * + * Uses generators to control the animation. + */ +export declare abstract class GeneratorScene implements Scene>, Threadable { + readonly name: string; + readonly playback: PlaybackStatus; + readonly logger: Logger; + readonly meta: SceneMetadata; + readonly timeEvents: TimeEvents; + readonly slides: Slides; + readonly variables: Variables; + random: Random; + creationStack?: string; + get firstFrame(): number; + get lastFrame(): number; + get onCacheChanged(): import("../events").SubscribableValueEvent; + private readonly cache; + get onReloaded(): import("../events").Subscribable>; + private readonly reloaded; + get onRecalculated(): import("../events").Subscribable>; + private readonly recalculated; + get onThreadChanged(): import("../events").SubscribableValueEvent; + private readonly thread; + get onRenderLifecycle(): import("../events").Subscribable<[SceneRenderEvent, CanvasRenderingContext2D], import("../events").EventHandler<[SceneRenderEvent, CanvasRenderingContext2D]>>; + protected readonly renderLifecycle: EventDispatcher<[SceneRenderEvent, CanvasRenderingContext2D]>; + get onReset(): import("../events").Subscribable>; + private readonly afterReset; + readonly lifecycleEvents: LifecycleEvents; + get LifecycleEvents(): LifecycleEvents; + get previous(): Scene | null; + protected resolutionScale: number; + private runnerFactory; + private previousScene; + private runner; + private state; + private cached; + private counters; + private size; + constructor(description: FullSceneDescription>); + abstract getView(): T; + /** + * Update the view. + * + * Invoked after each step of the main generator. + * Can be used for calculating layout. + * + * Can modify the state of the view. + */ + update(): void; + render(context: CanvasRenderingContext2D): Promise; + protected abstract draw(context: CanvasRenderingContext2D): void; + reload({ config, size, stack, resolutionScale, }?: SceneDescriptionReload>): void; + recalculate(setFrame: (frame: number) => void): Promise; + next(): Promise; + reset(previousScene?: Scene | null): Promise; + getSize(): Vector2; + isAfterTransitionIn(): boolean; + canTransitionOut(): boolean; + isFinished(): boolean; + enterInitial(): void; + enterAfterTransitionIn(): void; + enterCanTransitionOut(): void; + isCached(): boolean; + /** + * Invoke the given callback in the context of this scene. + * + * @remarks + * This method makes sure that the context of this scene is globally available + * during the execution of the callback. + * + * @param callback - The callback to invoke. + */ + protected execute(callback: () => T): T; +} +//# sourceMappingURL=GeneratorScene.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts.map new file mode 100644 index 0000000..3a702b6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GeneratorScene.d.ts","sourceRoot":"","sources":["../../src/scenes/GeneratorScene.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.js b/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.js new file mode 100644 index 0000000..8762240 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/GeneratorScene.js @@ -0,0 +1,267 @@ +import { isPromisable, isPromise, threads, } from '../threading'; +import { Variables } from './Variables'; +import { EventDispatcher, ValueDispatcher } from '../events'; +import { decorate, threadable } from '../decorators'; +import { endPlayback, endScene, startPlayback, startScene } from '../utils'; +import { LifecycleEvents } from './LifecycleEvents'; +import { BBox } from '../types'; +import { SceneState } from './SceneState'; +import { Random } from './Random'; +import { DependencyContext } from '../signals'; +import { Slides } from './Slides'; +/** + * The default implementation of the {@link Scene} interface. + * + * Uses generators to control the animation. + */ +export class GeneratorScene { + get firstFrame() { + return this.cache.current.firstFrame; + } + get lastFrame() { + return this.firstFrame + this.cache.current.duration; + } + get onCacheChanged() { + return this.cache.subscribable; + } + get onReloaded() { + return this.reloaded.subscribable; + } + get onRecalculated() { + return this.recalculated.subscribable; + } + get onThreadChanged() { + return this.thread.subscribable; + } + get onRenderLifecycle() { + return this.renderLifecycle.subscribable; + } + get onReset() { + return this.afterReset.subscribable; + } + // eslint-disable-next-line @typescript-eslint/naming-convention + get LifecycleEvents() { + this.logger.warn('LifecycleEvents is deprecated. Use lifecycleEvents instead.'); + return this.lifecycleEvents; + } + get previous() { + return this.previousScene; + } + constructor(description) { + this.cache = new ValueDispatcher({ + firstFrame: 0, + transitionDuration: 0, + duration: 0, + lastFrame: 0, + }); + this.reloaded = new EventDispatcher(); + this.recalculated = new EventDispatcher(); + this.thread = new ValueDispatcher(null); + this.renderLifecycle = new EventDispatcher(); + this.afterReset = new EventDispatcher(); + this.lifecycleEvents = new LifecycleEvents(this); + this.previousScene = null; + this.runner = null; + this.state = SceneState.Initial; + this.cached = false; + this.counters = {}; + this.name = description.name; + this.size = description.size; + this.resolutionScale = description.resolutionScale; + this.logger = description.logger; + this.playback = description.playback; + this.meta = description.meta; + this.runnerFactory = description.config; + this.creationStack = description.stack; + decorate(this.runnerFactory, threadable(this.name)); + this.timeEvents = new description.timeEventsClass(this); + this.variables = new Variables(this); + this.slides = new Slides(this); + this.random = new Random(this.meta.seed.get()); + } + /** + * Update the view. + * + * Invoked after each step of the main generator. + * Can be used for calculating layout. + * + * Can modify the state of the view. + */ + update() { + // do nothing + } + async render(context) { + let iterations = 0; + do { + iterations++; + await DependencyContext.consumePromises(); + context.save(); + const box = BBox.fromSizeCentered(this.getSize()); + context.clearRect(box.x, box.y, box.width, box.height); + this.execute(() => this.draw(context)); + context.restore(); + } while (DependencyContext.hasPromises() && iterations < 10); + if (iterations > 1) { + this.logger.debug(`render iterations: ${iterations}`); + } + } + reload({ config, size, stack, resolutionScale, } = {}) { + if (config) { + this.runnerFactory = config; + } + if (size) { + this.size = size; + } + if (resolutionScale) { + this.resolutionScale = resolutionScale; + } + if (stack) { + this.creationStack = stack; + } + this.cached = false; + this.reloaded.dispatch(); + } + async recalculate(setFrame) { + const cached = this.cache.current; + cached.firstFrame = this.playback.frame; + cached.lastFrame = cached.firstFrame + cached.duration; + if (this.isCached()) { + setFrame(cached.lastFrame); + this.cache.current = { ...cached }; + return; + } + cached.transitionDuration = -1; + await this.reset(); + while (!this.canTransitionOut()) { + if (cached.transitionDuration < 0 && + this.state === SceneState.AfterTransitionIn) { + cached.transitionDuration = this.playback.frame - cached.firstFrame; + } + setFrame(this.playback.frame + 1); + await this.next(); + } + if (cached.transitionDuration === -1) { + cached.transitionDuration = 0; + } + cached.lastFrame = this.playback.frame; + cached.duration = cached.lastFrame - cached.firstFrame; + // Prevent the page from becoming unresponsive. + await new Promise(resolve => setTimeout(resolve, 0)); + this.cached = true; + this.cache.current = { ...cached }; + this.recalculated.dispatch(); + } + async next() { + if (!this.runner) { + return; + } + let result = this.execute(() => this.runner.next()); + this.update(); + while (result.value) { + if (isPromisable(result.value)) { + const value = await result.value.toPromise(); + result = this.execute(() => this.runner.next(value)); + } + else if (isPromise(result.value)) { + const value = await result.value; + result = this.execute(() => this.runner.next(value)); + } + else { + this.logger.warn({ + message: 'Invalid value yielded by the scene.', + object: result.value, + }); + result = this.execute(() => this.runner.next(result.value)); + } + this.update(); + } + if (DependencyContext.hasPromises()) { + const promises = await DependencyContext.consumePromises(); + this.logger.error({ + message: 'Tried to access an asynchronous property before the node was ready. ' + + 'Make sure to yield the node before accessing the property.', + stack: promises[0].stack, + inspect: promises[0].owner?.key ?? undefined, + }); + } + if (result.done) { + this.state = SceneState.Finished; + } + } + async reset(previousScene = null) { + this.counters = {}; + this.previousScene = previousScene; + this.random = new Random(this.meta.seed.get()); + this.runner = threads(() => this.runnerFactory(this.getView()), thread => { + this.thread.current = thread; + }); + this.state = SceneState.AfterTransitionIn; + this.afterReset.dispatch(); + await this.next(); + } + getSize() { + return this.size; + } + isAfterTransitionIn() { + return this.state === SceneState.AfterTransitionIn; + } + canTransitionOut() { + return (this.state === SceneState.CanTransitionOut || + this.state === SceneState.Finished); + } + isFinished() { + return this.state === SceneState.Finished; + } + enterInitial() { + if (this.state === SceneState.AfterTransitionIn) { + this.state = SceneState.Initial; + } + else { + this.logger.warn(`Scene ${this.name} entered initial in an unexpected state: ${this.state}`); + } + } + enterAfterTransitionIn() { + if (this.state === SceneState.Initial) { + this.state = SceneState.AfterTransitionIn; + } + else { + this.logger.warn(`Scene ${this.name} transitioned in an unexpected state: ${this.state}`); + } + } + enterCanTransitionOut() { + if (this.state === SceneState.AfterTransitionIn || + this.state === SceneState.Initial // only on recalculate + ) { + this.state = SceneState.CanTransitionOut; + } + else { + this.logger.warn(`Scene ${this.name} was marked as finished in an unexpected state: ${this.state}`); + } + } + isCached() { + return this.cached; + } + /** + * Invoke the given callback in the context of this scene. + * + * @remarks + * This method makes sure that the context of this scene is globally available + * during the execution of the callback. + * + * @param callback - The callback to invoke. + */ + execute(callback) { + let result; + startScene(this); + startPlayback(this.playback); + try { + result = callback(); + } + finally { + endPlayback(this.playback); + endScene(this); + } + return result; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJhdG9yU2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NlbmVzL0dlbmVyYXRvclNjZW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUdULE9BQU8sR0FDUixNQUFNLGNBQWMsQ0FBQztBQUd0QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFRMUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBQyxJQUFJLEVBQVUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUU3QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBTWhDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLGNBQWM7SUFhbEMsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDakMsQ0FBQztJQVFELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFHRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUN4QyxDQUFDO0lBR0QsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDbEMsQ0FBQztJQUdELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7SUFDM0MsQ0FBQztJQUtELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFJRCxnRUFBZ0U7SUFDaEUsSUFBVyxlQUFlO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFXRCxZQUNFLFdBQTREO1FBekQ3QyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQWtCO1lBQzVELFVBQVUsRUFBRSxDQUFDO1lBQ2Isa0JBQWtCLEVBQUUsQ0FBQztZQUNyQixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2IsQ0FBQyxDQUFDO1FBS2MsYUFBUSxHQUFHLElBQUksZUFBZSxFQUFRLENBQUM7UUFLdkMsaUJBQVksR0FBRyxJQUFJLGVBQWUsRUFBUSxDQUFDO1FBSzNDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFLaEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsRUFFckQsQ0FBQztRQUthLGVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBUSxDQUFDO1FBRTFDLG9CQUFlLEdBQW9CLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBZXJFLGtCQUFhLEdBQWlCLElBQUksQ0FBQztRQUNuQyxXQUFNLEdBQTJCLElBQUksQ0FBQztRQUN0QyxVQUFLLEdBQWUsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsYUFBUSxHQUEyQixFQUFFLENBQUM7UUFNNUMsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUV2QyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBSUQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU07UUFDWCxhQUFhO0lBQ2YsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBaUM7UUFDbkQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEdBQUc7WUFDRCxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0saUJBQWlCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNuQixRQUFRLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxJQUFJLFVBQVUsR0FBRyxFQUFFLEVBQUU7UUFFN0QsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUlNLE1BQU0sQ0FBQyxFQUNaLE1BQU0sRUFDTixJQUFJLEVBQ0osS0FBSyxFQUNMLGVBQWUsTUFDc0MsRUFBRTtRQUN2RCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUNELElBQUksZUFBZSxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBaUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbEMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQixRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUMsQ0FBQztZQUNqQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQy9CLElBQ0UsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLGlCQUFpQixFQUMzQztnQkFDQSxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQzthQUNyRTtZQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksTUFBTSxDQUFDLGtCQUFrQixLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7U0FDL0I7UUFFRCxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3ZELCtDQUErQztRQUMvQyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUVELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNuQixJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN2RDtpQkFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDakMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN2RDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDZixPQUFPLEVBQUUscUNBQXFDO29CQUM5QyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7aUJBQ3JCLENBQUMsQ0FBQztnQkFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM5RDtZQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNoQixPQUFPLEVBQ0wsc0VBQXNFO29CQUN0RSw0REFBNEQ7Z0JBQzlELEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDeEIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLFNBQVM7YUFDN0MsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBOEIsSUFBSTtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQ25CLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ3hDLE1BQU0sQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQy9CLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUM7SUFDckQsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsZ0JBQWdCO1lBQzFDLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTtZQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7U0FDakM7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLFNBQVMsSUFBSSxDQUFDLElBQUksNENBQTRDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FDM0UsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztTQUMzQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsU0FBUyxJQUFJLENBQUMsSUFBSSx5Q0FBeUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUN4RSxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU0scUJBQXFCO1FBQzFCLElBQ0UsSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsaUJBQWlCO1lBQzNDLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0I7VUFDeEQ7WUFDQSxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUMxQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsU0FBUyxJQUFJLENBQUMsSUFBSSxtREFBbUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUNsRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxPQUFPLENBQUksUUFBaUI7UUFDcEMsSUFBSSxNQUFTLENBQUM7UUFDZCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0YsTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO2dCQUFTO1lBQ1IsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts b/node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts new file mode 100644 index 0000000..84b5c54 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts @@ -0,0 +1,71 @@ +import { Vector2 } from '../types/Vector'; +/** + * Represents an element to inspect. + * + * @remarks + * The type is not important because the UI does not interact with it. + * It serves as a key that will be passed back to an Inspectable scene to + * receive more information about said element. + */ +export type InspectedElement = unknown; +/** + * Represents attributes of an inspected element. + */ +export type InspectedAttributes = { + stack?: string; + [K: string]: any; +}; +/** + * Scenes can implement this interface to make their components + * inspectable through the UI. + */ +export interface Inspectable { + /** + * Get a possible element to inspect at a given position. + * + * @param x - The x coordinate. + * @param y - The y coordinate. + */ + inspectPosition(x: number, y: number): InspectedElement | null; + /** + * Check if the inspected element is still valid. + * + * @remarks + * If a scene destroys and recreates its components upon every reset, the + * reference may no longer be valid. Even though the component is still + * present. This method should check that and return a new reference. + * + * @param element - The element to validate. + */ + validateInspection(element: InspectedElement | null): InspectedElement | null; + /** + * Return the attributes of the inspected element. + * + * @remarks + * This information will be displayed in the "Properties" panel. + * + * @param element - The element to inspect. + */ + inspectAttributes(element: InspectedElement): InspectedAttributes | null; + /** + * Draw an overlay for the inspected element. + * + * @remarks + * This method can be used to overlay additional information about an + * element on top of the animation. + * + * @param element - The element for which to draw an overlay. + * @param matrix - A local-to-screen matrix. + * @param context - The context to draw with. + */ + drawOverlay(element: InspectedElement, matrix: DOMMatrix, context: CanvasRenderingContext2D): void; + /** + * Transform the absolute mouse coordinates into the scene's coordinate system. + * + * @param x - The x coordinate. + * @param y - The y coordinate. + */ + transformMousePosition(x: number, y: number): Vector2 | null; +} +export declare function isInspectable(value: any): value is Inspectable; +//# sourceMappingURL=Inspectable.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts.map new file mode 100644 index 0000000..6deae8f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Inspectable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Inspectable.d.ts","sourceRoot":"","sources":["../../src/scenes/Inspectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAE/D;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAE9E;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAEzE;;;;;;;;;;OAUG;IACH,WAAW,CACT,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,wBAAwB,GAChC,IAAI,CAAC;IAER;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAC9D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,WAAW,CAE9D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Inspectable.js b/node_modules/@motion-canvas/core/lib/scenes/Inspectable.js new file mode 100644 index 0000000..f19cf77 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Inspectable.js @@ -0,0 +1,4 @@ +export function isInspectable(value) { + return value && typeof value === 'object' && 'validateInspection' in value; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zcGVjdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NlbmVzL0luc3BlY3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlGQSxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQVU7SUFDdEMsT0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLG9CQUFvQixJQUFJLEtBQUssQ0FBQztBQUM3RSxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts b/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts new file mode 100644 index 0000000..340da10 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts @@ -0,0 +1,18 @@ +import { Scene } from './Scene'; +import { EventDispatcher } from '../events'; +/** + * Lifecycle events for {@link Scene} that are cleared on every reset. + */ +export declare class LifecycleEvents { + private readonly scene; + get onBeforeRender(): import("../events").Subscribable>; + protected readonly beforeRender: EventDispatcher; + get onBeginRender(): import("../events").Subscribable>; + protected readonly beginRender: EventDispatcher; + get onFinishRender(): import("../events").Subscribable>; + protected readonly finishRender: EventDispatcher; + get onAfterRender(): import("../events").Subscribable>; + protected readonly afterRender: EventDispatcher; + constructor(scene: Scene); +} +//# sourceMappingURL=LifecycleEvents.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts.map new file mode 100644 index 0000000..c157896 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LifecycleEvents.d.ts","sourceRoot":"","sources":["../../src/scenes/LifecycleEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAmB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,qBAAa,eAAe;IAyBP,OAAO,CAAC,QAAQ,CAAC,KAAK;IAxBzC,IAAW,cAAc,2HAExB;IACD,SAAS,CAAC,QAAQ,CAAC,YAAY,4CACmB;IAElD,IAAW,aAAa,2HAEvB;IACD,SAAS,CAAC,QAAQ,CAAC,WAAW,4CACoB;IAElD,IAAW,cAAc,2HAExB;IACD,SAAS,CAAC,QAAQ,CAAC,YAAY,4CACmB;IAElD,IAAW,aAAa,2HAEvB;IACD,SAAS,CAAC,QAAQ,CAAC,WAAW,4CACoB;gBAEd,KAAK,EAAE,KAAK;CAoBjD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.js b/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.js new file mode 100644 index 0000000..9c8c9df --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/LifecycleEvents.js @@ -0,0 +1,45 @@ +import { SceneRenderEvent } from './Scene'; +import { EventDispatcher } from '../events'; +/** + * Lifecycle events for {@link Scene} that are cleared on every reset. + */ +export class LifecycleEvents { + get onBeforeRender() { + return this.beforeRender.subscribable; + } + get onBeginRender() { + return this.beginRender.subscribable; + } + get onFinishRender() { + return this.finishRender.subscribable; + } + get onAfterRender() { + return this.afterRender.subscribable; + } + constructor(scene) { + this.scene = scene; + this.beforeRender = new EventDispatcher(); + this.beginRender = new EventDispatcher(); + this.finishRender = new EventDispatcher(); + this.afterRender = new EventDispatcher(); + this.scene.onRenderLifecycle.subscribe(([event, ctx]) => { + switch (event) { + case SceneRenderEvent.BeforeRender: + return this.beforeRender.dispatch(ctx); + case SceneRenderEvent.BeginRender: + return this.beginRender.dispatch(ctx); + case SceneRenderEvent.FinishRender: + return this.finishRender.dispatch(ctx); + case SceneRenderEvent.AfterRender: + return this.afterRender.dispatch(ctx); + } + }); + this.scene.onReset.subscribe(() => { + this.beforeRender.clear(); + this.beginRender.clear(); + this.finishRender.clear(); + this.afterRender.clear(); + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlmZWN5Y2xlRXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjZW5lcy9MaWZlY3ljbGVFdmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFRLGdCQUFnQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUN4QyxDQUFDO0lBSUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7SUFDdkMsQ0FBQztJQUlELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFJRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztJQUN2QyxDQUFDO0lBSUQsWUFBb0MsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFyQjdCLGlCQUFZLEdBQzdCLElBQUksZUFBZSxFQUE0QixDQUFDO1FBSy9CLGdCQUFXLEdBQzVCLElBQUksZUFBZSxFQUE0QixDQUFDO1FBSy9CLGlCQUFZLEdBQzdCLElBQUksZUFBZSxFQUE0QixDQUFDO1FBSy9CLGdCQUFXLEdBQzVCLElBQUksZUFBZSxFQUE0QixDQUFDO1FBR2hELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUN0RCxRQUFRLEtBQUssRUFBRTtnQkFDYixLQUFLLGdCQUFnQixDQUFDLFlBQVk7b0JBQ2hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLEtBQUssZ0JBQWdCLENBQUMsV0FBVztvQkFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsS0FBSyxnQkFBZ0IsQ0FBQyxZQUFZO29CQUNoQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxLQUFLLGdCQUFnQixDQUFDLFdBQVc7b0JBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Random.d.ts b/node_modules/@motion-canvas/core/lib/scenes/Random.d.ts new file mode 100644 index 0000000..9a3476f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Random.d.ts @@ -0,0 +1,64 @@ +/** + * A random number generator based on + * {@link https://gist.github.com/tommyettinger/46a874533244883189143505d203312c | Mulberry32}. + */ +export declare class Random { + private state; + /** + * Previously generated Gaussian random number. + * + * @remarks + * This is an optimization. + * Since {@link gauss} generates a pair of independent Gaussian random + * numbers, it returns one immediately and stores the other for the next call + * to {@link gauss}. + */ + private nextGauss; + constructor(state: number); + /** + * @internal + */ + static createSeed(): number; + /** + * Get the next random float in the given range. + * + * @param from - The start of the range. + * @param to - The end of the range. + */ + nextFloat(from?: number, to?: number): number; + /** + * Get the next random integer in the given range. + * + * @param from - The start of the range. + * @param to - The end of the range. Exclusive. + */ + nextInt(from?: number, to?: number): number; + /** + * Get a random float from a gaussian distribution. + * @param mean - The mean of the distribution. + * @param stdev - The standard deviation of the distribution. + */ + gauss(mean?: number, stdev?: number): number; + /** + * Get an array filled with random floats in the given range. + * + * @param size - The size of the array. + * @param from - The start of the range. + * @param to - The end of the range. + */ + floatArray(size: number, from?: number, to?: number): number[]; + /** + Get an array filled with random integers in the given range. + * + * @param size - The size of the array. + * @param from - The start of the range. + * @param to - The end of the range. Exclusive. + */ + intArray(size: number, from?: number, to?: number): number[]; + /** + * Create a new independent generator. + */ + spawn(): Random; + private next; +} +//# sourceMappingURL=Random.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Random.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/Random.d.ts.map new file mode 100644 index 0000000..6094433 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Random.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../src/scenes/Random.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,MAAM;IAYE,OAAO,CAAC,KAAK;IAXhC;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS,CAAuB;gBAEb,KAAK,EAAE,MAAM;IAExC;;OAEG;WACW,UAAU;IAIxB;;;;;OAKG;IACI,SAAS,CAAC,IAAI,SAAI,EAAE,EAAE,SAAI;IAIjC;;;;;OAKG;IACI,OAAO,CAAC,IAAI,SAAI,EAAE,EAAE,SAAa;IASxC;;;;OAIG;IACI,KAAK,CAAC,IAAI,SAAI,EAAE,KAAK,SAAI,GAAG,MAAM;IAYzC;;;;;;OAMG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,EAAE,SAAI,GAAG,MAAM,EAAE;IAI3D;;;;;;OAMG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,EAAE,SAAa,GAAG,MAAM,EAAE;IAIlE;;OAEG;IACI,KAAK;IAIZ,OAAO,CAAC,IAAI;CAOb"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Random.js b/node_modules/@motion-canvas/core/lib/scenes/Random.js new file mode 100644 index 0000000..deadffe --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Random.js @@ -0,0 +1,99 @@ +import { map } from '../tweening'; +import { range } from '../utils'; +/** + * A random number generator based on + * {@link https://gist.github.com/tommyettinger/46a874533244883189143505d203312c | Mulberry32}. + */ +export class Random { + constructor(state) { + this.state = state; + /** + * Previously generated Gaussian random number. + * + * @remarks + * This is an optimization. + * Since {@link gauss} generates a pair of independent Gaussian random + * numbers, it returns one immediately and stores the other for the next call + * to {@link gauss}. + */ + this.nextGauss = null; + } + /** + * @internal + */ + static createSeed() { + return Math.floor(Math.random() * 4294967296); + } + /** + * Get the next random float in the given range. + * + * @param from - The start of the range. + * @param to - The end of the range. + */ + nextFloat(from = 0, to = 1) { + return map(from, to, this.next()); + } + /** + * Get the next random integer in the given range. + * + * @param from - The start of the range. + * @param to - The end of the range. Exclusive. + */ + nextInt(from = 0, to = 4294967296) { + let value = Math.floor(map(from, to, this.next())); + if (value === to) { + value = from; + } + return value; + } + /** + * Get a random float from a gaussian distribution. + * @param mean - The mean of the distribution. + * @param stdev - The standard deviation of the distribution. + */ + gauss(mean = 0, stdev = 1) { + let z = this.nextGauss; + this.nextGauss = null; + if (z === null) { + const x2pi = this.next() * 2 * Math.PI; + const g2rad = Math.sqrt(-2 * Math.log(1 - this.next())); + z = Math.cos(x2pi) * g2rad; + this.nextGauss = Math.sin(x2pi) * g2rad; + } + return mean + z * stdev; + } + /** + * Get an array filled with random floats in the given range. + * + * @param size - The size of the array. + * @param from - The start of the range. + * @param to - The end of the range. + */ + floatArray(size, from = 0, to = 1) { + return range(size).map(() => this.nextFloat(from, to)); + } + /** + Get an array filled with random integers in the given range. + * + * @param size - The size of the array. + * @param from - The start of the range. + * @param to - The end of the range. Exclusive. + */ + intArray(size, from = 0, to = 4294967296) { + return range(size).map(() => this.nextInt(from, to)); + } + /** + * Create a new independent generator. + */ + spawn() { + return new Random(this.nextInt()); + } + next() { + this.state |= 0; + this.state = (this.state + 0x6d2b79f5) | 0; + let t = Math.imul(this.state ^ (this.state >>> 15), 1 | this.state); + t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; + return ((t ^ (t >>> 14)) >>> 0) / 4294967296; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjZW5lcy9SYW5kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQU0sT0FBTyxNQUFNO0lBWWpCLFlBQTJCLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBWHhDOzs7Ozs7OztXQVFHO1FBQ0ssY0FBUyxHQUFrQixJQUFJLENBQUM7SUFFRyxDQUFDO0lBRTVDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFVBQVU7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxVQUFVO1FBQ3RDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNkO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUN6QztRQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBQyxJQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLElBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxVQUFVO1FBQ3JELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxJQUFJO1FBQ1YsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUMvQyxDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts b/node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts new file mode 100644 index 0000000..01c6f75 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts @@ -0,0 +1,268 @@ +import type { Logger, PlaybackStatus } from '../app'; +import type { TimeEvents } from './timeEvents'; +import type { Variables } from './Variables'; +import type { SubscribableEvent, SubscribableValueEvent, ValueDispatcher } from '../events'; +import type { Vector2 } from '../types'; +import type { LifecycleEvents } from './LifecycleEvents'; +import type { Random } from './Random'; +import type { SceneMetadata } from './SceneMetadata'; +import type { Slides } from './Slides'; +/** + * The constructor used when creating new scenes. + * + * @remarks + * Each class implementing the {@link Scene} interface should have a matching + * constructor. + * + * @typeParam T - The type of the configuration object. This object will be + * passed to the constructor from + * {@link SceneDescription.config}. + */ +export interface SceneConstructor { + new (description: FullSceneDescription): Scene; +} +/** + * Describes a scene exposed by scene files. + * + * @typeParam T - The type of the configuration object. + */ +export interface SceneDescription { + /** + * The class used to instantiate the scene. + */ + klass: SceneConstructor; + /** + * Configuration object. + */ + config: T; + /** + * The stack trace at the moment of creation. + */ + stack?: string; + meta: SceneMetadata; +} +/** + * Describes a complete scene together with the meta file. + * + * @typeParam T - The type of the configuration object. + */ +export interface FullSceneDescription extends SceneDescription { + name: string; + size: Vector2; + resolutionScale: number; + variables: Variables; + playback: PlaybackStatus; + logger: Logger; + onReplaced: ValueDispatcher>; + timeEventsClass: new (scene: Scene) => TimeEvents; +} +/** + * A part of the {@link SceneDescription} that can be updated during reload. + * + * @typeParam T - The type of the configuration object. + */ +export interface SceneDescriptionReload { + size?: Vector2; + resolutionScale?: number; + config?: T; + stack?: string; +} +export type DescriptionOf = TScene extends Scene ? SceneDescription : never; +/** + * Describes cached information about the timing of a scene. + */ +export interface CachedSceneData { + firstFrame: number; + lastFrame: number; + transitionDuration: number; + duration: number; +} +/** + * Signifies the various stages of a {@link Scene}'s render lifecycle. + */ +export declare enum SceneRenderEvent { + /** + * Occurs before the render starts when the Scene transitions are applied. + */ + BeforeRender = 0, + /** + * Occurs at the beginning of a render when the Scene's + * {@link utils.useContext} handlers are applied. + */ + BeginRender = 1, + /** + * Occurs at the end of a render when the Scene's + * {@link utils.useContextAfter} handlers are applied. + */ + FinishRender = 2, + /** + * Occurs after a render ends. + */ + AfterRender = 3 +} +/** + * The main interface for scenes. + * + * @remarks + * Any class implementing this interface should have a constructor matching + * {@link SceneConstructor}. + * + * @typeParam T - The type of the configuration object. + */ +export interface Scene { + /** + * Name of the scene. + * + * @remarks + * Will be passed as the second argument to the constructor. + */ + readonly name: string; + /** + * Reference to the project. + */ + readonly playback: PlaybackStatus; + readonly timeEvents: TimeEvents; + readonly slides: Slides; + readonly logger: Logger; + readonly variables: Variables; + readonly random: Random; + readonly meta: SceneMetadata; + creationStack?: string; + /** + * The frame at which this scene starts. + */ + get firstFrame(): number; + /** + * The frame at which this scene ends. + */ + get lastFrame(): number; + /** + * Triggered when the cached data changes. + * + * @eventProperty + */ + get onCacheChanged(): SubscribableValueEvent; + /** + * Triggered when the scene is reloaded. + * + * @eventProperty + */ + get onReloaded(): SubscribableEvent; + /** + * Triggered after scene is recalculated. + * + * @eventProperty + */ + get onRecalculated(): SubscribableEvent; + /** + * The {@link scenes.LifecycleEvents} of this scene. + */ + get lifecycleEvents(): LifecycleEvents; + /** + * The {@link scenes.LifecycleEvents} of this scene. + * + * @deprecated Use {@link lifecycleEvents} instead. + */ + get LifecycleEvents(): LifecycleEvents; + /** + * Triggered at various stages of the render lifecycle with an event title and a Context2D. + * + * @eventProperty + */ + get onRenderLifecycle(): SubscribableEvent<[ + SceneRenderEvent, + CanvasRenderingContext2D + ]>; + /** + * Triggered when the scene is reset. + * + * @eventProperty + */ + get onReset(): SubscribableEvent; + /** + * The scene directly before this scene, or null if omitted for performance. + */ + get previous(): Scene | null; + /** + * Render the scene onto a canvas. + * + * @param context - The context to used when rendering. + */ + render(context: CanvasRenderingContext2D): Promise; + /** + * Reload the scene. + * + * @remarks + * This method is called whenever something related to this scene has changed: + * time events, source code, metadata, etc. + * + * Should trigger {@link onReloaded}. + * + * @param description - If present, an updated version of the description. + */ + reload(description?: SceneDescriptionReload): void; + /** + * Recalculate the scene. + * + * @remarks + * The task of this method is to calculate new timings stored in the cache. + * When this method is invoked, `this.project.frame` is set to the frame at + * which this scene should start ({@link firstFrame}). + * + * At the end of execution, this method should set `this.project.frame` to the + * frame at which this scene ends ({@link lastFrame}). + * + * Should trigger {@link onRecalculated}. + */ + recalculate(setFrame: (frame: number) => void): Promise; + /** + * Progress this scene one frame forward. + */ + next(): Promise; + /** + * Reset this scene to its initial state. + * + * @param previous - If present, the previous scene. + */ + reset(previous?: Scene): Promise; + /** + * Get the size of this scene. + * + * Usually return `this.project.getSize()`. + */ + getSize(): Vector2; + /** + * Is this scene in the {@link SceneState.AfterTransitionIn} state? + */ + isAfterTransitionIn(): boolean; + /** + * Is this scene in the {@link SceneState.CanTransitionOut} state? + */ + canTransitionOut(): boolean; + /** + * Is this scene in the {@link SceneState.Finished} state? + */ + isFinished(): boolean; + /** + * Enter the {@link SceneState.Initial} state. + */ + enterInitial(): void; + /** + * Enter the {@link SceneState.AfterTransitionIn} state. + */ + enterAfterTransitionIn(): void; + /** + * Enter the {@link SceneState.CanTransitionOut} state. + */ + enterCanTransitionOut(): void; + /** + * Is this scene cached? + * + * Used only by {@link GeneratorScene}. Seeking through a project that + * contains at least one uncached scene will log a warning to the console. + * + * Should always return `true`. + */ + isCached(): boolean; +} +//# sourceMappingURL=Scene.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts.map new file mode 100644 index 0000000..daf495c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Scene.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/scenes/Scene.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Scene.js b/node_modules/@motion-canvas/core/lib/scenes/Scene.js new file mode 100644 index 0000000..a1852c8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Scene.js @@ -0,0 +1,25 @@ +/** + * Signifies the various stages of a {@link Scene}'s render lifecycle. + */ +export var SceneRenderEvent; +(function (SceneRenderEvent) { + /** + * Occurs before the render starts when the Scene transitions are applied. + */ + SceneRenderEvent[SceneRenderEvent["BeforeRender"] = 0] = "BeforeRender"; + /** + * Occurs at the beginning of a render when the Scene's + * {@link utils.useContext} handlers are applied. + */ + SceneRenderEvent[SceneRenderEvent["BeginRender"] = 1] = "BeginRender"; + /** + * Occurs at the end of a render when the Scene's + * {@link utils.useContextAfter} handlers are applied. + */ + SceneRenderEvent[SceneRenderEvent["FinishRender"] = 2] = "FinishRender"; + /** + * Occurs after a render ends. + */ + SceneRenderEvent[SceneRenderEvent["AfterRender"] = 3] = "AfterRender"; +})(SceneRenderEvent || (SceneRenderEvent = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NlbmVzL1NjZW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRGQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQW1CWDtBQW5CRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVFQUFZLENBQUE7SUFDWjs7O09BR0c7SUFDSCxxRUFBVyxDQUFBO0lBQ1g7OztPQUdHO0lBQ0gsdUVBQVksQ0FBQTtJQUNaOztPQUVHO0lBQ0gscUVBQVcsQ0FBQTtBQUNiLENBQUMsRUFuQlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQW1CM0IifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts b/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts new file mode 100644 index 0000000..80a1b22 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts @@ -0,0 +1,15 @@ +import { MetaField, ObjectMetaField } from '../meta'; +import { SerializedTimeEvent } from './timeEvents'; +/** + * Create a runtime representation of the scene metadata. + */ +export declare function createSceneMetadata(): ObjectMetaField<{ + version: MetaField; + timeEvents: MetaField; + seed: MetaField; +}>; +/** + * A runtime representation of the scene metadata. + */ +export type SceneMetadata = ReturnType; +//# sourceMappingURL=SceneMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts.map new file mode 100644 index 0000000..a94b4c0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SceneMetadata.d.ts","sourceRoot":"","sources":["../../src/scenes/SceneMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AACnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAGjD;;GAEG;AACH,wBAAgB,mBAAmB;;;;GAMlC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.js b/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.js new file mode 100644 index 0000000..89dd5a5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/SceneMetadata.js @@ -0,0 +1,13 @@ +import { MetaField, ObjectMetaField } from '../meta'; +import { Random } from './Random'; +/** + * Create a runtime representation of the scene metadata. + */ +export function createSceneMetadata() { + return new ObjectMetaField('scene', { + version: new MetaField('version', 1), + timeEvents: new MetaField('time events', []), + seed: new MetaField('seed', Random.createSeed()), + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVNZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2VuZXMvU2NlbmVNZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVuRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRTtRQUNsQyxPQUFPLEVBQUUsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwQyxVQUFVLEVBQUUsSUFBSSxTQUFTLENBQXdCLGFBQWEsRUFBRSxFQUFFLENBQUM7UUFDbkUsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDakQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts b/node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts new file mode 100644 index 0000000..889040b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts @@ -0,0 +1,34 @@ +/** + * Describes the state of a scene. + */ +export declare enum SceneState { + /** + * The scene has just been created/reset. + */ + Initial = 0, + /** + * The scene has finished transitioning in. + * + * @remarks + * Informs the Project that the previous scene is no longer necessary and can + * be disposed of. + */ + AfterTransitionIn = 1, + /** + * The scene is ready to transition out. + * + * @remarks + * Informs the project that the next scene can begin. + * The {@link Scene.next} method will still be invoked until the next scene + * enters {@link AfterTransitionIn}. + */ + CanTransitionOut = 2, + /** + * The scene has finished. + * + * @remarks + * Invoking {@link Scene.next} won't have any effect. + */ + Finished = 3 +} +//# sourceMappingURL=SceneState.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts.map new file mode 100644 index 0000000..3e442a2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/SceneState.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SceneState.d.ts","sourceRoot":"","sources":["../../src/scenes/SceneState.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,OAAO,IAAA;IAEP;;;;;;OAMG;IACH,iBAAiB,IAAA;IAEjB;;;;;;;OAOG;IACH,gBAAgB,IAAA;IAEhB;;;;;OAKG;IACH,QAAQ,IAAA;CACT"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/SceneState.js b/node_modules/@motion-canvas/core/lib/scenes/SceneState.js new file mode 100644 index 0000000..7a606e6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/SceneState.js @@ -0,0 +1,35 @@ +/** + * Describes the state of a scene. + */ +export var SceneState; +(function (SceneState) { + /** + * The scene has just been created/reset. + */ + SceneState[SceneState["Initial"] = 0] = "Initial"; + /** + * The scene has finished transitioning in. + * + * @remarks + * Informs the Project that the previous scene is no longer necessary and can + * be disposed of. + */ + SceneState[SceneState["AfterTransitionIn"] = 1] = "AfterTransitionIn"; + /** + * The scene is ready to transition out. + * + * @remarks + * Informs the project that the next scene can begin. + * The {@link Scene.next} method will still be invoked until the next scene + * enters {@link AfterTransitionIn}. + */ + SceneState[SceneState["CanTransitionOut"] = 2] = "CanTransitionOut"; + /** + * The scene has finished. + * + * @remarks + * Invoking {@link Scene.next} won't have any effect. + */ + SceneState[SceneState["Finished"] = 3] = "Finished"; +})(SceneState || (SceneState = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVTdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2VuZXMvU2NlbmVTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFVBZ0NYO0FBaENELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILGlEQUFPLENBQUE7SUFFUDs7Ozs7O09BTUc7SUFDSCxxRUFBaUIsQ0FBQTtJQUVqQjs7Ozs7OztPQU9HO0lBQ0gsbUVBQWdCLENBQUE7SUFFaEI7Ozs7O09BS0c7SUFDSCxtREFBUSxDQUFBO0FBQ1YsQ0FBQyxFQWhDVyxVQUFVLEtBQVYsVUFBVSxRQWdDckIifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts b/node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts new file mode 100644 index 0000000..5e999c2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts @@ -0,0 +1,33 @@ +import type { Scene } from './Scene'; +export interface Slide { + id: string; + name: string; + time: number; + scene: Scene; + stack?: string; +} +export declare class Slides { + private readonly scene; + get onChanged(): import("../events").SubscribableValueEvent; + private readonly slides; + private readonly lookup; + private readonly collisionLookup; + private current; + private canResume; + private waitsForId; + private targetId; + constructor(scene: Scene); + setTarget(target: string | null): void; + resume(): void; + isWaitingFor(slide: string): boolean; + isWaiting(): boolean; + didHappen(slide: string): boolean; + getCurrent(): Slide | null; + register(name: string, initialTime: number): void; + shouldWait(name: string): boolean; + private handleReload; + private handleReset; + private handleRecalculated; + private toId; +} +//# sourceMappingURL=Slides.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts.map new file mode 100644 index 0000000..8399b8f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Slides.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Slides.d.ts","sourceRoot":"","sources":["../../src/scenes/Slides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAInC,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IAaE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAZzC,IAAW,SAAS,wDAEnB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAuB;gBAEH,KAAK,EAAE,KAAK;IAMzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM;IAIN,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,SAAS;IAIT,SAAS,CAAC,KAAK,EAAE,MAAM;IAiBvB,UAAU;IAIV,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAkC1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAuBxC,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,IAAI;CAGb"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Slides.js b/node_modules/@motion-canvas/core/lib/scenes/Slides.js new file mode 100644 index 0000000..0fd664c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Slides.js @@ -0,0 +1,115 @@ +import { PlaybackState } from '../app/PlaybackManager'; +import { ValueDispatcher } from '../events'; +export class Slides { + get onChanged() { + return this.slides.subscribable; + } + constructor(scene) { + this.scene = scene; + this.slides = new ValueDispatcher([]); + this.lookup = new Map(); + this.collisionLookup = new Set(); + this.current = null; + this.canResume = false; + this.waitsForId = null; + this.targetId = null; + this.handleReload = () => { + this.lookup.clear(); + this.collisionLookup.clear(); + this.current = null; + this.waitsForId = null; + this.targetId = null; + }; + this.handleReset = () => { + this.collisionLookup.clear(); + this.current = null; + this.waitsForId = null; + }; + this.handleRecalculated = () => { + this.slides.current = [...this.lookup.values()]; + }; + this.scene.onReloaded.subscribe(this.handleReload); + this.scene.onReset.subscribe(this.handleReset); + this.scene.onRecalculated.subscribe(this.handleRecalculated); + } + setTarget(target) { + this.targetId = target; + } + resume() { + this.canResume = true; + } + isWaitingFor(slide) { + return this.waitsForId === slide; + } + isWaiting() { + return this.waitsForId !== null; + } + didHappen(slide) { + if (this.current === null) { + return false; + } + for (const key of this.lookup.keys()) { + if (key === slide) { + return true; + } + if (key === this.current?.id) { + return false; + } + } + return false; + } + getCurrent() { + return this.current; + } + register(name, initialTime) { + if (this.waitsForId !== null) { + throw new Error(`The animation already waits for a slide: ${this.waitsForId}.`); + } + const id = this.toId(name); + if (this.scene.playback.state !== PlaybackState.Presenting) { + if (!this.lookup.has(id)) { + this.lookup.set(id, { + id, + name, + time: initialTime, + scene: this.scene, + stack: new Error().stack, + }); + } + if (this.collisionLookup.has(name)) { + this.scene.logger.warn({ + message: `A slide named "${name}" already exists.`, + stack: new Error().stack, + }); + } + else { + this.collisionLookup.add(name); + } + } + this.waitsForId = id; + this.current = this.lookup.get(id) ?? null; + this.canResume = false; + } + shouldWait(name) { + const id = this.toId(name); + if (this.waitsForId !== id) { + throw new Error(`The animation waits for a different slide: ${this.waitsForId}.`); + } + const data = this.lookup.get(id); + if (!data) { + throw new Error(`Could not find the "${name}" slide.`); + } + let canResume = this.canResume; + if (this.scene.playback.state !== PlaybackState.Presenting) { + canResume = id !== this.targetId; + } + if (canResume) { + this.waitsForId = null; + } + return !canResume; + } + toId(name) { + return `${this.scene.name}:${name}`; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjZW5lcy9TbGlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFVMUMsTUFBTSxPQUFPLE1BQU07SUFDakIsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDbEMsQ0FBQztJQVVELFlBQW9DLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBVC9CLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztRQUUxQyxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQzdDLFlBQU8sR0FBaUIsSUFBSSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFzRy9CLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUM7UUFFTSxnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUks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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts b/node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts new file mode 100644 index 0000000..52c8bf0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts @@ -0,0 +1,19 @@ +import { SubscribableValueEvent } from '../events'; +import { Thread } from '../threading'; +/** + * Scenes can implement this interface to display their thread hierarchy in the + * UI. + * + * @remarks + * This interface is only useful when a scene uses thread generators to run. + */ +export interface Threadable { + /** + * Triggered when the main thread changes. + * + * @eventProperty + */ + get onThreadChanged(): SubscribableValueEvent; +} +export declare function isThreadable(value: any): value is Threadable; +//# sourceMappingURL=Threadable.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts.map new file mode 100644 index 0000000..bee2c81 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Threadable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Threadable.d.ts","sourceRoot":"","sources":["../../src/scenes/Threadable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,WAAW,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,IAAI,eAAe,IAAI,sBAAsB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,UAAU,CAE5D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Threadable.js b/node_modules/@motion-canvas/core/lib/scenes/Threadable.js new file mode 100644 index 0000000..bfcb8fe --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Threadable.js @@ -0,0 +1,4 @@ +export function isThreadable(value) { + return value && typeof value === 'object' && 'onThreadChanged' in value; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2VuZXMvVGhyZWFkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFVO0lBQ3JDLE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxpQkFBaUIsSUFBSSxLQUFLLENBQUM7QUFDMUUsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts b/node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts new file mode 100644 index 0000000..30e4d29 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts @@ -0,0 +1,24 @@ +import type { Scene } from './Scene'; +export declare class Variables { + private readonly scene; + private signals; + private variables; + constructor(scene: Scene); + /** + * Get variable signal if exists or create signal if not + * + * @param name - The name of the variable. + * @param initial - The initial value of the variable. It will be used if the + * variable was not configured from the outside. + */ + get(name: string, initial: T): () => T; + /** + * Update all signals with new project variable values. + */ + updateSignals(variables: Record): void; + /** + * Reset all stored signals. + */ + handleReset: () => void; +} +//# sourceMappingURL=Variables.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts.map new file mode 100644 index 0000000..1751853 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Variables.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Variables.d.ts","sourceRoot":"","sources":["../../src/scenes/Variables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAGnC,qBAAa,SAAS;IAID,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHzC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,SAAS,CAA+B;gBAEZ,KAAK,EAAE,KAAK;IAIhD;;;;;;OAMG;IACI,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;IAKhD;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASvD;;OAEG;IACI,WAAW,aAEhB;CACH"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/Variables.js b/node_modules/@motion-canvas/core/lib/scenes/Variables.js new file mode 100644 index 0000000..48d77cb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/Variables.js @@ -0,0 +1,39 @@ +import { createSignal } from '../signals'; +export class Variables { + constructor(scene) { + this.scene = scene; + this.signals = {}; + this.variables = {}; + /** + * Reset all stored signals. + */ + this.handleReset = () => { + this.signals = {}; + }; + scene.onReset.subscribe(this.handleReset); + } + /** + * Get variable signal if exists or create signal if not + * + * @param name - The name of the variable. + * @param initial - The initial value of the variable. It will be used if the + * variable was not configured from the outside. + */ + get(name, initial) { + var _a; + (_a = this.signals)[name] ?? (_a[name] = createSignal(this.variables[name] ?? initial)); + return () => this.signals[name](); + } + /** + * Update all signals with new project variable values. + */ + updateSignals(variables) { + this.variables = variables; + Object.keys(variables).map(variableName => { + if (variableName in this.signals) { + this.signals[variableName](variables[variableName]); + } + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjZW5lcy9WYXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBZSxNQUFNLFlBQVksQ0FBQztBQUV0RCxNQUFNLE9BQU8sU0FBUztJQUlwQixZQUFvQyxLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUh4QyxZQUFPLEdBQXVDLEVBQUUsQ0FBQztRQUNqRCxjQUFTLEdBQTRCLEVBQUUsQ0FBQztRQThCaEQ7O1dBRUc7UUFDSSxnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFoQ0EsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUksSUFBWSxFQUFFLE9BQVU7O1FBQ3BDLE1BQUEsSUFBSSxDQUFDLE9BQU8sRUFBQyxJQUFJLFNBQUosSUFBSSxJQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFDO1FBQ3JFLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWEsQ0FBQyxTQUFrQztRQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN4QyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQ3JEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBUUYifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/index.d.ts b/node_modules/@motion-canvas/core/lib/scenes/index.d.ts new file mode 100644 index 0000000..bee788d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/index.d.ts @@ -0,0 +1,16 @@ +/** + * Abstract scene representations and related utilities. + * + * @packageDocumentation + */ +export * from './GeneratorScene'; +export * from './Inspectable'; +export * from './Random'; +export * from './Scene'; +export * from './SceneMetadata'; +export * from './SceneState'; +export * from './Slides'; +export * from './Threadable'; +export * from './Variables'; +export * from './LifecycleEvents'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/index.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/index.d.ts.map new file mode 100644 index 0000000..0dfa289 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scenes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/index.js b/node_modules/@motion-canvas/core/lib/scenes/index.js new file mode 100644 index 0000000..c26e442 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/index.js @@ -0,0 +1,16 @@ +/** + * Abstract scene representations and related utilities. + * + * @packageDocumentation + */ +export * from './GeneratorScene'; +export * from './Inspectable'; +export * from './Random'; +export * from './Scene'; +export * from './SceneMetadata'; +export * from './SceneState'; +export * from './Slides'; +export * from './Threadable'; +export * from './Variables'; +export * from './LifecycleEvents'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NlbmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts new file mode 100644 index 0000000..71fa65c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts @@ -0,0 +1,35 @@ +import type { Scene } from '../Scene'; +import type { TimeEvents } from './TimeEvents'; +import type { TimeEvent } from './TimeEvent'; +/** + * Manages time events during editing. + */ +export declare class EditableTimeEvents implements TimeEvents { + private readonly scene; + get onChanged(): import("../../events").SubscribableValueEvent; + private readonly events; + private registeredEvents; + private lookup; + private collisionLookup; + private previousReference; + private didEventsChange; + private preserveTiming; + constructor(scene: Scene); + set(name: string, offset: number, preserve?: boolean): void; + register(name: string, initialTime: number): number; + /** + * Called when the parent scene gets reloaded. + */ + private handleReload; + /** + * Called when the parent scene gets recalculated. + */ + private handleRecalculated; + private handleReset; + /** + * Called when the meta of the parent scene changes. + */ + private handleMetaChanged; + private load; +} +//# sourceMappingURL=EditableTimeEvents.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts.map new file mode 100644 index 0000000..7a75556 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EditableTimeEvents.d.ts","sourceRoot":"","sources":["../../../src/scenes/timeEvents/EditableTimeEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAI3C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IAahC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAZzC,IAAW,SAAS,+DAEnB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAAQ;gBAEM,KAAK,EAAE,KAAK;IAUzC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,UAAO;IAkBjD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IA4D1D;;OAEG;IACH,OAAO,CAAC,YAAY,CAGlB;IAEF;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAiBxB;IAEF,OAAO,CAAC,WAAW,CAEjB;IAEF;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAQvB;IAEF,OAAO,CAAC,IAAI;CAcb"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.js b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.js new file mode 100644 index 0000000..d646f69 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/EditableTimeEvents.js @@ -0,0 +1,147 @@ +import { ValueDispatcher } from '../../events'; +/** + * Manages time events during editing. + */ +export class EditableTimeEvents { + get onChanged() { + return this.events.subscribable; + } + constructor(scene) { + this.scene = scene; + this.events = new ValueDispatcher([]); + this.registeredEvents = new Map(); + this.lookup = new Map(); + this.collisionLookup = new Set(); + this.previousReference = []; + this.didEventsChange = false; + this.preserveTiming = true; + /** + * Called when the parent scene gets reloaded. + */ + this.handleReload = () => { + this.registeredEvents.clear(); + this.collisionLookup.clear(); + }; + /** + * Called when the parent scene gets recalculated. + */ + this.handleRecalculated = () => { + this.preserveTiming = true; + this.events.current = [...this.registeredEvents.values()]; + if (this.didEventsChange || + (this.previousReference?.length ?? 0) !== this.events.current.length) { + this.didEventsChange = false; + this.previousReference = [...this.registeredEvents.values()].map(event => ({ + name: event.name, + targetTime: event.targetTime, + })); + this.scene.meta.timeEvents.set(this.previousReference); + } + }; + this.handleReset = () => { + this.collisionLookup.clear(); + }; + /** + * Called when the meta of the parent scene changes. + */ + this.handleMetaChanged = (data) => { + // Ignore the event if `timeEvents` hasn't changed. + // This may happen when another part of metadata has changed triggering + // this event. + if (data === this.previousReference) + return; + this.previousReference = data; + this.load(data); + this.scene.reload(); + }; + this.previousReference = scene.meta.timeEvents.get(); + this.load(this.previousReference); + scene.onReloaded.subscribe(this.handleReload); + scene.onRecalculated.subscribe(this.handleRecalculated); + scene.onReset.subscribe(this.handleReset); + scene.meta.timeEvents.onChanged.subscribe(this.handleMetaChanged, false); + } + set(name, offset, preserve = true) { + let event = this.lookup.get(name); + if (!event || event.offset === offset) { + return; + } + this.preserveTiming = preserve; + event = { + ...event, + targetTime: event.initialTime + offset, + offset, + }; + this.lookup.set(name, event); + this.registeredEvents.set(name, event); + this.events.current = [...this.registeredEvents.values()]; + this.didEventsChange = true; + this.scene.reload(); + } + register(name, initialTime) { + if (this.collisionLookup.has(name)) { + this.scene.logger.error({ + message: `name "${name}" has already been used for another event name.`, + stack: new Error().stack, + }); + return 0; + } + this.collisionLookup.add(name); + let event = this.lookup.get(name); + if (!event) { + this.didEventsChange = true; + event = { + name, + initialTime, + targetTime: initialTime, + offset: 0, + stack: new Error().stack, + }; + this.lookup.set(name, event); + } + else { + let changed = false; + const newEvent = { ...event }; + const stack = new Error().stack; + if (newEvent.stack !== stack) { + newEvent.stack = stack; + changed = true; + } + if (newEvent.initialTime !== initialTime) { + newEvent.initialTime = initialTime; + changed = true; + } + const offset = Math.max(0, newEvent.targetTime - newEvent.initialTime); + if (this.preserveTiming && newEvent.offset !== offset) { + newEvent.offset = offset; + changed = true; + } + const target = newEvent.initialTime + newEvent.offset; + if (!this.preserveTiming && newEvent.targetTime !== target) { + this.didEventsChange = true; + newEvent.targetTime = target; + changed = true; + } + if (changed) { + event = newEvent; + this.lookup.set(name, event); + } + } + this.registeredEvents.set(name, event); + return event.offset; + } + load(events) { + for (const event of events) { + const previous = this.lookup.get(event.name) ?? { + name: event.name, + initialTime: 0, + offset: 0, + }; + this.lookup.set(event.name, { + ...previous, + targetTime: event.targetTime, + }); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdGFibGVUaW1lRXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjZW5lcy90aW1lRXZlbnRzL0VkaXRhYmxlVGltZUV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBVUQsWUFBb0MsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFUL0IsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXZELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO1FBQ2hELFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUN0QyxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDcEMsc0JBQWlCLEdBQTBCLEVBQUUsQ0FBQztRQUM5QyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQTBGOUI7O1dBRUc7UUFDSyxpQkFBWSxHQUFHLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUM7UUFFRjs7V0FFRztRQUNLLHVCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFMUQsSUFDRSxJQUFJLENBQUMsZUFB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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts new file mode 100644 index 0000000..5b7fa0e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts @@ -0,0 +1,20 @@ +import type { Scene } from '../Scene'; +import type { TimeEvent } from './TimeEvent'; +import type { TimeEvents } from './TimeEvents'; +/** + * Manages time events during rendering and presentation. + */ +export declare class ReadOnlyTimeEvents implements TimeEvents { + private readonly scene; + get onChanged(): import("../../events").SubscribableValueEvent; + private readonly events; + private lookup; + constructor(scene: Scene); + set(): void; + register(name: string, initialTime: number): number; + /** + * Called when the parent scene gets reloaded. + */ + private handleReload; +} +//# sourceMappingURL=ReadOnlyTimeEvents.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts.map new file mode 100644 index 0000000..a6af6f4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ReadOnlyTimeEvents.d.ts","sourceRoot":"","sources":["../../../src/scenes/timeEvents/ReadOnlyTimeEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IAOhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IANzC,IAAW,SAAS,+DAEnB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,MAAM,CAA6B;gBAEP,KAAK,EAAE,KAAK;IAIzC,GAAG;IAIH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAa1D;;OAEG;IACH,OAAO,CAAC,YAAY,CAElB;CACH"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.js b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.js new file mode 100644 index 0000000..c5f324b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/ReadOnlyTimeEvents.js @@ -0,0 +1,36 @@ +import { ValueDispatcher } from '../../events'; +/** + * Manages time events during rendering and presentation. + */ +export class ReadOnlyTimeEvents { + get onChanged() { + return this.events.subscribable; + } + constructor(scene) { + this.scene = scene; + this.events = new ValueDispatcher([]); + this.lookup = new Map(); + /** + * Called when the parent scene gets reloaded. + */ + this.handleReload = () => { + this.lookup.clear(); + }; + scene.onReloaded.subscribe(this.handleReload); + } + set() { + // do nothing + } + register(name, initialTime) { + let duration = this.lookup.get(name); + if (duration === undefined) { + const event = this.scene.meta.timeEvents + .get() + .find(event => event.name === name); + duration = event ? event.targetTime - initialTime : 0; + this.lookup.set(name, duration); + } + return duration; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVhZE9ubHlUaW1lRXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjZW5lcy90aW1lRXZlbnRzL1JlYWRPbmx5VGltZUV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBSUQsWUFBb0MsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFIL0IsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQXVCM0M7O1dBRUc7UUFDSyxpQkFBWSxHQUFHLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztRQXpCQSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEdBQUc7UUFDUixhQUFhO0lBQ2YsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFZLEVBQUUsV0FBbUI7UUFDL0MsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVU7aUJBQ3JDLEdBQUcsRUFBRTtpQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3RDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQVFGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts new file mode 100644 index 0000000..0231231 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts @@ -0,0 +1,14 @@ +/** + * Represents a time event stored in a meta file. + */ +export interface SerializedTimeEvent { + /** + * {@inheritDoc TimeEvent.name} + */ + name: string; + /** + * {@inheritDoc TimeEvent.targetTime} + */ + targetTime: number; +} +//# sourceMappingURL=SerializedTimeEvent.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts.map new file mode 100644 index 0000000..e910862 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SerializedTimeEvent.d.ts","sourceRoot":"","sources":["../../../src/scenes/timeEvents/SerializedTimeEvent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.js b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.js new file mode 100644 index 0000000..906af8b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/SerializedTimeEvent.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VyaWFsaXplZFRpbWVFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zY2VuZXMvdGltZUV2ZW50cy9TZXJpYWxpemVkVGltZUV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts new file mode 100644 index 0000000..870b537 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts @@ -0,0 +1,32 @@ +/** + * Represents a time event at runtime. + */ +export interface TimeEvent { + /** + * Name of the event. + */ + name: string; + /** + * Time in seconds, relative to the beginning of the scene, at which the event + * was registered. + * + * @remarks + * In other words, the moment at which {@link flow.waitUntil} for this event + * was invoked. + */ + initialTime: number; + /** + * Time in seconds, relative to the beginning of the scene, at which the event + * should end. + */ + targetTime: number; + /** + * Duration of the event in seconds. + */ + offset: number; + /** + * Stack trace at the moment of registration. + */ + stack?: string; +} +//# sourceMappingURL=TimeEvent.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts.map new file mode 100644 index 0000000..3e04190 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TimeEvent.d.ts","sourceRoot":"","sources":["../../../src/scenes/timeEvents/TimeEvent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.js b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.js new file mode 100644 index 0000000..d65d678 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvent.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjZW5lcy90aW1lRXZlbnRzL1RpbWVFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts new file mode 100644 index 0000000..ec72652 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts @@ -0,0 +1,36 @@ +import type { SubscribableValueEvent } from '../../events'; +import type { TimeEvent } from './TimeEvent'; +/** + * An interface for classes managing the time events. + */ +export interface TimeEvents { + /** + * Triggered when time events change. + * + * @eventProperty + */ + get onChanged(): SubscribableValueEvent; + /** + * Change the time offset of the given event. + * + * @param name - The name of the event. + * @param offset - The time offset in seconds. + * @param preserve - Whether the timing of the consecutive events should be + * preserved. When set to `true` their offsets will be + * adjusted to keep them in place. + */ + set(name: string, offset: number, preserve?: boolean): void; + /** + * Register a time event. + * + * @param name - The name of the event. + * @param initialTime - Time in seconds, relative to the beginning of the + * scene, at which the event was registered. + * + * @returns The duration of the event in seconds. + * + * @internal + */ + register(name: string, initialTime: number): number; +} +//# sourceMappingURL=TimeEvents.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts.map new file mode 100644 index 0000000..3bd4298 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TimeEvents.d.ts","sourceRoot":"","sources":["../../../src/scenes/timeEvents/TimeEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,IAAI,SAAS,IAAI,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC;IACrD;;;;;;;;OAQG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5D;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CACrD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.js b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.js new file mode 100644 index 0000000..243ed76 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/TimeEvents.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zY2VuZXMvdGltZUV2ZW50cy9UaW1lRXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts new file mode 100644 index 0000000..6581d80 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts @@ -0,0 +1,6 @@ +export * from './EditableTimeEvents'; +export * from './ReadOnlyTimeEvents'; +export * from './SerializedTimeEvent'; +export * from './TimeEvent'; +export * from './TimeEvents'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts.map b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts.map new file mode 100644 index 0000000..8eb135a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scenes/timeEvents/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.js b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.js new file mode 100644 index 0000000..8ebc85b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/scenes/timeEvents/index.js @@ -0,0 +1,6 @@ +export * from './EditableTimeEvents'; +export * from './ReadOnlyTimeEvents'; +export * from './SerializedTimeEvent'; +export * from './TimeEvent'; +export * from './TimeEvents'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2NlbmVzL3RpbWVFdmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts b/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts new file mode 100644 index 0000000..9f81e1a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts @@ -0,0 +1,18 @@ +import { InterpolationFunction } from '../tweening'; +import { Signal, SignalContext } from './SignalContext'; +import { SignalExtensions, SignalValue } from './types'; +export type CompoundSignal> = Signal & { + [K in TKeys]: Signal : TOwner>; +}; +export declare class CompoundSignalContext extends SignalContext { + private readonly entries; + readonly signals: [keyof TValue, Signal][]; + constructor(entries: (TKeys | [keyof TValue, Signal])[], parser: (value: TSetterValue) => TValue, initial: SignalValue, interpolation: InterpolationFunction, owner?: TOwner, extensions?: Partial>); + toSignal(): CompoundSignal; + parse(value: TSetterValue): TValue; + getter(): TValue; + setter(value: SignalValue): TOwner; + reset(): TOwner; + save(): TOwner; +} +//# sourceMappingURL=CompoundSignalContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts.map new file mode 100644 index 0000000..059460d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CompoundSignalContext.d.ts","sourceRoot":"","sources":["../../src/signals/CompoundSignalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAM,MAAM,aAAa,CAAC;AACvD,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAGtD,MAAM,MAAM,cAAc,CACxB,YAAY,EACZ,MAAM,SAAS,YAAY,EAC3B,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,MAAM,EACzC,MAAM,GAAG,IAAI,EACb,QAAQ,GAAG,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IACnE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG;KAClD,CAAC,IAAI,KAAK,GAAG,MAAM,CAClB,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,SAAS,IAAI,GACf,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GAC7D,MAAM,CACX;CACF,CAAC;AAEF,qBAAa,qBAAqB,CAChC,YAAY,EACZ,MAAM,SAAS,YAAY,EAC3B,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,MAAM,EACzC,MAAM,GAAG,IAAI,CACb,SAAQ,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,SAAgB,OAAO,EAAE,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAM;gBAGtD,OAAO,EAAE,CACtB,KAAK,GACL,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAC3C,EAAE,EACH,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,EACvC,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,EAClC,aAAa,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAC5C,KAAK,GAAE,MAAqC,EAC5C,UAAU,GAAE,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAM;IAwBlD,QAAQ,IAAI,cAAc,CACxC,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,CACP;IAIe,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAIlC,MAAM,IAAI,MAAM;IAUhB,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM;IAe1C,KAAK,IAAI,MAAM;IAOf,IAAI,IAAI,MAAM;CAM/B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.js b/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.js new file mode 100644 index 0000000..b4f5592 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/CompoundSignalContext.js @@ -0,0 +1,62 @@ +import { map } from '../tweening'; +import { SignalContext } from './SignalContext'; +import { isReactive, modify } from './utils'; +export class CompoundSignalContext extends SignalContext { + constructor(entries, parser, initial, interpolation, owner = undefined, extensions = {}) { + var _a; + super(undefined, interpolation, owner, parser, extensions); + this.entries = entries; + this.signals = []; + this.parser = parser; + for (const entry of entries) { + let key; + let signal; + if (Array.isArray(entry)) { + [key, signal] = entry; + (_a = signal.context).owner ?? (_a.owner = this); + } + else { + key = entry; + signal = new SignalContext(modify(initial, value => parser(value)[entry]), map, owner ?? this.invokable).toSignal(); + } + this.signals.push([key, signal]); + Object.defineProperty(this.invokable, key, { value: signal }); + } + } + toSignal() { + return this.invokable; + } + parse(value) { + return this.parser(value); + } + getter() { + return this.parse((Object.fromEntries(this.signals.map(([key, property]) => [key, property()])))); + } + setter(value) { + if (isReactive(value)) { + for (const [key, property] of this.signals) { + property(() => this.parser(value())[key]); + } + } + else { + const parsed = this.parse(value); + for (const [key, property] of this.signals) { + property(parsed[key]); + } + } + return this.owner; + } + reset() { + for (const [, signal] of this.signals) { + signal.reset(); + } + return this.owner; + } + save() { + for (const [, signal] of this.signals) { + signal.save(); + } + return this.owner; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG91bmRTaWduYWxDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpZ25hbHMvQ29tcG91bmRTaWduYWxDb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsR0FBRyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBUyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLFNBQVMsQ0FBQztBQWtCM0MsTUFBTSxPQUFPLHFCQUtYLFNBQVEsYUFBMkM7SUFHbkQsWUFDbUIsT0FHZCxFQUNILE1BQXVDLEVBQ3ZDLE9BQWtDLEVBQ2xDLGFBQTRDLEVBQzVDLFFBQWtDLFNBQVUsRUFDNUMsYUFBOEQsRUFBRTs7UUFFaEUsS0FBSyxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQVYxQyxZQUFPLEdBQVAsT0FBTyxDQUdyQjtRQU5XLFlBQU8sR0FBK0MsRUFBRSxDQUFDO1FBY3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFO1lBQzNCLElBQUksR0FBaUIsQ0FBQztZQUN0QixJQUFJLE1BQWdDLENBQUM7WUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLE1BQUMsTUFBTSxDQUFDLE9BQWUsRUFBQyxLQUFLLFFBQUwsS0FBSyxHQUFLLElBQUksRUFBQzthQUN4QztpQkFBTTtnQkFDTCxHQUFHLEdBQUcsS0FBSyxDQUFDO2dCQUNaLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FDeEIsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN6QyxHQUFHLEVBQ1IsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQ3hCLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDZDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVlLFFBQVE7UUFNdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFZSxLQUFLLENBQUMsS0FBbUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFZSxNQUFNO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDRCxDQUNaLE1BQU0sQ0FBQyxXQUFXLENBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRWUsTUFBTSxDQUFDLEtBQTBCO1FBQy9DLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUMxQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDM0M7U0FDRjthQUFNO1lBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVlLEtBQUs7UUFDbkIsS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRWUsSUFBSTtRQUNsQixLQUFLLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts b/node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts new file mode 100644 index 0000000..b6d6fb0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts @@ -0,0 +1,14 @@ +import { DependencyContext } from './DependencyContext'; +export interface Computed { + (...args: any[]): TValue; + context: ComputedContext; +} +export declare class ComputedContext extends DependencyContext { + private readonly factory; + private last; + constructor(factory: (...args: any[]) => TValue, owner?: any); + toSignal(): Computed; + dispose(): void; + protected invoke(...args: any[]): TValue; +} +//# sourceMappingURL=ComputedContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts.map new file mode 100644 index 0000000..6877355 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/ComputedContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ComputedContext.d.ts","sourceRoot":"","sources":["../../src/signals/ComputedContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,QAAQ,CAAC,MAAM;IAC9B,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,eAAe,CAAC,MAAM,CAAE,SAAQ,iBAAiB,CAAC,GAAG,CAAC;IAI/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,IAAI,CAAqB;gBAGd,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,EACpD,KAAK,CAAC,EAAE,GAAG;IAMN,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC;IAInB,OAAO;cAKJ,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM;CAmBlD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/ComputedContext.js b/node_modules/@motion-canvas/core/lib/signals/ComputedContext.js new file mode 100644 index 0000000..803439c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/ComputedContext.js @@ -0,0 +1,36 @@ +import { errorToLog, useLogger } from '../utils'; +import { DependencyContext } from './DependencyContext'; +export class ComputedContext extends DependencyContext { + constructor(factory, owner) { + super(owner); + this.factory = factory; + this.markDirty(); + } + toSignal() { + return this.invokable; + } + dispose() { + super.dispose(); + this.last = undefined; + } + invoke(...args) { + if (this.event.isRaised()) { + this.clearDependencies(); + this.startCollecting(); + try { + this.last = this.factory(...args); + } + catch (e) { + useLogger().error({ + ...errorToLog(e), + inspect: this.owner?.key, + }); + } + this.finishCollecting(); + } + this.event.reset(); + this.collect(); + return this.last; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcHV0ZWRDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpZ25hbHMvQ29tcHV0ZWRDb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBT3RELE1BQU0sT0FBTyxlQUF3QixTQUFRLGlCQUFzQjtJQUdqRSxZQUNtQixPQUFtQyxFQUNwRCxLQUFXO1FBRVgsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSEksWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFJcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFZSxPQUFPO1FBQ3JCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRWtCLE1BQU0sQ0FBQyxHQUFHLElBQVc7UUFDdEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJO2dCQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBQUMsT0FBTyxDQUFNLEVBQUU7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDO29CQUNoQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUc7aUJBQ3pCLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLE9BQU8sSUFBSSxDQUFDLElBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0YifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts b/node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts new file mode 100644 index 0000000..4b4ed7d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts @@ -0,0 +1,31 @@ +import { FlagDispatcher, Subscribable } from '../events'; +import { Promisable } from '../threading'; +export interface PromiseHandle { + promise: Promise; + value: T; + stack?: string; + owner?: any; +} +export declare class DependencyContext implements Promisable> { + protected owner: TOwner; + protected static collectionSet: Set>; + protected static collectionStack: DependencyContext[]; + protected static promises: PromiseHandle[]; + static collectPromise(promise: Promise): PromiseHandle; + static collectPromise(promise: Promise, initialValue: T): PromiseHandle; + static hasPromises(): boolean; + static consumePromises(): Promise[]>; + protected readonly invokable: any; + protected dependencies: Set>>; + protected event: FlagDispatcher; + protected markDirty: () => void; + constructor(owner: TOwner); + protected invoke(): void; + protected startCollecting(): void; + protected finishCollecting(): void; + protected clearDependencies(): void; + protected collect(): void; + dispose(): void; + toPromise(): Promise; +} +//# sourceMappingURL=DependencyContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts.map new file mode 100644 index 0000000..39905fc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/DependencyContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DependencyContext.d.ts","sourceRoot":"","sources":["../../src/signals/DependencyContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,qBAAa,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAC1C,YAAW,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAmD7B,SAAS,CAAC,KAAK,EAAE,MAAM;IAjD1C,SAAS,CAAC,MAAM,CAAC,aAAa,8BAAqC;IACnE,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAM;IAChE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAM;WAEvC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC;WAC/D,cAAc,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,YAAY,EAAE,CAAC,GACd,aAAa,CAAC,CAAC,CAAC;WAwBL,WAAW;WAIL,eAAe;IAOnC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;IAElC,SAAS,CAAC,YAAY,kEAAiC;IACvD,SAAS,CAAC,KAAK,iBAAwB;IACvC,SAAS,CAAC,SAAS,aAA4B;gBAElB,KAAK,EAAE,MAAM;IAY1C,SAAS,CAAC,MAAM;IAIhB,SAAS,CAAC,eAAe;IAazB,SAAS,CAAC,gBAAgB;IAO1B,SAAS,CAAC,iBAAiB;IAK3B,SAAS,CAAC,OAAO;IAQV,OAAO;IAMD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAOxC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/DependencyContext.js b/node_modules/@motion-canvas/core/lib/signals/DependencyContext.js new file mode 100644 index 0000000..58c0de2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/DependencyContext.js @@ -0,0 +1,87 @@ +import { FlagDispatcher } from '../events'; +import { DetailedError } from '../utils'; +export class DependencyContext { + static collectPromise(promise, initialValue = null) { + const handle = { + promise, + value: initialValue, + stack: new Error().stack, + }; + const context = this.collectionStack.at(-1); + if (context) { + handle.owner = context.owner; + } + promise.then(value => { + handle.value = value; + context?.markDirty(); + }); + this.promises.push(handle); + return handle; + } + static hasPromises() { + return this.promises.length > 0; + } + static async consumePromises() { + const promises = [...this.promises]; + await Promise.all(promises.map(handle => handle.promise)); + this.promises = this.promises.filter(v => !promises.includes(v)); + return promises; + } + constructor(owner) { + this.owner = owner; + this.dependencies = new Set(); + this.event = new FlagDispatcher(); + this.markDirty = () => this.event.raise(); + this.invokable = this.invoke.bind(this); + Object.defineProperty(this.invokable, 'context', { + value: this, + }); + Object.defineProperty(this.invokable, 'toPromise', { + value: this.toPromise.bind(this), + }); + } + invoke() { + // do nothing + } + startCollecting() { + if (DependencyContext.collectionSet.has(this)) { + throw new DetailedError('A circular dependency occurred between signals.', `This can happen when signals reference each other in a loop. + Try using the attached stack trace to locate said loop.`); + } + DependencyContext.collectionSet.add(this); + DependencyContext.collectionStack.push(this); + } + finishCollecting() { + DependencyContext.collectionSet.delete(this); + if (DependencyContext.collectionStack.pop() !== this) { + throw new Error('collectStart/collectEnd was called out of order.'); + } + } + clearDependencies() { + this.dependencies.forEach(dep => dep.unsubscribe(this.markDirty)); + this.dependencies.clear(); + } + collect() { + const signal = DependencyContext.collectionStack.at(-1); + if (signal) { + signal.dependencies.add(this.event.subscribable); + this.event.subscribe(signal.markDirty); + } + } + dispose() { + this.clearDependencies(); + this.event.clear(); + this.owner = null; + } + async toPromise() { + do { + await DependencyContext.consumePromises(); + this.invokable(); + } while (DependencyContext.hasPromises()); + return this.invokable; + } +} +DependencyContext.collectionSet = new Set(); +DependencyContext.collectionStack = []; +DependencyContext.promises = []; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeUNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lnbmFscy9EZXBlbmRlbmN5Q29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFlLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFVdkMsTUFBTSxPQUFPLGlCQUFpQjtJQVlyQixNQUFNLENBQUMsY0FBYyxDQUMxQixPQUFtQixFQUNuQixlQUF5QixJQUFJO1FBRTdCLE1BQU0sTUFBTSxHQUE0QjtZQUN0QyxPQUFPO1lBQ1AsS0FBSyxFQUFFLFlBQVk7WUFDbkIsS0FBSyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUMsS0FBSztTQUN6QixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUM5QjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWU7UUFDakMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxR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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts b/node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts new file mode 100644 index 0000000..dce674a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts @@ -0,0 +1,111 @@ +import { InterpolationFunction, TimingFunction } from '../tweening'; +import { ThreadGenerator } from '../threading'; +import { DependencyContext } from './DependencyContext'; +import { SignalExtensions, SignalGenerator, SignalGetter, SignalSetter, SignalTween, SignalValue } from './types'; +import { DEFAULT } from './symbols'; +export type SimpleSignal = Signal; +export interface Signal> extends SignalSetter, SignalGetter, SignalTween { + /** + * {@inheritDoc SignalContext.reset} + */ + reset(): TOwner; + /** + * {@inheritDoc SignalContext.save} + */ + save(): TOwner; + /** + * {@inheritDoc SignalContext.isInitial} + */ + isInitial(): boolean; + context: TContext; +} +export declare class SignalContext extends DependencyContext { + private initial; + private readonly interpolation; + protected parser: (value: TSetterValue) => TValue; + protected extensions: SignalExtensions; + protected current: SignalValue | undefined; + protected last: TValue | undefined; + constructor(initial: SignalValue | undefined, interpolation: InterpolationFunction, owner?: TOwner, parser?: (value: TSetterValue) => TValue, extensions?: Partial>); + toSignal(): Signal; + parse(value: TSetterValue): TValue; + set(value: SignalValue | typeof DEFAULT): TOwner; + setter(value: SignalValue | typeof DEFAULT): TOwner; + get(): TValue; + getter(): TValue; + protected invoke(value?: SignalValue | typeof DEFAULT, duration?: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction): TValue | TOwner | SignalGenerator; + protected createQueue(defaultTimingFunction: TimingFunction, defaultInterpolationFunction: InterpolationFunction): SignalGenerator; + protected tween(value: SignalValue | typeof DEFAULT, duration: number, timingFunction: TimingFunction, interpolationFunction: InterpolationFunction): ThreadGenerator; + tweener(value: SignalValue, duration: number, timingFunction: TimingFunction, interpolationFunction: InterpolationFunction): ThreadGenerator; + dispose(): void; + /** + * Reset the signal to its initial value (if one has been set). + * + * @example + * ```ts + * const signal = createSignal(7); + * + * signal.reset(); + * // same as: + * signal(7); + * ``` + */ + reset(): TOwner; + /** + * Compute the current value of the signal and immediately set it. + * + * @remarks + * This method can be used to stop the signal from updating while keeping its + * current value. + * + * @example + * ```ts + * signal.save(); + * // same as: + * signal(signal()); + * ``` + */ + save(): TOwner; + /** + * Check if the signal is currently using its initial value. + * + * @example + * ```ts + * + * const signal = createSignal(0); + * signal.isInitial(); // true + * + * signal(5); + * signal.isInitial(); // false + * + * signal(DEFAULT); + * signal.isInitial(); // true + * ``` + */ + isInitial(): boolean; + /** + * Get the raw value of this signal. + * + * @remarks + * If the signal was provided with a factory function, the function itself + * will be returned, without invoking it. + * + * This method can be used to create copies of signals. + * + * @example + * ```ts + * const a = createSignal(2); + * const b = createSignal(() => a); + * // b() == 2 + * + * const bClone = createSignal(b.raw()); + * // bClone() == 2 + * + * a(4); + * // b() == 4 + * // bClone() == 4 + * ``` + */ + raw(): SignalValue | undefined; +} +//# sourceMappingURL=SignalContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts.map new file mode 100644 index 0000000..329f7f3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/SignalContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SignalContext.d.ts","sourceRoot":"","sources":["../../src/signals/SignalContext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/SignalContext.js b/node_modules/@motion-canvas/core/lib/signals/SignalContext.js new file mode 100644 index 0000000..894ec11 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/SignalContext.js @@ -0,0 +1,230 @@ +import { easeInOutCubic, tween, } from '../tweening'; +import { errorToLog, useLogger } from '../utils'; +import { run, waitFor } from '../flow'; +import { DependencyContext } from './DependencyContext'; +import { isReactive, unwrap } from './utils'; +import { DEFAULT } from './symbols'; +export class SignalContext extends DependencyContext { + constructor(initial, interpolation, owner = undefined, parser = value => value, extensions = {}) { + super(owner); + this.initial = initial; + this.interpolation = interpolation; + this.parser = parser; + Object.defineProperty(this.invokable, 'reset', { + value: this.reset.bind(this), + }); + Object.defineProperty(this.invokable, 'save', { + value: this.save.bind(this), + }); + Object.defineProperty(this.invokable, 'isInitial', { + value: this.isInitial.bind(this), + }); + if (this.initial !== undefined) { + this.current = this.initial; + this.markDirty(); + if (!isReactive(this.initial)) { + this.last = this.parse(this.initial); + } + } + this.extensions = { + getter: this.getter.bind(this), + setter: this.setter.bind(this), + tweener: this.tweener.bind(this), + ...extensions, + }; + } + toSignal() { + return this.invokable; + } + parse(value) { + return this.parser(value); + } + set(value) { + this.extensions.setter(value); + return this.owner; + } + setter(value) { + if (value === DEFAULT) { + value = this.initial; + } + if (this.current === value) { + return this.owner; + } + this.current = value; + this.markDirty(); + this.clearDependencies(); + if (!isReactive(value)) { + this.last = this.parse(value); + } + return this.owner; + } + get() { + return this.extensions.getter(); + } + getter() { + if (this.event.isRaised() && isReactive(this.current)) { + this.clearDependencies(); + this.startCollecting(); + try { + this.last = this.parse(this.current()); + } + catch (e) { + useLogger().error({ + ...errorToLog(e), + inspect: this.owner?.key, + }); + } + this.finishCollecting(); + } + this.event.reset(); + this.collect(); + return this.last; + } + invoke(value, duration, timingFunction = easeInOutCubic, interpolationFunction = this.interpolation) { + if (value === undefined) { + return this.get(); + } + if (duration === undefined) { + return this.set(value); + } + const queue = this.createQueue(timingFunction, interpolationFunction); + return queue.to(value, duration); + } + createQueue(defaultTimingFunction, defaultInterpolationFunction) { + const initial = this.get(); + const queue = []; + const task = run('animation chain', function* animate() { + while (queue.length > 0) { + yield* queue.shift(); + } + }); + task.to = (value, duration, timingFunction = defaultTimingFunction, interpolationFunction = defaultInterpolationFunction) => { + defaultTimingFunction = timingFunction; + defaultInterpolationFunction = interpolationFunction; + queue.push(this.tween(value, duration, timingFunction, interpolationFunction)); + return task; + }; + task.back = (time, timingFunction = defaultTimingFunction, interpolationFunction = defaultInterpolationFunction) => { + defaultTimingFunction = timingFunction; + defaultInterpolationFunction = interpolationFunction; + queue.push(this.tween(initial, time, defaultTimingFunction, defaultInterpolationFunction)); + return task; + }; + task.wait = (duration) => { + queue.push(waitFor(duration)); + return task; + }; + task.run = (generator) => { + queue.push(generator); + return task; + }; + task.do = (callback) => { + queue.push(run(function* () { + callback(); + })); + return task; + }; + return task; + } + *tween(value, duration, timingFunction, interpolationFunction) { + if (value === DEFAULT) { + value = this.initial; + } + yield* this.extensions.tweener(value, duration, timingFunction, interpolationFunction); + this.set(value); + } + *tweener(value, duration, timingFunction, interpolationFunction) { + const from = this.get(); + yield* tween(duration, v => { + this.set(interpolationFunction(from, this.parse(unwrap(value)), timingFunction(v))); + }); + } + dispose() { + super.dispose(); + this.initial = undefined; + this.current = undefined; + this.last = undefined; + } + /** + * Reset the signal to its initial value (if one has been set). + * + * @example + * ```ts + * const signal = createSignal(7); + * + * signal.reset(); + * // same as: + * signal(7); + * ``` + */ + reset() { + if (this.initial !== undefined) { + this.set(this.initial); + } + return this.owner; + } + /** + * Compute the current value of the signal and immediately set it. + * + * @remarks + * This method can be used to stop the signal from updating while keeping its + * current value. + * + * @example + * ```ts + * signal.save(); + * // same as: + * signal(signal()); + * ``` + */ + save() { + return this.set(this.get()); + } + /** + * Check if the signal is currently using its initial value. + * + * @example + * ```ts + * + * const signal = createSignal(0); + * signal.isInitial(); // true + * + * signal(5); + * signal.isInitial(); // false + * + * signal(DEFAULT); + * signal.isInitial(); // true + * ``` + */ + isInitial() { + this.collect(); + return this.current === this.initial; + } + /** + * Get the raw value of this signal. + * + * @remarks + * If the signal was provided with a factory function, the function itself + * will be returned, without invoking it. + * + * This method can be used to create copies of signals. + * + * @example + * ```ts + * const a = createSignal(2); + * const b = createSignal(() => a); + * // b() == 2 + * + * const bClone = createSignal(b.raw()); + * // bClone() == 2 + * + * a(4); + * // b() == 4 + * // bClone() == 4 + * ``` + */ + raw() { + return this.current; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnbmFsQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaWduYWxzL1NpZ25hbENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFHZCxLQUFLLEdBQ04sTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFL0MsT0FBTyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFTdEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQWtDbEMsTUFBTSxPQUFPLGFBSVgsU0FBUSxpQkFBeUI7SUFLakMsWUFDVSxPQUE4QyxFQUNyQyxhQUE0QyxFQUM3RCxRQUFrQyxTQUFVLEVBQ2xDLFNBQTBDLEtBQUssQ0FBQyxFQUFFLENBQVMsS0FBSyxFQUMxRSxhQUE4RCxFQUFFO1FBRWhFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQU5MLFlBQU8sR0FBUCxPQUFPLENBQXVDO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUErQjtRQUVuRCxXQUFNLEdBQU4sTUFBTSxDQUEwRDtRQUsxRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRTtZQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFD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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts b/node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts new file mode 100644 index 0000000..d6a8cb8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts @@ -0,0 +1,3 @@ +import { Computed } from '../signals'; +export declare function createComputed(factory: (...args: any[]) => TValue, owner?: any): Computed; +//# sourceMappingURL=createComputed.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts.map new file mode 100644 index 0000000..6adea9f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createComputed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createComputed.d.ts","sourceRoot":"","sources":["../../src/signals/createComputed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAkB,MAAM,YAAY,CAAC;AAErD,wBAAgB,cAAc,CAAC,MAAM,EACnC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,EACnC,KAAK,CAAC,EAAE,GAAG,GACV,QAAQ,CAAC,MAAM,CAAC,CAElB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createComputed.js b/node_modules/@motion-canvas/core/lib/signals/createComputed.js new file mode 100644 index 0000000..976aaef --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createComputed.js @@ -0,0 +1,5 @@ +import { ComputedContext } from '../signals'; +export function createComputed(factory, owner) { + return new ComputedContext(factory, owner).toSignal(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lnbmFscy9jcmVhdGVDb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsZUFBZSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXJELE1BQU0sVUFBVSxjQUFjLENBQzVCLE9BQW1DLEVBQ25DLEtBQVc7SUFFWCxPQUFPLElBQUksZUFBZSxDQUFTLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoRSxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts b/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts new file mode 100644 index 0000000..6a78970 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts @@ -0,0 +1,4 @@ +import { Computed } from '../signals'; +export declare function createComputedAsync(factory: () => Promise): Computed; +export declare function createComputedAsync(factory: () => Promise, initial: T): Computed; +//# sourceMappingURL=createComputedAsync.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts.map new file mode 100644 index 0000000..06f5654 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createComputedAsync.d.ts","sourceRoot":"","sources":["../../src/signals/createComputedAsync.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAIT,MAAM,YAAY,CAAC;AAEpB,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACxB,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtB,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,CAAC,GACT,QAAQ,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.js b/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.js new file mode 100644 index 0000000..f950374 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createComputedAsync.js @@ -0,0 +1,14 @@ +import { createComputed } from './createComputed'; +import { ComputedContext, createSignal, } from '../signals'; +export function createComputedAsync(factory, initial = null) { + let handle; + const signal = createSignal(factory); + return createComputed(() => { + const promise = signal(); + if (!handle || handle.promise !== promise) { + handle = ComputedContext.collectPromise(promise, handle?.value ?? initial); + } + return handle.value; + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29tcHV0ZWRBc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaWduYWxzL2NyZWF0ZUNvbXB1dGVkQXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFFTCxlQUFlLEVBQ2YsWUFBWSxHQUViLE1BQU0sWUFBWSxDQUFDO0FBU3BCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsT0FBeUIsRUFDekIsVUFBb0IsSUFBSTtJQUV4QixJQUFJLE1BQStCLENBQUM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sY0FBYyxDQUFDLEdBQUcsRUFBRTtRQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFO1lBQ3pDLE1BQU0sR0FBRyxlQUFlLENBQUMsY0FBYyxDQUNyQyxPQUFPLEVBQ1AsTUFBTSxFQUFFLEtBQUssSUFBSSxPQUFPLENBQ3pCLENBQUM7U0FDSDtRQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts b/node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts new file mode 100644 index 0000000..7d179d0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts @@ -0,0 +1,4 @@ +import { InterpolationFunction } from '../tweening'; +import { SimpleSignal, SignalValue } from '../signals'; +export declare function createSignal(initial?: SignalValue, interpolation?: InterpolationFunction, owner?: TOwner): SimpleSignal; +//# sourceMappingURL=createSignal.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts.map new file mode 100644 index 0000000..04181be --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createSignal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createSignal.d.ts","sourceRoot":"","sources":["../../src/signals/createSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAgB,YAAY,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AAEpE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAChD,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAC7B,aAAa,GAAE,qBAAqB,CAAC,MAAM,CAAY,EACvD,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAM9B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/createSignal.js b/node_modules/@motion-canvas/core/lib/signals/createSignal.js new file mode 100644 index 0000000..d7bf9cc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/createSignal.js @@ -0,0 +1,6 @@ +import { deepLerp } from '../tweening'; +import { SignalContext } from '../signals'; +export function createSignal(initial, interpolation = deepLerp, owner) { + return new SignalContext(initial, interpolation, owner).toSignal(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpZ25hbHMvY3JlYXRlU2lnbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQXdCLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBQyxhQUFhLEVBQTRCLE1BQU0sWUFBWSxDQUFDO0FBRXBFLE1BQU0sVUFBVSxZQUFZLENBQzFCLE9BQTZCLEVBQzdCLGdCQUErQyxRQUFRLEVBQ3ZELEtBQWM7SUFFZCxPQUFPLElBQUksYUFBYSxDQUN0QixPQUFPLEVBQ1AsYUFBYSxFQUNiLEtBQUssQ0FDTixDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2YsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/index.d.ts b/node_modules/@motion-canvas/core/lib/signals/index.d.ts new file mode 100644 index 0000000..716ee0c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/index.d.ts @@ -0,0 +1,16 @@ +/** + * Value wrappers for easy dependency tracking and cache invalidation. + * + * @packageDocumentation + */ +export * from './CompoundSignalContext'; +export * from './ComputedContext'; +export * from './createComputed'; +export * from './createComputedAsync'; +export * from './createSignal'; +export * from './utils'; +export * from './SignalContext'; +export * from './DependencyContext'; +export * from './types'; +export * from './symbols'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/index.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/index.d.ts.map new file mode 100644 index 0000000..072a6fb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/index.js b/node_modules/@motion-canvas/core/lib/signals/index.js new file mode 100644 index 0000000..7e7e4ea --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/index.js @@ -0,0 +1,16 @@ +/** + * Value wrappers for easy dependency tracking and cache invalidation. + * + * @packageDocumentation + */ +export * from './CompoundSignalContext'; +export * from './ComputedContext'; +export * from './createComputed'; +export * from './createComputedAsync'; +export * from './createSignal'; +export * from './utils'; +export * from './SignalContext'; +export * from './DependencyContext'; +export * from './types'; +export * from './symbols'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lnbmFscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFdBQVcsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/symbols.d.ts b/node_modules/@motion-canvas/core/lib/signals/symbols.d.ts new file mode 100644 index 0000000..6b92c3a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/symbols.d.ts @@ -0,0 +1,2 @@ +export declare const DEFAULT: unique symbol; +//# sourceMappingURL=symbols.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/symbols.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/symbols.d.ts.map new file mode 100644 index 0000000..adf3ad6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/symbols.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/signals/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAoD,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/symbols.js b/node_modules/@motion-canvas/core/lib/signals/symbols.js new file mode 100644 index 0000000..dec1a69 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/symbols.js @@ -0,0 +1,2 @@ +export const DEFAULT = Symbol.for('@motion-canvas/core/signals/default'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaWduYWxzL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/types.d.ts b/node_modules/@motion-canvas/core/lib/signals/types.d.ts new file mode 100644 index 0000000..202a343 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/types.d.ts @@ -0,0 +1,51 @@ +import type { InterpolationFunction, TimingFunction } from '../tweening'; +import type { ThreadGenerator } from '../threading'; +import { DEFAULT } from './symbols'; +export type SignalValue = TValue | (() => TValue); +export type SignalGenerator = ThreadGenerator & { + /** + * Tween to the specified value. + */ + to: SignalTween; + /** + * Tween back to the original value. + * + * @param time - The duration of the tween. + * @param timingFunction - The timing function of the tween. + * @param interpolationFunction - The interpolation function of the tween. + */ + back: (time: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction) => SignalGenerator; + /** + * Wait for the specified duration. + * + * @param duration - The duration to wait. + */ + wait: (duration: number) => SignalGenerator; + /** + * Run the given task. + * + * @param task - The generator to run. + */ + run: (task: ThreadGenerator) => SignalGenerator; + /** + * Invoke the given callback. + * + * @param callback - The callback to invoke. + */ + do: (callback: () => void) => SignalGenerator; +}; +export interface SignalSetter { + (value: SignalValue | typeof DEFAULT): TOwner; +} +export interface SignalGetter { + (): TValue; +} +export interface SignalTween { + (value: SignalValue | typeof DEFAULT, time: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction): SignalGenerator; +} +export interface SignalExtensions { + getter: SignalGetter; + setter: SignalSetter; + tweener(value: SignalValue, time: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction): ThreadGenerator; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/types.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/types.d.ts.map new file mode 100644 index 0000000..f2ce6fa --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/signals/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,CACzB,YAAY,EACZ,MAAM,SAAS,YAAY,IACzB,eAAe,GAAG;IACpB;;OAEG;IACH,EAAE,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;OAMG;IACH,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,KAClD,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C;;;;OAIG;IACH,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAClE;;;;OAIG;IACH,GAAG,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACtE;;;;OAIG;IACH,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,WAAW,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACjD,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,OAAO,GAAG,MAAM,CAAC;CACvD;AAED,MAAM,WAAW,YAAY,CAAC,MAAM;IAClC,IAAI,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW,CAAC,YAAY,EAAE,MAAM,SAAS,YAAY;IACpE,CACE,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,OAAO,OAAO,EACjD,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACpD,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB,CAAC,YAAY,EAAE,MAAM,SAAS,YAAY;IACzE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACnC,OAAO,CACL,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACpD,eAAe,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/types.js b/node_modules/@motion-canvas/core/lib/signals/types.js new file mode 100644 index 0000000..db15fc8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lnbmFscy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/utils.d.ts b/node_modules/@motion-canvas/core/lib/signals/utils.d.ts new file mode 100644 index 0000000..198d640 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/utils.d.ts @@ -0,0 +1,5 @@ +import { SignalValue } from './types'; +export declare function isReactive(value: SignalValue): value is () => T; +export declare function modify(value: SignalValue, modification: (value: TFrom) => TTo): SignalValue; +export declare function unwrap(value: SignalValue): T; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/utils.d.ts.map b/node_modules/@motion-canvas/core/lib/signals/utils.d.ts.map new file mode 100644 index 0000000..1b93765 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/signals/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEpC,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAErE;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,EAC/B,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EACzB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,GAClC,WAAW,CAAC,GAAG,CAAC,CAElB;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAElD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/signals/utils.js b/node_modules/@motion-canvas/core/lib/signals/utils.js new file mode 100644 index 0000000..3ddf755 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/signals/utils.js @@ -0,0 +1,10 @@ +export function isReactive(value) { + return typeof value === 'function'; +} +export function modify(value, modification) { + return isReactive(value) ? () => modification(value()) : modification(value); +} +export function unwrap(value) { + return isReactive(value) ? value() : value; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lnbmFscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsVUFBVSxDQUFJLEtBQXFCO0lBQ2pELE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUNwQixLQUF5QixFQUN6QixZQUFtQztJQUVuQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBSSxLQUFxQjtJQUM3QyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM3QyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/Thread.d.ts b/node_modules/@motion-canvas/core/lib/threading/Thread.d.ts new file mode 100644 index 0000000..a3870da --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/Thread.d.ts @@ -0,0 +1,69 @@ +import { ThreadGenerator } from './ThreadGenerator'; +/** + * A class representing an individual thread. + * + * @remarks + * Thread is a wrapper for a generator that can be executed concurrently. + * + * Aside from the main thread, all threads need to have a parent. + * If a parent finishes execution, all of its child threads are terminated. + */ +export declare class Thread { + /** + * The generator wrapped by this thread. + */ + readonly runner: ThreadGenerator; + children: Thread[]; + /** + * The next value to be passed to the wrapped generator. + */ + value: unknown; + /** + * The current time of this thread. + * + * @remarks + * Used by {@link flow.waitFor} and other time-based functions to properly + * support durations shorter than one frame. + */ + readonly time: import("../signals").SimpleSignal; + /** + * The fixed time of this thread. + * + * @remarks + * Fixed time is a multiple of the frame duration. It can be used to account + * for the difference between this thread's {@link time} and the time of the + * current animation frame. + */ + get fixed(): number; + /** + * Check if this thread or any of its ancestors has been canceled. + */ + get canceled(): boolean; + get paused(): boolean; + parent: Thread | null; + private isCanceled; + private isPaused; + private fixedTime; + constructor( + /** + * The generator wrapped by this thread. + */ + runner: ThreadGenerator); + /** + * Progress the wrapped generator once. + */ + next(): IteratorYieldResult | ThreadGenerator | import("./ThreadGenerator").Promisable> | IteratorReturnResult | { + value: null; + done: boolean; + }; + /** + * Prepare the thread for the next update cycle. + * + * @param dt - The delta time of the next cycle. + */ + update(dt: number): void; + add(child: Thread): void; + cancel(): void; + pause(value: boolean): void; +} +//# sourceMappingURL=Thread.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/Thread.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/Thread.d.ts.map new file mode 100644 index 0000000..c275ecd --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/Thread.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/threading/Thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAKlD;;;;;;;;GAQG;AACH,qBAAa,MAAM;IA6Cf;;OAEG;aACa,MAAM,EAAE,eAAe;IA/ClC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAC/B;;OAEG;IACI,KAAK,EAAE,OAAO,CAAC;IAEtB;;;;;;OAMG;IACH,SAAgB,IAAI,kDAAmB;IAEvC;;;;;;;OAOG;IACH,IAAW,KAAK,WAEf;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAEM,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAK;;IAGpB;;OAEG;IACa,MAAM,EAAE,eAAe;IAGzC;;OAEG;IACI,IAAI;;;;IAeX;;;;OAIG;IACI,MAAM,CAAC,EAAE,EAAE,MAAM;IAQjB,GAAG,CAAC,KAAK,EAAE,MAAM;IAWjB,MAAM;IAKN,KAAK,CAAC,KAAK,EAAE,OAAO;CAG5B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/Thread.js b/node_modules/@motion-canvas/core/lib/threading/Thread.js new file mode 100644 index 0000000..d750438 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/Thread.js @@ -0,0 +1,99 @@ +import { endThread, startThread } from '../utils'; +import { createSignal } from '../signals'; +import { setTaskName } from './names'; +/** + * A class representing an individual thread. + * + * @remarks + * Thread is a wrapper for a generator that can be executed concurrently. + * + * Aside from the main thread, all threads need to have a parent. + * If a parent finishes execution, all of its child threads are terminated. + */ +export class Thread { + /** + * The fixed time of this thread. + * + * @remarks + * Fixed time is a multiple of the frame duration. It can be used to account + * for the difference between this thread's {@link time} and the time of the + * current animation frame. + */ + get fixed() { + return this.fixedTime; + } + /** + * Check if this thread or any of its ancestors has been canceled. + */ + get canceled() { + return this.isCanceled || (this.parent?.canceled ?? false); + } + get paused() { + return this.isPaused || (this.parent?.paused ?? false); + } + constructor( + /** + * The generator wrapped by this thread. + */ + runner) { + this.runner = runner; + this.children = []; + /** + * The current time of this thread. + * + * @remarks + * Used by {@link flow.waitFor} and other time-based functions to properly + * support durations shorter than one frame. + */ + this.time = createSignal(0); + this.parent = null; + this.isCanceled = false; + this.isPaused = false; + this.fixedTime = 0; + } + /** + * Progress the wrapped generator once. + */ + next() { + if (this.paused) { + return { + value: null, + done: false, + }; + } + startThread(this); + const result = this.runner.next(this.value); + endThread(this); + this.value = null; + return result; + } + /** + * Prepare the thread for the next update cycle. + * + * @param dt - The delta time of the next cycle. + */ + update(dt) { + if (!this.paused) { + this.time(this.time() + dt); + this.fixedTime += dt; + } + this.children = this.children.filter(child => !child.canceled); + } + add(child) { + child.cancel(); + child.parent = this; + child.isCanceled = false; + child.time(this.time()); + child.fixedTime = this.fixedTime; + this.children.push(child); + setTaskName(child.runner, `unknown ${this.children.length}`); + } + cancel() { + this.isCanceled = true; + this.parent = null; + } + pause(value) { + this.isPaused = value; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RocmVhZGluZy9UaHJlYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRXBDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFnQmpCOzs7Ozs7O09BT0c7SUFDSCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBT0Q7SUFDRTs7T0FFRztJQUNhLE1BQXVCO1FBQXZCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBL0NsQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBTS9COzs7Ozs7V0FNRztRQUNhLFNBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUF5QmhDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsQ0FBQyxDQUFDO0lBT25CLENBQUM7SUFFSjs7T0FFRztJQUNJLElBQUk7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxLQUFLO2FBQ1osQ0FBQztTQUNIO1FBRUQsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsRUFBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQWE7UUFDdEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDcEIsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4QixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUIsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts b/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts new file mode 100644 index 0000000..3e89b4c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts @@ -0,0 +1,39 @@ +import { Thread } from './Thread'; +export interface Promisable { + toPromise(): Promise; +} +export declare function isPromisable(value: any): value is Promisable; +/** + * The main generator type produced by all generator functions in Motion Canvas. + * + * @example + * Yielded values can be used to control the flow of animation: + * + * Progress to the next frame: + * ```ts + * yield; + * ``` + * + * Run another generator synchronously: + * ```ts + * yield* generatorFunction(); + * ``` + * + * Run another generator concurrently: + * ```ts + * const task = yield generatorFunction(); + * ``` + * + * Await a Promise: + * ```ts + * const result = yield asyncFunction(); + * ``` + */ +export type ThreadGenerator = Generator | Promisable | void, void, Thread | any>; +/** + * Check if the given value is a {@link ThreadGenerator}. + * + * @param value - A possible thread {@link ThreadGenerator}. + */ +export declare function isThreadGenerator(value: unknown): value is ThreadGenerator; +//# sourceMappingURL=ThreadGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts.map new file mode 100644 index 0000000..45641a3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ThreadGenerator.d.ts","sourceRoot":"","sources":["../../src/threading/ThreadGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,CAMjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,CACrC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,EACvD,IAAI,EACJ,MAAM,GAAG,GAAG,CACb,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAO1E"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.js b/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.js new file mode 100644 index 0000000..38a5e8d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/ThreadGenerator.js @@ -0,0 +1,17 @@ +export function isPromisable(value) { + return (value && + (typeof value === 'object' || typeof value === 'function') && + 'toPromise' in value); +} +/** + * Check if the given value is a {@link ThreadGenerator}. + * + * @param value - A possible thread {@link ThreadGenerator}. + */ +export function isThreadGenerator(value) { + return (value !== null && + typeof value === 'object' && + Symbol.iterator in value && + 'next' in value); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RocmVhZGluZy9UaHJlYWRHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFVO0lBQ3JDLE9BQU8sQ0FDTCxLQUFLO1FBQ0wsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO1FBQzFELFdBQVcsSUFBSSxLQUFLLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBa0NEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYztJQUM5QyxPQUFPLENBQ0wsS0FBSyxLQUFLLElBQUk7UUFDZCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSztRQUN4QixNQUFNLElBQUksS0FBSyxDQUNoQixDQUFDO0FBQ0osQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/cancel.d.ts b/node_modules/@motion-canvas/core/lib/threading/cancel.d.ts new file mode 100644 index 0000000..e0abea2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/cancel.d.ts @@ -0,0 +1,17 @@ +import { ThreadGenerator } from './ThreadGenerator'; +/** + * Cancel all listed tasks. + * + * Example: + * ```ts + * const task = yield generatorFunction(); + * + * // do something concurrently + * + * yield* cancel(task); + * ``` + * + * @param tasks - A list of tasks to cancel. + */ +export declare function cancel(...tasks: ThreadGenerator[]): void; +//# sourceMappingURL=cancel.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/cancel.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/cancel.d.ts.map new file mode 100644 index 0000000..989e95f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/cancel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/threading/cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAGlD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,QASjD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/cancel.js b/node_modules/@motion-canvas/core/lib/threading/cancel.js new file mode 100644 index 0000000..fc97394 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/cancel.js @@ -0,0 +1,26 @@ +import { useThread } from '../utils'; +/** + * Cancel all listed tasks. + * + * Example: + * ```ts + * const task = yield generatorFunction(); + * + * // do something concurrently + * + * yield* cancel(task); + * ``` + * + * @param tasks - A list of tasks to cancel. + */ +export function cancel(...tasks) { + const thread = useThread(); + for (const task of tasks) { + const child = thread.children.find(thread => thread.runner === task); + if (child && !child.canceled) { + child.cancel(); + child.time(thread.time()); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RocmVhZGluZy9jYW5jZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFHLEtBQXdCO0lBQ2hELE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQzNCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDNUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMzQjtLQUNGO0FBQ0gsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/index.d.ts b/node_modules/@motion-canvas/core/lib/threading/index.d.ts new file mode 100644 index 0000000..388e05f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/index.d.ts @@ -0,0 +1,12 @@ +/** + * Thread management. + * + * @packageDocumentation + */ +export * from './cancel'; +export * from './join'; +export * from './names'; +export * from './Thread'; +export * from './ThreadGenerator'; +export * from './threads'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/index.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/index.d.ts.map new file mode 100644 index 0000000..bbc1d39 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/threading/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/index.js b/node_modules/@motion-canvas/core/lib/threading/index.js new file mode 100644 index 0000000..d896987 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/index.js @@ -0,0 +1,12 @@ +/** + * Thread management. + * + * @packageDocumentation + */ +export * from './cancel'; +export * from './join'; +export * from './names'; +export * from './Thread'; +export * from './ThreadGenerator'; +export * from './threads'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGhyZWFkaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsV0FBVyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/join.d.ts b/node_modules/@motion-canvas/core/lib/threading/join.d.ts new file mode 100644 index 0000000..864d4af --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/join.d.ts @@ -0,0 +1,35 @@ +import { ThreadGenerator } from './ThreadGenerator'; +/** + * Pause the current generator until all listed tasks are finished. + * + * @example + * ```ts + * const task = yield generatorFunction(); + * + * // do something concurrently + * + * yield* join(task); + * ``` + * + * @param tasks - A list of tasks to join. + */ +export declare function join(...tasks: ThreadGenerator[]): ThreadGenerator; +/** + * Pause the current generator until listed tasks are finished. + * + * @example + * ```ts + * const taskA = yield generatorFunctionA(); + * const taskB = yield generatorFunctionB(); + * + * // do something concurrently + * + * // await any of the tasks + * yield* join(false, taskA, taskB); + * ``` + * + * @param all - Whether we should wait for all tasks or for at least one. + * @param tasks - A list of tasks to join. + */ +export declare function join(all: boolean, ...tasks: ThreadGenerator[]): ThreadGenerator; +//# sourceMappingURL=join.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/join.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/join.d.ts.map new file mode 100644 index 0000000..abe60c9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/join.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/threading/join.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAKlD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;AACnE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,OAAO,EACZ,GAAG,KAAK,EAAE,eAAe,EAAE,GAC1B,eAAe,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/join.js b/node_modules/@motion-canvas/core/lib/threading/join.js new file mode 100644 index 0000000..467519c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/join.js @@ -0,0 +1,33 @@ +import { decorate, threadable } from '../decorators'; +import { useThread } from '../utils'; +decorate(join, threadable()); +export function* join(first, ...tasks) { + let all = true; + if (typeof first === 'boolean') { + all = first; + } + else { + tasks.push(first); + } + const parent = useThread(); + const threads = (tasks + .map(task => parent.children.find(thread => thread.runner === task)) + .filter(thread => thread)); + const startTime = parent.time(); + let childTime; + if (all) { + while (threads.find(thread => !thread.canceled)) { + yield; + } + childTime = Math.max(...threads.map(thread => thread.time())); + } + else { + while (!threads.find(thread => thread.canceled)) { + yield; + } + const canceled = threads.filter(thread => thread.canceled); + childTime = Math.min(...canceled.map(thread => thread.time())); + } + parent.time(Math.max(startTime, childTime)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90aHJlYWRpbmcvam9pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR25DLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQXFDN0IsTUFBTSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ25CLEtBQWdDLEVBQ2hDLEdBQUcsS0FBd0I7SUFFM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ2YsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDOUIsR0FBRyxHQUFHLEtBQUssQ0FBQztLQUNiO1NBQU07UUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ25CO0lBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxPQUFPLEdBQWEsQ0FDeEIsS0FBSztTQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNuRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FDNUIsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxJQUFJLFNBQVMsQ0FBQztJQUNkLElBQUksR0FBRyxFQUFFO1FBQ1AsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0MsS0FBSyxDQUFDO1NBQ1A7UUFDRCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQy9EO1NBQU07UUFDTCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMvQyxLQUFLLENBQUM7U0FDUDtRQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNoRTtJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/names.d.ts b/node_modules/@motion-canvas/core/lib/threading/names.d.ts new file mode 100644 index 0000000..f8de211 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/names.d.ts @@ -0,0 +1,3 @@ +export declare function setTaskName(task: Generator, source: Generator | string): void; +export declare function getTaskName(task: Generator): string; +//# sourceMappingURL=names.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/names.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/names.d.ts.map new file mode 100644 index 0000000..43cee9f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/names.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/threading/names.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAM7E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEnD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/names.js b/node_modules/@motion-canvas/core/lib/threading/names.js new file mode 100644 index 0000000..e39dd4b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/names.js @@ -0,0 +1,11 @@ +export function setTaskName(task, source) { + const prototype = Object.getPrototypeOf(task); + if (!prototype.threadable) { + prototype.threadable = true; + prototype.name = typeof source === 'string' ? source : getTaskName(source); + } +} +export function getTaskName(task) { + return Object.getPrototypeOf(task).name ?? null; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGhyZWFkaW5nL25hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBZSxFQUFFLE1BQTBCO0lBQ3JFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUU7UUFDekIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDNUIsU0FBUyxDQUFDLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzVFO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBZTtJQUN6QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztBQUNsRCxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/threads.d.ts b/node_modules/@motion-canvas/core/lib/threading/threads.d.ts new file mode 100644 index 0000000..bac5b3a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/threads.d.ts @@ -0,0 +1,46 @@ +import { Thread } from './Thread'; +import { ThreadGenerator } from './ThreadGenerator'; +/** + * Check if the given value is a [Promise][promise]. + * + * @param value - A possible [Promise][promise]. + * + * [promise]: https://developer.mozilla.org/en-US/docs/web/javascript/reference/global_objects/promise + */ +export declare function isPromise(value: any): value is Promise; +/** + * A generator function or a normal function that returns a generator. + */ +export interface ThreadsFactory { + (): ThreadGenerator; +} +export interface ThreadsCallback { + (root: Thread): void; +} +/** + * Create a context in which generators can be run concurrently. + * + * @remarks + * From the perspective of the external generator, `threads` is executed + * synchronously. By default, each scene generator is wrapped in its own + * `threads` generator. + * + * @example + * ```ts + * // first + * + * yield* threads(function* () { + * const task = yield generatorFunction(); + * // second + * }); // <- `task` will be terminated here because the scope + * // of this `threads` generator has ended + * + * // third + * ``` + * + * @param factory - A function that returns the generator to run. + * @param callback - Called whenever threads are created, canceled or finished. + * Used for debugging purposes. + */ +export declare function threads(factory: ThreadsFactory, callback?: ThreadsCallback): ThreadGenerator; +//# sourceMappingURL=threads.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/threads.d.ts.map b/node_modules/@motion-canvas/core/lib/threading/threads.d.ts.map new file mode 100644 index 0000000..9d07e24 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/threads.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/threading/threads.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAoB,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAIrE;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAE3D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,eAAe,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAiB,OAAO,CACtB,OAAO,EAAE,cAAc,EACvB,QAAQ,CAAC,EAAE,eAAe,GACzB,eAAe,CA4CjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/threading/threads.js b/node_modules/@motion-canvas/core/lib/threading/threads.js new file mode 100644 index 0000000..1049bbf --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/threading/threads.js @@ -0,0 +1,84 @@ +import { decorate, threadable } from '../decorators'; +import { Thread } from './Thread'; +import { isThreadGenerator } from './ThreadGenerator'; +import { setTaskName } from './names'; +import { usePlayback } from '../utils'; +/** + * Check if the given value is a [Promise][promise]. + * + * @param value - A possible [Promise][promise]. + * + * [promise]: https://developer.mozilla.org/en-US/docs/web/javascript/reference/global_objects/promise + */ +export function isPromise(value) { + return typeof value?.then === 'function'; +} +decorate(threads, threadable()); +/** + * Create a context in which generators can be run concurrently. + * + * @remarks + * From the perspective of the external generator, `threads` is executed + * synchronously. By default, each scene generator is wrapped in its own + * `threads` generator. + * + * @example + * ```ts + * // first + * + * yield* threads(function* () { + * const task = yield generatorFunction(); + * // second + * }); // <- `task` will be terminated here because the scope + * // of this `threads` generator has ended + * + * // third + * ``` + * + * @param factory - A function that returns the generator to run. + * @param callback - Called whenever threads are created, canceled or finished. + * Used for debugging purposes. + */ +export function* threads(factory, callback) { + const playback = usePlayback(); + const root = factory(); + setTaskName(root, 'root'); + const rootThread = new Thread(root); + callback?.(rootThread); + let threads = [rootThread]; + while (threads.length > 0) { + const newThreads = []; + const queue = [...threads]; + const dt = playback.framesToSeconds(1) * playback.speed; + while (queue.length > 0) { + const thread = queue.pop(); + if (!thread || thread.canceled) { + continue; + } + const result = thread.next(); + if (result.done) { + thread.cancel(); + continue; + } + if (isThreadGenerator(result.value)) { + const child = new Thread(result.value); + thread.value = result.value; + thread.add(child); + queue.push(thread); + queue.push(child); + } + else if (result.value) { + thread.value = yield result.value; + queue.push(thread); + } + else { + thread.update(dt); + newThreads.unshift(thread); + } + } + threads = newThreads.filter(thread => !thread.canceled); + if (threads.length > 0) + yield; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90aHJlYWRpbmcvdGhyZWFkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFckM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sT0FBTyxLQUFLLEVBQUUsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQUMzQyxDQUFDO0FBYUQsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEIsT0FBdUIsRUFDdkIsUUFBMEI7SUFFMUIsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUM7SUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDdkIsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV2QixJQUFJLE9BQU8sR0FBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUMzQixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFFeEQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUM5QixTQUFTO2FBQ1Y7WUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsU0FBUzthQUNWO1lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVsQixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25CO2lCQUFNLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDdkIsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QjtTQUNGO1FBRUQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEtBQUssQ0FBQztLQUMvQjtBQUNILENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts b/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts new file mode 100644 index 0000000..f0a354d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts @@ -0,0 +1,8 @@ +import { ThreadGenerator } from '../threading'; +/** + * Perform a transition that fades between the scenes. + * + * @param duration - The duration of the transition. + */ +export declare function fadeTransition(duration?: number): ThreadGenerator; +//# sourceMappingURL=fadeTransition.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts.map b/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts.map new file mode 100644 index 0000000..7769856 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fadeTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/fadeTransition.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAG7C;;;;GAIG;AACH,wBAAiB,cAAc,CAAC,QAAQ,SAAM,GAAG,eAAe,CAQ/D"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.js b/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.js new file mode 100644 index 0000000..1fa94ca --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/fadeTransition.js @@ -0,0 +1,16 @@ +import { useTransition } from './useTransition'; +import { createSignal } from '../signals'; +/** + * Perform a transition that fades between the scenes. + * + * @param duration - The duration of the transition. + */ +export function* fadeTransition(duration = 0.6) { + const progress = createSignal(0); + const endTransition = useTransition(ctx => { + ctx.globalAlpha = progress(); + }); + yield* progress(1, duration); + endTransition(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFkZVRyYW5zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNpdGlvbnMvZmFkZVRyYW5zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFeEM7Ozs7R0FJRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxHQUFHO0lBQzVDLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeEMsR0FBRyxDQUFDLFdBQVcsR0FBRyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0IsYUFBYSxFQUFFLENBQUM7QUFDbEIsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/index.d.ts b/node_modules/@motion-canvas/core/lib/transitions/index.d.ts new file mode 100644 index 0000000..075a5bf --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/index.d.ts @@ -0,0 +1,11 @@ +/** + * Transitions between scenes. + * + * @packageDocumentation + */ +export * from './slideTransition'; +export * from './useTransition'; +export * from './zoomInTransition'; +export * from './zoomOutTransition'; +export * from './fadeTransition'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/index.d.ts.map b/node_modules/@motion-canvas/core/lib/transitions/index.d.ts.map new file mode 100644 index 0000000..0a32c24 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transitions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/index.js b/node_modules/@motion-canvas/core/lib/transitions/index.js new file mode 100644 index 0000000..f5a7a7e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/index.js @@ -0,0 +1,11 @@ +/** + * Transitions between scenes. + * + * @packageDocumentation + */ +export * from './slideTransition'; +export * from './useTransition'; +export * from './zoomInTransition'; +export * from './zoomOutTransition'; +export * from './fadeTransition'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNpdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts b/node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts new file mode 100644 index 0000000..3230497 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts @@ -0,0 +1,17 @@ +import { Direction, Origin } from '../types'; +import { ThreadGenerator } from '../threading'; +/** + * Perform a transition that slides the scene in the given direction. + * + * @param direction - The direction in which to slide. + * @param duration - The duration of the transition. + */ +export declare function slideTransition(direction: Direction, duration?: number): ThreadGenerator; +/** + * Perform a transition that slides the scene towards the given origin. + * + * @param origin - The origin towards which to slide. + * @param duration - The duration of the transition. + */ +export declare function slideTransition(origin: Origin, duration?: number): ThreadGenerator; +//# sourceMappingURL=slideTransition.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts.map b/node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts.map new file mode 100644 index 0000000..266a58b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/slideTransition.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"slideTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/slideTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAU,MAAM,UAAU,CAAC;AAIpD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,CAAC;AACnB;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/slideTransition.js b/node_modules/@motion-canvas/core/lib/transitions/slideTransition.js new file mode 100644 index 0000000..03b6d41 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/slideTransition.js @@ -0,0 +1,14 @@ +import { Direction, Vector2 } from '../types'; +import { useScene } from '../utils'; +import { useTransition } from './useTransition'; +import { all } from '../flow'; +export function* slideTransition(direction = Direction.Top, duration = 0.6) { + const size = useScene().getSize(); + const position = size.getOriginOffset(direction).scale(2); + const previousPosition = Vector2.createSignal(); + const currentPosition = Vector2.createSignal(position); + const endTransition = useTransition(ctx => ctx.translate(currentPosition.x(), currentPosition.y()), ctx => ctx.translate(previousPosition.x(), previousPosition.y())); + yield* all(previousPosition(position.scale(-1), duration), currentPosition(Vector2.zero, duration)); + endTransition(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVUcmFuc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zaXRpb25zL3NsaWRlVHJhbnNpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBdUI1QixNQUFNLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FDOUIsWUFBZ0MsU0FBUyxDQUFDLEdBQUcsRUFDN0MsUUFBUSxHQUFHLEdBQUc7SUFFZCxNQUFNLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FDakMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDOUQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2pFLENBQUM7SUFFRixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQ1IsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUM5QyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FDeEMsQ0FBQztJQUNGLGFBQWEsRUFBRSxDQUFDO0FBQ2xCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts b/node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts new file mode 100644 index 0000000..3ac6728 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts @@ -0,0 +1,8 @@ +/** + * Transition to the current scene by altering the Context2D before scenes are rendered. + * + * @param current - The callback to use before the current scene is rendered. + * @param previous - The callback to use before the previous scene is rendered. + */ +export declare function useTransition(current: (ctx: CanvasRenderingContext2D) => void, previous?: (ctx: CanvasRenderingContext2D) => void): () => void; +//# sourceMappingURL=useTransition.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts.map b/node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts.map new file mode 100644 index 0000000..e6b0144 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/useTransition.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/useTransition.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,EAChD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,cAqBnD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/useTransition.js b/node_modules/@motion-canvas/core/lib/transitions/useTransition.js new file mode 100644 index 0000000..a38e2eb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/useTransition.js @@ -0,0 +1,25 @@ +import { useScene } from '../utils'; +/** + * Transition to the current scene by altering the Context2D before scenes are rendered. + * + * @param current - The callback to use before the current scene is rendered. + * @param previous - The callback to use before the previous scene is rendered. + */ +export function useTransition(current, previous) { + if (previous == null) { + previous = () => { + // do nothing + }; + } + const scene = useScene(); + const prior = scene.previous; + const unsubPrev = prior?.lifecycleEvents.onBeforeRender.subscribe(previous); + const unsubNext = scene.lifecycleEvents.onBeforeRender.subscribe(current); + scene.enterInitial(); + return () => { + scene.enterAfterTransitionIn(); + unsubPrev?.(); + unsubNext(); + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhbnNpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2l0aW9ucy91c2VUcmFuc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixPQUFnRCxFQUNoRCxRQUFrRDtJQUVsRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7UUFDcEIsUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLGFBQWE7UUFDZixDQUFDLENBQUM7S0FDSDtJQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFFN0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUFFLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUxRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFckIsT0FBTyxHQUFHLEVBQUU7UUFDVixLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvQixTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ2QsU0FBUyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts b/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts new file mode 100644 index 0000000..ad70f8c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts @@ -0,0 +1,10 @@ +import { BBox } from '../types'; +import { ThreadGenerator } from '../threading'; +/** + * Perform a transition that zooms in on a given area of the scene. + * + * @param area - The area on which to zoom in. + * @param duration - The duration of the transition. + */ +export declare function zoomInTransition(area: BBox, duration?: number): ThreadGenerator; +//# sourceMappingURL=zoomInTransition.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts.map b/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts.map new file mode 100644 index 0000000..5893ebb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"zoomInTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/zoomInTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAU,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C;;;;;GAKG;AACH,wBAAiB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,SAAM,GAAG,eAAe,CAgC7E"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.js b/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.js new file mode 100644 index 0000000..c42c3d0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/zoomInTransition.js @@ -0,0 +1,33 @@ +import { Vector2 } from '../types'; +import { useScene } from '../utils'; +import { useTransition } from './useTransition'; +import { clampRemap, easeInOutCubic, linear } from '../tweening'; +import { createSignal } from '../signals'; +import { all } from '../flow'; +/** + * Perform a transition that zooms in on a given area of the scene. + * + * @param area - The area on which to zoom in. + * @param duration - The duration of the transition. + */ +export function* zoomInTransition(area, duration = 0.6) { + const scale = useScene().getSize().div(area.size); + const currentPosition = Vector2.createSignal(area.position); + const currentScale = Vector2.createSignal(Vector2.one.div(scale)); + const previousPosition = Vector2.createSignal(0); + const previousScale = Vector2.createSignal(1); + const alpha = createSignal(0); + const endTransition = useTransition(ctx => { + ctx.globalAlpha = clampRemap(0.1, 0.5, 0, 1, alpha()); + ctx.translate(currentPosition.x(), currentPosition.y()); + ctx.scale(currentScale.x(), currentScale.y()); + }, ctx => { + ctx.globalAlpha = clampRemap(0.5, 0.9, 1, 0, alpha()); + ctx.translate(previousPosition.x(), previousPosition.y()); + ctx.scale(previousScale.x(), previousScale.y()); + }); + const timing = (v) => easeInOutCubic(v * v); + yield* all(currentPosition(Vector2.zero, duration, timing), previousPosition(area.position.flipped.mul(scale), duration, timing), currentScale(1, duration, timing), previousScale(scale, duration, timing), alpha(1, duration, linear)); + endTransition(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbUluVHJhbnNpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2l0aW9ucy96b29tSW5UcmFuc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUc1Qjs7Ozs7R0FLRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLFFBQVEsR0FBRyxHQUFHO0lBQzFELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQ2pDLEdBQUcsQ0FBQyxFQUFFO1FBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1FBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUNSLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDL0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDcEUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQ2pDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUN0QyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FDM0IsQ0FBQztJQUVGLGFBQWEsRUFBRSxDQUFDO0FBQ2xCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts b/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts new file mode 100644 index 0000000..cf21a4d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts @@ -0,0 +1,10 @@ +import { BBox } from '../types'; +import { ThreadGenerator } from '../threading'; +/** + * Perform a transition that zooms out from a given area of the scene. + * + * @param area - The area from which to zoom out. + * @param duration - The duration of the transition. + */ +export declare function zoomOutTransition(area: BBox, duration?: number): ThreadGenerator; +//# sourceMappingURL=zoomOutTransition.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts.map b/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts.map new file mode 100644 index 0000000..883b999 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"zoomOutTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/zoomOutTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAU,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C;;;;;GAKG;AACH,wBAAiB,iBAAiB,CAChC,IAAI,EAAE,IAAI,EACV,QAAQ,SAAM,GACb,eAAe,CAkCjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.js b/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.js new file mode 100644 index 0000000..e5768a3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/transitions/zoomOutTransition.js @@ -0,0 +1,33 @@ +import { Vector2 } from '../types'; +import { useScene } from '../utils'; +import { useTransition } from './useTransition'; +import { clampRemap, easeInOutCubic, linear } from '../tweening'; +import { createSignal } from '../signals'; +import { all } from '../flow'; +/** + * Perform a transition that zooms out from a given area of the scene. + * + * @param area - The area from which to zoom out. + * @param duration - The duration of the transition. + */ +export function* zoomOutTransition(area, duration = 0.6) { + const scale = useScene().getSize().div(area.size); + const currentPosition = Vector2.createSignal(area.position.flipped.mul(scale)); + const currentScale = Vector2.createSignal(scale); + const previousPosition = Vector2.createSignal(0); + const previousScale = Vector2.createSignal(1); + const alpha = createSignal(0); + const endTransition = useTransition(ctx => { + ctx.globalAlpha = clampRemap(0.1, 0.5, 0, 1, alpha()); + ctx.translate(currentPosition.x(), currentPosition.y()); + ctx.scale(currentScale.x(), currentScale.y()); + }, ctx => { + ctx.globalAlpha = clampRemap(0.5, 0.9, 1, 0, alpha()); + ctx.translate(previousPosition.x(), previousPosition.y()); + ctx.scale(previousScale.x(), previousScale.y()); + }); + const timing = (v) => easeInOutCubic(Math.sqrt(v)); + yield* all(currentPosition(Vector2.zero, duration, timing), previousPosition(area.position, duration, timing), currentScale(1, duration, timing), previousScale(Vector2.one.div(scale), duration, timing), alpha(1, duration, linear)); + endTransition(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbU91dFRyYW5zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNpdGlvbnMvem9vbU91dFRyYW5zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRzVCOzs7OztHQUtHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxpQkFBaUIsQ0FDaEMsSUFBVSxFQUNWLFFBQVEsR0FBRyxHQUFHO0lBRWQsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQ2pDLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQ2pDLEdBQUcsQ0FBQyxFQUFFO1FBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1FBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUNSLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDL0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQ2pELFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUNqQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUN2RCxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FDM0IsQ0FBQztJQUVGLGFBQWEsRUFBRSxDQUFDO0FBQ2xCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/index.d.ts b/node_modules/@motion-canvas/core/lib/tweening/index.d.ts new file mode 100644 index 0000000..7dab890 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/index.d.ts @@ -0,0 +1,10 @@ +/** + * Interpolation and timing of tweens. + * + * @packageDocumentation + */ +export * from './interpolationFunctions'; +export * from './timingFunctions'; +export * from './tween'; +export * from './spring'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/index.d.ts.map b/node_modules/@motion-canvas/core/lib/tweening/index.d.ts.map new file mode 100644 index 0000000..a4f275c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tweening/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/index.js b/node_modules/@motion-canvas/core/lib/tweening/index.js new file mode 100644 index 0000000..1f73fb0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/index.js @@ -0,0 +1,10 @@ +/** + * Interpolation and timing of tweens. + * + * @packageDocumentation + */ +export * from './interpolationFunctions'; +export * from './timingFunctions'; +export * from './tween'; +export * from './spring'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHdlZW5pbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts b/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts new file mode 100644 index 0000000..ffd8adb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts @@ -0,0 +1,39 @@ +import { Vector2 } from '../types'; +export interface InterpolationFunction { + (from: T, to: T, value: number, ...args: TRest): T; +} +export declare function textLerp(from: string, to: string, value: number): string; +/** + * Interpolate between any two Records, including objects and Maps, even with + * mismatched keys. + * + * @remarks + * Any old key that is missing in `to` will be removed immediately once value is + * not 0. Any new key that is missing in `from` will be added once value reaches + * 1. + * + * @param from - The input to favor when value is 0. + * @param to - The input to favor when value is 1. + * @param value - On a scale between 0 and 1, how closely to favor from vs to. + * + * @returns A value matching the structure of from and to. + */ +export declare function deepLerp, TTo extends Record>(from: TFrom, to: TTo, value: number): TFrom | TTo; +export declare function deepLerp, TTo extends Record>(from: TFrom, to: TTo, value: number, suppressWarnings: boolean): TFrom | TTo; +/** + * Interpolate between any two values, including objects, arrays, and Maps. + * + * @param from - The input to favor when value is 0. + * @param to - The input to favor when value is 1. + * @param value - On a scale between 0 and 1, how closely to favor from vs to. + * + * @returns A value matching the structure of from and to. + */ +export declare function deepLerp(from: T, to: T, value: number): T; +export declare function deepLerp(from: T, to: T, value: number, suppressWarnings: boolean): T; +export declare function map(from: number, to: number, value: number): number; +export declare function remap(fromIn: number, toIn: number, fromOut: number, toOut: number, value: number): number; +export declare function clamp(min: number, max: number, value: number): number; +export declare function clampRemap(fromIn: number, toIn: number, fromOut: number, toOut: number, value: number): number; +export declare function arcLerp(value: number, reverse: boolean, ratio: number): Vector2; +//# sourceMappingURL=interpolationFunctions.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts.map b/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts.map new file mode 100644 index 0000000..9ba862f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"interpolationFunctions.d.ts","sourceRoot":"","sources":["../../src/tweening/interpolationFunctions.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE;IACnE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;CACpD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UA+B/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAClC,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAChC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;AACpD,wBAAgB,QAAQ,CACtB,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAClC,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAChC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC;AAC/E;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;AAC9D,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,OAAO,GACxB,CAAC,CAAC;AA+DL,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAE1D;AAED,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,UAGd;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAE5D;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,UAMd;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAoBT"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.js b/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.js new file mode 100644 index 0000000..eee608a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/interpolationFunctions.js @@ -0,0 +1,119 @@ +import { useLogger } from '../utils'; +import { Vector2 } from '../types'; +export function textLerp(from, to, value) { + // left to right + if (to.length >= from.length) { + const current = Math.floor(to.length * value); + const currentLength = Math.floor(map(from.length - 1, to.length, value)); + let text = ''; + for (let i = 0; i < to.length; i++) { + if (i < current) { + text += to[i]; + } + else if (from[i] || i <= currentLength) { + text += from[i] ?? to[i]; + } + } + return text; + } + // right to left + else { + const current = Math.round(from.length * (1 - value)); + const currentLength = Math.floor(map(from.length + 1, to.length, value)); + const text = []; + for (let i = from.length - 1; i >= 0; i--) { + if (i < current) { + text.unshift(from[i]); + } + else if (to[i] || i < currentLength) { + text.unshift(to[i] ?? from[i]); + } + } + return text.join(''); + } +} +export function deepLerp(from, to, value, suppressWarnings = false) { + if (value === 0) + return from; + if (value === 1) + return to; + if (from == null || to == null) { + if (!suppressWarnings) { + useLogger().warn(`Attempting to lerp ${from} -> ${to} may result in unexpected behavior.`); + } + return undefined; + } + if (typeof from === 'number' && typeof to === 'number') { + return map(from, to, value); + } + if (typeof from === 'string' && typeof to === 'string') { + return textLerp(from, to, value); + } + if (typeof from === 'boolean' && typeof to === 'boolean') { + return value < 0.5 ? from : to; + } + if ('lerp' in from) { + return from.lerp(to, value); + } + if (from && to && typeof from === 'object' && typeof to === 'object') { + if (Array.isArray(from) && Array.isArray(to)) { + if (from.length === to.length) { + return from.map((f, i) => deepLerp(f, to[i], value)); + } + } + else { + let toObject = false; + if (!(from instanceof Map) && !(to instanceof Map)) { + toObject = true; + from = new Map(Object.entries(from)); + to = new Map(Object.entries(to)); + } + if (from instanceof Map && to instanceof Map) { + const result = new Map(); + for (const key of new Set([...from.keys(), ...to.keys()])) { + const inter = deepLerp(from.get(key), to.get(key), value, true); + if (inter !== undefined) + result.set(key, inter); + } + return toObject ? Object.fromEntries(result) : result; + } + } + } + // fallback with an immediate jump to the new value + return to; +} +export function map(from, to, value) { + return from + (to - from) * value; +} +export function remap(fromIn, toIn, fromOut, toOut, value) { + return fromOut + ((value - fromIn) * (toOut - fromOut)) / (toIn - fromIn); +} +export function clamp(min, max, value) { + return value < min ? min : value > max ? max : value; +} +export function clampRemap(fromIn, toIn, fromOut, toOut, value) { + const remappedValue = remap(fromIn, toIn, fromOut, toOut, value); + if (fromOut > toOut) + [fromOut, toOut] = [toOut, fromOut]; + return clamp(fromOut, toOut, remappedValue); +} +export function arcLerp(value, reverse, ratio) { + let flip = reverse; + if (ratio > 1) { + ratio = 1 / ratio; + } + else { + flip = !flip; + } + const normalized = flip + ? Math.acos(clamp(-1, 1, 1 - value)) + : Math.asin(value); + const radians = map(normalized, map(0, Math.PI / 2, value), ratio); + let xValue = Math.sin(radians); + let yValue = 1 - Math.cos(radians); + if (reverse) { + [xValue, yValue] = [yValue, xValue]; + } + return new Vector2(xValue, yValue); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJwb2xhdGlvbkZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90d2VlbmluZy9pbnRlcnBvbGF0aW9uRnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQU1qQyxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsS0FBYTtJQUM5RCxnQkFBZ0I7SUFDaEIsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNmO2lCQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsZ0JBQWdCO1NB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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/spring.d.ts b/node_modules/@motion-canvas/core/lib/tweening/spring.d.ts new file mode 100644 index 0000000..5fa8ab4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/spring.d.ts @@ -0,0 +1,20 @@ +import { ThreadGenerator } from '../threading'; +type ProgressFunction = (value: number, time: number) => void; +export declare function spring(spring: Spring | null, from: number, to: number, settleTolerance: number, onProgress: ProgressFunction, onEnd?: ProgressFunction): ThreadGenerator; +export declare function spring(spring: Spring | null, from: number, to: number, onProgress: ProgressFunction, onEnd?: ProgressFunction): ThreadGenerator; +export interface Spring { + mass: number; + stiffness: number; + damping: number; + initialVelocity?: number; +} +export declare function makeSpring(mass: number, stiffness: number, damping: number, initialVelocity?: number): Spring; +export declare const BeatSpring: Spring; +export declare const PlopSpring: Spring; +export declare const BounceSpring: Spring; +export declare const SwingSpring: Spring; +export declare const JumpSpring: Spring; +export declare const StrikeSpring: Spring; +export declare const SmoothSpring: Spring; +export {}; +//# sourceMappingURL=spring.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/spring.d.ts.map b/node_modules/@motion-canvas/core/lib/tweening/spring.d.ts.map new file mode 100644 index 0000000..3601338 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/spring.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../../src/tweening/spring.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAG7C,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAG9D,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,gBAAgB,EAC5B,KAAK,CAAC,EAAE,gBAAgB,GACvB,eAAe,CAAC;AAEnB,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,gBAAgB,EAC5B,KAAK,CAAC,EAAE,gBAAgB,GACvB,eAAe,CAAC;AAsHnB,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAOR;AAED,eAAO,MAAM,UAAU,EAAE,MAAyC,CAAC;AACnE,eAAO,MAAM,UAAU,EAAE,MAAyC,CAAC;AACnE,eAAO,MAAM,YAAY,EAAE,MAA0C,CAAC;AACtE,eAAO,MAAM,WAAW,EAAE,MAA2C,CAAC;AACtE,eAAO,MAAM,UAAU,EAAE,MAAyC,CAAC;AACnE,eAAO,MAAM,YAAY,EAAE,MAAyC,CAAC;AACrE,eAAO,MAAM,YAAY,EAAE,MAA2C,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/spring.js b/node_modules/@motion-canvas/core/lib/tweening/spring.js new file mode 100644 index 0000000..3c34bc4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/spring.js @@ -0,0 +1,103 @@ +import { decorate, threadable } from '../decorators'; +import { useThread, useLogger } from '../utils'; +decorate(spring, threadable()); +export function* spring(spring, from, to, settleToleranceOrOnProgress, onProgressOrOnEnd, onEnd) { + const settleTolerance = typeof settleToleranceOrOnProgress === 'number' + ? settleToleranceOrOnProgress + : 0.001; + onEnd = + typeof settleToleranceOrOnProgress === 'number' ? onEnd : onProgressOrOnEnd; + const onProgress = (value, time) => { + if (typeof settleToleranceOrOnProgress === 'function') { + settleToleranceOrOnProgress(value, time); + } + else if (typeof onProgressOrOnEnd === 'function') { + onProgressOrOnEnd(value, time); + } + }; + spring = spring ?? { + mass: 0.05, + stiffness: 10, + damping: 0.5, + }; + if (spring.mass <= 0) { + useLogger().error(new Error('Spring mass must be greater than 0.')); + return; + } + if (spring.stiffness < 0) { + useLogger().error(new Error('Spring stiffness must be greater or equal to 0.')); + return; + } + if (spring.damping < 0) { + useLogger().error(new Error('Spring damping must be greater or equal to 0.')); + return; + } + const thread = useThread(); + let position = from; + let velocity = spring.initialVelocity ?? 0; + const update = (dt) => { + if (spring === null) { + return; + } + const positionDelta = position - to; + // Using hooks law: F=-kx; with k being the spring constant and x the offset + // to the settling position + const force = -spring.stiffness * positionDelta - spring.damping * velocity; + // Update the velocity based on the given timestep + velocity += (force / spring.mass) * dt; + position += velocity * dt; + }; + // Set simulation constant framerate + const simulationFrames = 120; + // Calculate a timestep based on on the simulation framerate + const timeStep = 1 / simulationFrames; + onProgress(from, 0); + const startTime = thread.time(); + let simulationTime = startTime; + let settled = false; + while (!settled) { + while (simulationTime < thread.fixed) { + const difference = thread.fixed - simulationTime; + if (timeStep > difference) { + update(difference); + simulationTime = thread.fixed; + } + else { + update(timeStep); + simulationTime += timeStep; + } + // Perform the check during every iteration: + if (Math.abs(to - position) < settleTolerance && + Math.abs(velocity) < settleTolerance) { + // Set the thread time to simulation time: + thread.time(simulationTime); + settled = true; + // Break out when settled + break; + } + } + // Only yield if we haven't settled yet. + if (!settled) { + onProgress(position, thread.fixed - startTime); + yield; + } + } + onProgress(to, thread.fixed - startTime); + onEnd?.(to, thread.fixed - startTime); +} +export function makeSpring(mass, stiffness, damping, initialVelocity) { + return { + mass, + stiffness, + damping, + initialVelocity, + }; +} +export const BeatSpring = makeSpring(0.13, 5.7, 1.2, 10.0); +export const PlopSpring = makeSpring(0.2, 20.0, 0.68, 0.0); +export const BounceSpring = makeSpring(0.08, 4.75, 0.05, 0.0); +export const SwingSpring = makeSpring(0.39, 19.85, 2.82, 0.0); +export const JumpSpring = makeSpring(0.04, 10.0, 0.7, 8.0); +export const StrikeSpring = makeSpring(0.03, 20.0, 0.9, 4.8); +export const SmoothSpring = makeSpring(0.16, 15.35, 1.88, 0.0); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R3ZWVuaW5nL3NwcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUk5QyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFrQi9CLE1BQU0sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUNyQixNQUFxQixFQUNyQixJQUFZLEVBQ1osRUFBVSxFQUNWLDJCQUFzRCxFQUN0RCxpQkFBb0MsRUFDcEMsS0FBd0I7SUFFeEIsTUFBTSxlQUFlLEdBQ25CLE9BQU8sMkJBQTJCLEtBQUssUUFBUTtRQUM3QyxDQUFDLENBQUMsMkJBQTJCO1FBQzdCLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFWixLQUFLO1FBQ0gsT0FBTywyQkFBMkIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFFOUUsTUFBTSxVQUFVLEdBQXFCLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ25FLElBQUksT0FBTywyQkFBMkIsS0FBSyxVQUFVLEVBQUU7WUFDckQsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO2FBQU0sSUFBSSxPQUFPLGlCQUFpQixLQUFLLFVBQVUsRUFBRTtZQUNsRCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLEdBQUcsTUFBTSxJQUFJO1FBQ2pCLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLEVBQUU7UUFDYixPQUFPLEVBQUUsR0FBRztLQUNiLENBQUM7SUFFRixJQUFJLE1BQU0sQ0FBQyxJQUFJ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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts b/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts new file mode 100644 index 0000000..412c47b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts @@ -0,0 +1,46 @@ +export interface TimingFunction { + (value: number, from?: number, to?: number): number; +} +export declare function sin(value: number, from?: number, to?: number): number; +export declare function easeInSine(value: number, from?: number, to?: number): number; +export declare function easeOutSine(value: number, from?: number, to?: number): number; +export declare function easeInOutSine(value: number, from?: number, to?: number): number; +export declare function easeInQuad(value: number, from?: number, to?: number): number; +export declare function easeOutQuad(value: number, from?: number, to?: number): number; +export declare function easeInOutQuad(value: number, from?: number, to?: number): number; +export declare function easeInCubic(value: number, from?: number, to?: number): number; +export declare function easeOutCubic(value: number, from?: number, to?: number): number; +export declare function easeInOutCubic(value: number, from?: number, to?: number): number; +export declare function easeInQuart(value: number, from?: number, to?: number): number; +export declare function easeOutQuart(value: number, from?: number, to?: number): number; +export declare function easeInOutQuart(value: number, from?: number, to?: number): number; +export declare function easeInQuint(value: number, from?: number, to?: number): number; +export declare function easeOutQuint(value: number, from?: number, to?: number): number; +export declare function easeInOutQuint(value: number, from?: number, to?: number): number; +export declare function easeInExpo(value: number, from?: number, to?: number): number; +export declare function easeOutExpo(value: number, from?: number, to?: number): number; +export declare function easeInOutExpo(value: number, from?: number, to?: number): number; +export declare function easeInCirc(value: number, from?: number, to?: number): number; +export declare function easeOutCirc(value: number, from?: number, to?: number): number; +export declare function easeInOutCirc(value: number, from?: number, to?: number): number; +export declare function createEaseInBack(s?: number): TimingFunction; +export declare function createEaseOutBack(s?: number): TimingFunction; +export declare function createEaseInOutBack(s?: number, v?: number): TimingFunction; +export declare function createEaseInElastic(s?: number): TimingFunction; +export declare function createEaseOutElastic(s?: number): TimingFunction; +export declare function createEaseInOutElastic(s?: number): TimingFunction; +export declare function createEaseInBounce(n?: number, d?: number): TimingFunction; +export declare function createEaseOutBounce(n?: number, d?: number): TimingFunction; +export declare function createEaseInOutBounce(n?: number, d?: number): TimingFunction; +export declare function linear(value: number, from?: number, to?: number): number; +export declare function cos(value: number, from?: number, to?: number): number; +export declare const easeInBack: TimingFunction; +export declare const easeOutBack: TimingFunction; +export declare const easeInOutBack: TimingFunction; +export declare const easeInBounce: TimingFunction; +export declare const easeOutBounce: TimingFunction; +export declare const easeInOutBounce: TimingFunction; +export declare const easeInElastic: TimingFunction; +export declare const easeOutElastic: TimingFunction; +export declare const easeInOutElastic: TimingFunction; +//# sourceMappingURL=timingFunctions.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts.map b/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts.map new file mode 100644 index 0000000..fdec2f6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"timingFunctions.d.ts","sourceRoot":"","sources":["../../src/tweening/timingFunctions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.js b/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.js new file mode 100644 index 0000000..68462d1 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/timingFunctions.js @@ -0,0 +1,232 @@ +import { map, remap } from './interpolationFunctions'; +/* + * All easing implementations taken from https://easings.net/ + */ +// Sine +export function sin(value, from = 0, to = 1) { + return remap(-1, 1, from, to, Math.sin(value)); +} +export function easeInSine(value, from = 0, to = 1) { + value = 1 - Math.cos((value * Math.PI) / 2); + return map(from, to, value); +} +export function easeOutSine(value, from = 0, to = 1) { + value = Math.sin((value * Math.PI) / 2); + return map(from, to, value); +} +export function easeInOutSine(value, from = 0, to = 1) { + value = -(Math.cos(Math.PI * value) - 1) / 2; + return map(from, to, value); +} +// Quadratic +export function easeInQuad(value, from = 0, to = 1) { + value = value * value; + return map(from, to, value); +} +export function easeOutQuad(value, from = 0, to = 1) { + value = 1 - Math.pow(1 - value, 2); + return map(from, to, value); +} +export function easeInOutQuad(value, from = 0, to = 1) { + value = value < 0.5 ? 2 * value * value : 1 - Math.pow(-2 * value + 2, 2) / 2; + return map(from, to, value); +} +// Cubic +export function easeInCubic(value, from = 0, to = 1) { + value = value * value * value; + return map(from, to, value); +} +export function easeOutCubic(value, from = 0, to = 1) { + value = 1 - Math.pow(1 - value, 3); + return map(from, to, value); +} +export function easeInOutCubic(value, from = 0, to = 1) { + value = + value < 0.5 + ? 4 * value * value * value + : 1 - Math.pow(-2 * value + 2, 3) / 2; + return map(from, to, value); +} +// Quartic +export function easeInQuart(value, from = 0, to = 1) { + value = value * value * value * value; + return map(from, to, value); +} +export function easeOutQuart(value, from = 0, to = 1) { + value = 1 - Math.pow(1 - value, 4); + return map(from, to, value); +} +export function easeInOutQuart(value, from = 0, to = 1) { + value = + value < 0.5 + ? 8 * value * value * value * value + : 1 - Math.pow(-2 * value + 2, 4) / 2; + return map(from, to, value); +} +// Quintic +export function easeInQuint(value, from = 0, to = 1) { + value = value * value * value * value * value; + return map(from, to, value); +} +export function easeOutQuint(value, from = 0, to = 1) { + value = 1 - Math.pow(1 - value, 5); + return map(from, to, value); +} +export function easeInOutQuint(value, from = 0, to = 1) { + value = + value < 0.5 + ? 16 * value * value * value * value * value + : 1 - Math.pow(-2 * value + 2, 5) / 2; + return map(from, to, value); +} +// Exponential +export function easeInExpo(value, from = 0, to = 1) { + value = value === 0 ? 0 : Math.pow(2, 10 * value - 10); + return map(from, to, value); +} +export function easeOutExpo(value, from = 0, to = 1) { + value = value === 1 ? 1 : 1 - Math.pow(2, -10 * value); + return map(from, to, value); +} +export function easeInOutExpo(value, from = 0, to = 1) { + value = + value === 0 + ? 0 + : value === 1 + ? 1 + : value < 0.5 + ? Math.pow(2, 20 * value - 10) / 2 + : (2 - Math.pow(2, -20 * value + 10)) / 2; + return map(from, to, value); +} +// Circular +export function easeInCirc(value, from = 0, to = 1) { + value = 1 - Math.sqrt(1 - Math.pow(value, 2)); + return map(from, to, value); +} +export function easeOutCirc(value, from = 0, to = 1) { + value = Math.sqrt(1 - Math.pow(value - 1, 2)); + return map(from, to, value); +} +export function easeInOutCirc(value, from = 0, to = 1) { + value = + value < 0.5 + ? (1 - Math.sqrt(1 - Math.pow(2 * value, 2))) / 2 + : (Math.sqrt(1 - Math.pow(-2 * value + 2, 2)) + 1) / 2; + return map(from, to, value); +} +// Back +export function createEaseInBack(s = 1.70158) { + return (value, from = 0, to = 1) => { + value = (s + 1) * value * value * value - s * value * value; + return map(from, to, value); + }; +} +export function createEaseOutBack(s = 1.70158) { + return (value, from = 0, to = 1) => { + value = 1 + (s + 1) * Math.pow(value - 1, 3) + s * Math.pow(value - 1, 2); + return map(from, to, value); + }; +} +export function createEaseInOutBack(s = 1.70158, v = 1.525) { + return (value, from = 0, to = 1) => { + value = + value < 0.5 + ? (Math.pow(2 * value, 2) * ((s * v + 1) * 2 * value - s * v)) / 2 + : (Math.pow(2 * value - 2, 2) * + ((s * v + 1) * (value * 2 - 2) + s * v) + + 2) / + 2; + return map(from, to, value); + }; +} +// Elastic +export function createEaseInElastic(s = 2.094395) { + return (value, from = 0, to = 1) => { + value = + value === 0 + ? 0 + : value === 1 + ? 1 + : -Math.pow(2, 10 * value - 10) * Math.sin((value * 10 - 10.75) * s); + return map(from, to, value); + }; +} +export function createEaseOutElastic(s = 2.094395) { + return (value, from = 0, to = 1) => { + value = + value === 0 + ? 0 + : value === 1 + ? 1 + : Math.pow(2, -10 * value) * Math.sin((value * 10 - 0.75) * s) + 1; + return map(from, to, value); + }; +} +export function createEaseInOutElastic(s = 1.39626) { + return (value, from = 0, to = 1) => { + value = + value === 0 + ? 0 + : value === 1 + ? 1 + : value < 0.5 + ? -(Math.pow(2, 20 * value - 10) * Math.sin((20 * value - 11.125) * s)) / 2 + : (Math.pow(2, -20 * value + 10) * + Math.sin((20 * value - 11.125) * s)) / + 2 + + 1; + return map(from, to, value); + }; +} +// Bounce +export function createEaseInBounce(n = 7.5625, d = 2.75) { + const easeOutBounce = createEaseOutBounce(n, d); + return (value, from = 0, to = 1) => { + return 1 - easeOutBounce(1 - value, from, to); + }; +} +export function createEaseOutBounce(n = 7.5625, d = 2.75) { + return (value, from = 0, to = 1) => { + if (value < 1 / d) { + value = n * value * value; + } + else if (value < 2 / d) { + value = n * (value -= 1.505 / d) * value + 0.75; + } + else if (value < 2.5 / d) { + value = n * (value -= 2.25 / d) * value + 0.9375; + } + else { + value = n * (value -= 2.625 / d) * value + 0.984375; + } + return map(from, to, value); + }; +} +export function createEaseInOutBounce(n = 7.5625, d = 2.75) { + const easeOutBounce = createEaseOutBounce(n, d); + return (value, from = 0, to = 1) => { + return value < 0.5 + ? (1 - easeOutBounce(1 - 2 * value, from, to)) / 2 + : (1 + easeOutBounce(2 * value - 1, from, to)) / 2; + }; +} +// Linear +export function linear(value, from = 0, to = 1) { + return map(from, to, value); +} +// Cosine +export function cos(value, from = 0, to = 1) { + return remap(-1, 1, from, to, Math.cos(value)); +} +// Sensible defaults for functions with parameters that can be user defined +export const easeInBack = createEaseInBack(); +export const easeOutBack = createEaseOutBack(); +export const easeInOutBack = createEaseInOutBack(); +export const easeInBounce = createEaseInBounce(); +export const easeOutBounce = createEaseOutBounce(); +export const easeInOutBounce = createEaseInOutBounce(); +export const easeInElastic = createEaseInElastic(); +export const easeOutElastic = createEaseOutElastic(); +export const easeInOutElastic = createEaseInOutElastic(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltaW5nRnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R3ZWVuaW5nL3RpbWluZ0Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBTXBEOztHQUVHO0FBRUgsT0FBTztBQUNQLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDakQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hELEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFNUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6RCxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFeEMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBSSxH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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/tween.d.ts b/node_modules/@motion-canvas/core/lib/tweening/tween.d.ts new file mode 100644 index 0000000..868e4b0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/tween.d.ts @@ -0,0 +1,3 @@ +import { ThreadGenerator } from '../threading'; +export declare function tween(seconds: number, onProgress: (value: number, time: number) => void, onEnd?: (value: number, time: number) => void): ThreadGenerator; +//# sourceMappingURL=tween.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/tween.d.ts.map b/node_modules/@motion-canvas/core/lib/tweening/tween.d.ts.map new file mode 100644 index 0000000..4e20524 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/tween.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"tween.d.ts","sourceRoot":"","sources":["../../src/tweening/tween.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAI7C,wBAAiB,KAAK,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,EACjD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5C,eAAe,CAmBjB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/tweening/tween.js b/node_modules/@motion-canvas/core/lib/tweening/tween.js new file mode 100644 index 0000000..7494ed1 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/tweening/tween.js @@ -0,0 +1,21 @@ +import { decorate, threadable } from '../decorators'; +import { useThread } from '../utils'; +decorate(tween, threadable()); +export function* tween(seconds, onProgress, onEnd) { + const thread = useThread(); + const startTime = thread.time(); + const endTime = thread.time() + seconds; + onProgress(0, 0); + while (endTime > thread.fixed) { + const time = thread.fixed - startTime; + const value = time / seconds; + if (time > 0) { + onProgress(value, time); + } + yield; + } + thread.time(endTime); + onProgress(1, seconds); + onEnd?.(1, seconds); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdlZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHdlZW5pbmcvdHdlZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDOUIsTUFBTSxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQ3BCLE9BQWUsRUFDZixVQUFpRCxFQUNqRCxLQUE2QztJQUU3QyxNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUUzQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUV4QyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDWixVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsS0FBSyxDQUFDO0tBQ1A7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJCLFVBQVUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/BBox.d.ts b/node_modules/@motion-canvas/core/lib/types/BBox.d.ts new file mode 100644 index 0000000..427490d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/BBox.d.ts @@ -0,0 +1,61 @@ +import { Vector2 } from './Vector'; +import { InterpolationFunction } from '../tweening'; +import { Type } from './Type'; +import { Spacing } from './Spacing'; +import { CompoundSignal, SignalValue } from '../signals'; +import { PossibleMatrix2D } from './Matrix2D'; +export type SerializedBBox = { + x: number; + y: number; + width: number; + height: number; +}; +export type PossibleBBox = SerializedBBox | [number, number, number, number] | Vector2 | undefined; +export type RectSignal = CompoundSignal; +export declare class BBox implements Type { + static readonly symbol: unique symbol; + x: number; + y: number; + width: number; + height: number; + static createSignal(initial?: SignalValue, interpolation?: InterpolationFunction): RectSignal; + static lerp(from: BBox, to: BBox, value: number | Vector2 | BBox): BBox; + static arcLerp(from: BBox, to: BBox, value: number, reverse?: boolean, ratio?: number): BBox; + static fromSizeCentered(size: Vector2): BBox; + static fromPoints(...points: Vector2[]): BBox; + static fromBBoxes(...boxes: BBox[]): BBox; + lerp(to: BBox, value: number | Vector2 | BBox): BBox; + get position(): Vector2; + set position(value: Vector2); + get size(): Vector2; + get center(): Vector2; + get left(): number; + set left(value: number); + get right(): number; + set right(value: number); + get top(): number; + set top(value: number); + get bottom(): number; + set bottom(value: number); + get topLeft(): Vector2; + get topRight(): Vector2; + get bottomLeft(): Vector2; + get bottomRight(): Vector2; + get corners(): [Vector2, Vector2, Vector2, Vector2]; + get pixelPerfect(): BBox; + constructor(); + constructor(from: PossibleBBox); + constructor(position: Vector2, size: Vector2); + constructor(x: number, y?: number, width?: number, height?: number); + transform(matrix: PossibleMatrix2D): BBox; + transformCorners(matrix: PossibleMatrix2D): Vector2[]; + expand(amount: number): BBox; + addSpacing(spacing: Spacing): BBox; + includes(point: Vector2): boolean; + intersects(other: BBox): boolean; + intersection(other: BBox): BBox; + toSymbol(): symbol; + toString(): string; + serialize(): SerializedBBox; +} +//# sourceMappingURL=BBox.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/BBox.d.ts.map b/node_modules/@motion-canvas/core/lib/types/BBox.d.ts.map new file mode 100644 index 0000000..f4bd5d5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/BBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BBox.d.ts","sourceRoot":"","sources":["../../src/types/BBox.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/BBox.js b/node_modules/@motion-canvas/core/lib/types/BBox.js new file mode 100644 index 0000000..2ffc447 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/BBox.js @@ -0,0 +1,225 @@ +import { Vector2 } from './Vector'; +import { arcLerp, map } from '../tweening'; +import { CompoundSignalContext } from '../signals'; +export class BBox { + static createSignal(initial, interpolation = BBox.lerp) { + return new CompoundSignalContext(['x', 'y', 'width', 'height'], (value) => new BBox(value), initial, interpolation).toSignal(); + } + static lerp(from, to, value) { + let valueX; + let valueY; + let valueWidth; + let valueHeight; + if (typeof value === 'number') { + valueX = valueY = valueWidth = valueHeight = value; + } + else if (value instanceof Vector2) { + valueX = valueWidth = value.x; + valueY = valueHeight = value.y; + } + else { + valueX = value.x; + valueY = value.y; + valueWidth = value.width; + valueHeight = value.height; + } + return new BBox(map(from.x, to.x, valueX), map(from.y, to.y, valueY), map(from.width, to.width, valueWidth), map(from.height, to.height, valueHeight)); + } + static arcLerp(from, to, value, reverse = false, ratio) { + ratio ?? (ratio = (from.position.sub(to.position).ctg + from.size.sub(to.size).ctg) / 2); + return BBox.lerp(from, to, arcLerp(value, reverse, ratio)); + } + static fromSizeCentered(size) { + return new BBox(-size.width / 2, -size.height / 2, size.width, size.height); + } + static fromPoints(...points) { + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + for (const point of points) { + if (point.x > maxX) { + maxX = point.x; + } + if (point.x < minX) { + minX = point.x; + } + if (point.y > maxY) { + maxY = point.y; + } + if (point.y < minY) { + minY = point.y; + } + } + return new BBox(minX, minY, maxX - minX, maxY - minY); + } + static fromBBoxes(...boxes) { + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + for (const box of boxes) { + const right = box.x + box.width; + if (right > maxX) { + maxX = right; + } + if (box.x < minX) { + minX = box.x; + } + const bottom = box.y + box.height; + if (bottom > maxY) { + maxY = bottom; + } + if (box.y < minY) { + minY = box.y; + } + } + return new BBox(minX, minY, maxX - minX, maxY - minY); + } + lerp(to, value) { + return BBox.lerp(this, to, value); + } + get position() { + return new Vector2(this.x, this.y); + } + set position(value) { + this.x = value.x; + this.y = value.y; + } + get size() { + return new Vector2(this.width, this.height); + } + get center() { + return new Vector2(this.x + this.width / 2, this.y + this.height / 2); + } + get left() { + return this.x; + } + set left(value) { + this.width += this.x - value; + this.x = value; + } + get right() { + return this.x + this.width; + } + set right(value) { + this.width = value - this.x; + } + get top() { + return this.y; + } + set top(value) { + this.height += this.y - value; + this.y = value; + } + get bottom() { + return this.y + this.height; + } + set bottom(value) { + this.height = value - this.y; + } + get topLeft() { + return this.position; + } + get topRight() { + return new Vector2(this.x + this.width, this.y); + } + get bottomLeft() { + return new Vector2(this.x, this.y + this.height); + } + get bottomRight() { + return new Vector2(this.x + this.width, this.y + this.height); + } + get corners() { + return [this.topLeft, this.topRight, this.bottomRight, this.bottomLeft]; + } + get pixelPerfect() { + return new BBox(Math.floor(this.x), Math.floor(this.y), Math.ceil(this.width + 1), Math.ceil(this.height + 1)); + } + constructor(one, two = 0, three = 0, four = 0) { + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + if (one === undefined || one === null) { + return; + } + if (typeof one === 'number') { + this.x = one; + this.y = two; + this.width = three; + this.height = four; + return; + } + if (one instanceof Vector2) { + this.x = one.x; + this.y = one.y; + if (two instanceof Vector2) { + this.width = two.x; + this.height = two.y; + } + return; + } + if (Array.isArray(one)) { + this.x = one[0]; + this.y = one[1]; + this.width = one[2]; + this.height = one[3]; + return; + } + this.x = one.x; + this.y = one.y; + this.width = one.width; + this.height = one.height; + } + transform(matrix) { + return new BBox(this.position.transformAsPoint(matrix), this.size.transform(matrix)); + } + transformCorners(matrix) { + return this.corners.map(corner => corner.transformAsPoint(matrix)); + } + expand(amount) { + return new BBox(this.x - amount, this.y - amount, this.width + amount * 2, this.height + amount * 2); + } + addSpacing(spacing) { + const result = new BBox(this); + result.left -= spacing.left; + result.top -= spacing.top; + result.right += spacing.right; + result.bottom += spacing.bottom; + return result; + } + includes(point) { + return (point.x >= this.x && + point.x <= this.x + this.width && + point.y >= this.y && + point.y <= this.y + this.height); + } + intersects(other) { + return (this.left < other.right && + this.right > other.left && + this.top < other.bottom && + this.bottom > other.top); + } + intersection(other) { + const bbox = new BBox(); + if (this.intersects(other)) { + bbox.left = Math.max(this.left, other.left); + bbox.top = Math.max(this.top, other.top); + bbox.right = Math.min(this.right, other.right); + bbox.bottom = Math.min(this.bottom, other.bottom); + } + return bbox; + } + toSymbol() { + return BBox.symbol; + } + toString() { + return `BBox(${this.x}, ${this.y}, ${this.width}, ${this.height})`; + } + serialize() { + return { x: this.x, y: this.y, width: this.width, height: this.height }; + } +} +BBox.symbol = Symbol.for('@motion-canvas/core/types/Rect'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQkJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9CQm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFDLE9BQU8sRUFBeUIsR0FBRyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBR2hFLE9BQU8sRUFBaUIscUJBQXFCLEVBQWMsTUFBTSxZQUFZLENBQUM7QUF1QjlFLE1BQU0sT0FBTyxJQUFJO0lBUVIsTUFBTSxDQUFDLFlBQVksQ0FDeEIsT0FBbUMsRUFDbkMsZ0JBQTZDLElBQUksQ0FBQyxJQUFJO1FBRXRELE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFDN0IsQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDeEMsT0FBTyxFQUNQLGFBQWEsQ0FDZCxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLElBQVUsRUFDVixFQUFRLEVBQ1IsS0FBOEI7UUFFOUIsSUFBSSxNQUFNLENBQUM7UUFDWCxJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksVUFBVSxDQUFDO1FBQ2YsSUFBSSxXQUFXLENBQUM7UUFDaEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUNwRDthQUFNLElBQUksS0FBSyxZQUFZLE9BQU8sRUFBRTtZQUNuQyxNQUFNLEdBQUcsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxNQUFNLEdBQUcsS0FBSyxDQUFD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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Canvas.d.ts b/node_modules/@motion-canvas/core/lib/types/Canvas.d.ts new file mode 100644 index 0000000..d6f7e48 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Canvas.d.ts @@ -0,0 +1,3 @@ +export type CanvasColorSpace = 'srgb' | 'display-p3'; +export type CanvasOutputMimeType = 'image/png' | 'image/jpeg' | 'image/webp'; +//# sourceMappingURL=Canvas.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Canvas.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Canvas.d.ts.map new file mode 100644 index 0000000..460040a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Canvas.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../src/types/Canvas.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AACrD,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Canvas.js b/node_modules/@motion-canvas/core/lib/types/Canvas.js new file mode 100644 index 0000000..dfcd211 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Canvas.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL0NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Color.d.ts b/node_modules/@motion-canvas/core/lib/types/Color.d.ts new file mode 100644 index 0000000..cebc38b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Color.d.ts @@ -0,0 +1,41 @@ +import { Color } from 'chroma-js'; +import type { Type } from './Type'; +import type { InterpolationFunction } from '../tweening'; +import { Signal, SignalValue } from '../signals'; +export type SerializedColor = string; +export type PossibleColor = SerializedColor | number | Color | { + r: number; + g: number; + b: number; + a: number; +}; +export type ColorSignal = Signal; +declare module 'chroma-js' { + interface Color extends Type { + serialize(): string; + lerp(to: ColorInterface | string, value: number, colorSpace?: ColorSpace): ColorInterface; + } + type ColorInterface = import('chroma-js').Color; + type ColorSpace = import('chroma-js').InterpolationMode; + interface ColorStatic { + symbol: symbol; + lerp(from: ColorInterface | string | null, to: ColorInterface | string | null, value: number, colorSpace?: ColorSpace): ColorInterface; + createLerp(colorSpace: ColorSpace): InterpolationFunction; + createSignal(initial?: SignalValue, interpolation?: InterpolationFunction): ColorSignal; + } + interface ChromaStatic { + Color: ColorStatic & (new (color: PossibleColor) => ColorInterface); + } +} +/** + * Represents a color. + * + * @remarks + * This is the same class as the one created by + * {@link https://gka.github.io/chroma.js/ | chroma.js}. Check out their + * documentation for more information on how to use it. + */ +type ExtendedColor = Color; +declare const ExtendedColor: typeof Color; +export { ExtendedColor as Color }; +//# sourceMappingURL=Color.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Color.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Color.d.ts.map new file mode 100644 index 0000000..4f6369d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Color.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../src/types/Color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAqC,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AACvD,OAAO,EAAC,MAAM,EAAiB,WAAW,EAAC,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,MAAM,GACN,KAAK,GACL;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAEjD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAE7D,OAAO,QAAQ,WAAW,CAAC;IACzB,UAAU,KAAM,SAAQ,IAAI;QAC1B,SAAS,IAAI,MAAM,CAAC;QACpB,IAAI,CACF,EAAE,EAAE,cAAc,GAAG,MAAM,EAC3B,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,UAAU,GACtB,cAAc,CAAC;KACnB;IACD,KAAK,cAAc,GAAG,OAAO,WAAW,EAAE,KAAK,CAAC;IAChD,KAAK,UAAU,GAAG,OAAO,WAAW,EAAE,iBAAiB,CAAC;IACxD,UAAU,WAAW;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CACF,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,EACpC,EAAE,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,EAClC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,UAAU,GACtB,cAAc,CAAC;QAClB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAC1E,YAAY,CACV,OAAO,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,EACpC,aAAa,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC,GACpD,WAAW,CAAC,IAAI,CAAC,CAAC;KACtB;IACD,UAAU,YAAY;QAEpB,KAAK,EAAE,WAAW,GAAG,CAAC,KAAK,KAAK,EAAE,aAAa,KAAK,cAAc,CAAC,CAAC;KACrE;CACF;AAED;;;;;;;GAOG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B,QAAA,MAAM,aAAa,EAAE,OAAO,KAoExB,CAAC;AAEL,OAAO,EAAC,aAAa,IAAI,KAAK,EAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Color.js b/node_modules/@motion-canvas/core/lib/types/Color.js new file mode 100644 index 0000000..129ea3f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Color.js @@ -0,0 +1,42 @@ +import { Color, mix } from 'chroma-js'; +import { SignalContext } from '../signals'; +// iife prevents tree shaking from stripping our methods. +const ExtendedColor = (() => { + Color.symbol = Color.prototype.symbol = Symbol.for('@motion-canvas/core/types/Color'); + Color.lerp = Color.prototype.lerp = (from, to, value, colorSpace = 'lch') => { + if (typeof from === 'string') { + from = new Color(from); + } + if (typeof to === 'string') { + to = new Color(to); + } + const fromIsColor = from instanceof Color; + const toIsColor = to instanceof Color; + if (!fromIsColor) { + from = toIsColor ? to.alpha(0) : new Color('rgba(0, 0, 0, 0)'); + } + if (!toIsColor) { + to = fromIsColor + ? from.alpha(0) + : new Color('rgba(0, 0, 0, 0)'); + } + return mix(from, to, value, colorSpace); + }; + Color.createLerp = Color.prototype.createLerp = + (colorSpace) => (from, to, value) => Color.lerp(from, to, value, colorSpace); + Color.createSignal = (initial, interpolation = Color.lerp) => { + return new SignalContext(initial, interpolation, undefined, value => new Color(value)).toSignal(); + }; + Color.prototype.toSymbol = () => { + return Color.symbol; + }; + Color.prototype.serialize = function () { + return this.css(); + }; + Color.prototype.lerp = function (to, value, colorSpace) { + return Color.lerp(this, to, value, colorSpace); + }; + return Color; +})(); +export { ExtendedColor as Color }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ29sb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBaUMsR0FBRyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBR3BFLE9BQU8sRUFBUyxhQUFhLEVBQWMsTUFBTSxZQUFZLENBQUM7QUFvRDlELHlEQUF5RDtBQUN6RCxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxHQUFHLEVBQUU7SUFDeEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUNoRCxpQ0FBaUMsQ0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FDbEMsSUFBMkIsRUFDM0IsRUFBeUIsRUFDekIsS0FBYSxFQUNiLGFBQWdDLEtBQUssRUFDckMsRUFBRTtRQUNGLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVCLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO1lBQzFCLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwQjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxLQUFLLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxZQUFZLEtBQUssQ0FBQztRQUV0QyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsRUFBRSxHQUFHLFdBQVc7Z0JBQ2QsQ0FBQyxDQUFFLElBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVO1FBQzNDLENBQUMsVUFBNkIsRUFBRSxFQUFFLENBQ2xDLENBQUMsSUFBMkIsRUFBRSxFQUF5QixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ3hFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFNUMsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUNuQixPQUFvQyxFQUNwQyxnQkFBOEMsS0FBSyxDQUFDLElBQUksRUFDckMsRUFBRTtRQUNyQixPQUFPLElBQUksYUFBYSxDQUN0QixPQUFPLEVBQ1AsYUFBYSxFQUNiLFNBQVMsRUFDVCxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFO1FBQzlCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRztRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUVyQixFQUFTLEVBQ1QsS0FBYSxFQUNiLFVBQXVCO1FBRXZCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFTCxPQUFPLEVBQUMsYUFBYSxJQUFJLEtBQUssRUFBQyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Matrix.d.ts b/node_modules/@motion-canvas/core/lib/types/Matrix.d.ts new file mode 100644 index 0000000..de87ca3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Matrix.d.ts @@ -0,0 +1,3 @@ +export declare function transformAngle(angle: number, matrix: DOMMatrix): number; +export declare function transformScalar(scalar: number, matrix: DOMMatrix): number; +//# sourceMappingURL=Matrix.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Matrix.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Matrix.d.ts.map new file mode 100644 index 0000000..a8a9ffb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Matrix.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Matrix.d.ts","sourceRoot":"","sources":["../../src/types/Matrix.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAE9D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAEhE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Matrix.js b/node_modules/@motion-canvas/core/lib/types/Matrix.js new file mode 100644 index 0000000..fcb77ef --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Matrix.js @@ -0,0 +1,8 @@ +import { Vector2 } from './Vector'; +export function transformAngle(angle, matrix) { + return Vector2.fromDegrees(angle).transform(matrix).degrees; +} +export function transformScalar(scalar, matrix) { + return Vector2.magnitude(matrix.m11, matrix.m12) * scalar; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL01hdHJpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBYSxFQUFFLE1BQWlCO0lBQzdELE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzlELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWMsRUFBRSxNQUFpQjtJQUMvRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzVELENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts b/node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts new file mode 100644 index 0000000..81dc311 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts @@ -0,0 +1,361 @@ +import { Type } from './Type'; +import { PossibleVector2, Vector2 } from './Vector'; +export type PossibleMatrix2D = Matrix2D | DOMMatrix | [number, number, number, number, number, number] | [PossibleVector2, PossibleVector2, PossibleVector2] | undefined; +/** + * A specialized 2x3 Matrix representing a 2D transformation. + * + * A Matrix2D contains six elements defined as + * [a, b, + * c, d, + * tx, ty] + * + * This is a shortcut for a 3x3 matrix of the form + * [a, b, 0, + * c, d, 0 + * tx, ty, 1] + * + * Note that because a Matrix2D ignores the z-values of each component vectors, + * it does not satisfy all properties of a "real" 3x3 matrix. + * + * - A Matrix2D has no transpose + * - A(B + C) = AB + AC does not hold for a Matrix2D + * - (rA)^-1 = r^-1 A^-1, r != 0 does not hold for a Matrix2D + * - r(AB) = (rA)B = A(rB) does not hold for a Matrix2D + */ +export declare class Matrix2D implements Type { + static readonly symbol: unique symbol; + readonly values: Float32Array; + static readonly identity: Matrix2D; + static readonly zero: Matrix2D; + static fromRotation(angle: number): Matrix2D; + static fromTranslation(translation: PossibleVector2): Matrix2D; + static fromScaling(scale: PossibleVector2): Matrix2D; + get x(): Vector2; + get y(): Vector2; + get scaleX(): number; + set scaleX(value: number); + get skewX(): number; + set skewX(value: number); + get scaleY(): number; + set scaleY(value: number); + get skewY(): number; + set skewY(value: number); + get translateX(): number; + set translateX(value: number); + get translateY(): number; + set translateY(value: number); + get rotation(): number; + set rotation(angle: number); + get translation(): Vector2; + set translation(translation: PossibleVector2); + get scaling(): Vector2; + set scaling(value: PossibleVector2); + /** + * Get the inverse of the matrix. + * + * @remarks + * If the matrix is not invertible, i.e. its determinant is `0`, this will + * return `null`, instead. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const inverse = matrix.inverse; + * // => Matrix2D( + * // [-2, 1], + * // [1.5, -0.5], + * // [1, -2], + * // ) + * ``` + */ + get inverse(): Matrix2D | null; + /** + * Get the determinant of the matrix. + */ + get determinant(): number; + get domMatrix(): DOMMatrix; + constructor(); + constructor(matrix: PossibleMatrix2D); + constructor(x: PossibleVector2, y: PossibleVector2, z: PossibleVector2); + constructor(a: number, b: number, c: number, d: number, tx: number, ty: number); + /** + * Get the nth component vector of the matrix. Only defined for 0, 1, and 2. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 0], + * [0, 0], + * [1, 0], + * ); + * + * const x = matrix.column(0); + * // Vector2(1, 0) + * + * const y = matrix.column(1); + * // Vector2(0, 0) + * + * const z = matrix.column(1); + * // Vector2(1, 0) + * ``` + * + * @param index - The index of the component vector to retrieve. + */ + column(index: number): Vector2; + /** + * Returns the nth row of the matrix. Only defined for 0 and 1. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 0], + * [0, 0], + * [1, 0], + * ); + * + * const firstRow = matrix.column(0); + * // [1, 0, 1] + * + * const secondRow = matrix.column(1); + * // [0, 0, 0] + * ``` + * + * @param index - The index of the row to retrieve. + */ + row(index: number): [number, number, number]; + /** + * Returns the matrix product of this matrix with the provided matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [0, 1], + * [1, 1], + * ); + * const b = new Matrix2D( + * [2, 1], + * [1, 1], + * [1, 1], + * ); + * + * const result = a.mul(b); + * // => Matrix2D( + * // [2, 5], + * // [1, 3], + * // [2, 4], + * // ) + * ``` + * + * @param other - The matrix to multiply with + */ + mul(other: Matrix2D): Matrix2D; + /** + * Rotate the matrix by the provided angle. By default, the angle is + * provided in degrees. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result = a.rotate(90); + * // => Matrix2D( + * // [3, 4], + * // [-1, -2], + * // [5, 6], + * // ) + * + * // Provide the angle in radians + * const result = a.rotate(Math.PI * 0.5, true); + * // => Matrix2D( + * // [3, 4], + * // [-1, -2], + * // [5, 6], + * // ) + * ``` + * + * @param angle - The angle by which to rotate the matrix. + * @param degrees - Whether the angle is provided in degrees. + */ + rotate(angle: number, degrees?: boolean): Matrix2D; + /** + * Scale the x and y component vectors of the matrix. + * + * @remarks + * If `vec` is provided as a vector, the x and y component vectors of the + * matrix will be scaled by the x and y parts of the vector, respectively. + * + * If `vec` is provided as a scalar, the x and y component vectors will be + * scaled uniformly by this factor. + * + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.scale([2, 3]); + * // => new Matrix2D( + * // [2, 4], + * // [9, 12], + * // [5, 6], + * // ) + * + * const result2 = matrix.scale(2); + * // => new Matrix2D( + * // [2, 4], + * // [6, 8], + * // [5, 6], + * // ) + * ``` + * + * @param vec - The factor by which to scale the matrix + */ + scale(vec: PossibleVector2): Matrix2D; + /** + * Multiply each value of the matrix by a scalar. + * + * * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.mulScalar(2); + * // => new Matrix2D( + * // [2, 4], + * // [6, 8], + * // [10, 12], + * // ) + * ``` + * + * @param s - The value by which to scale each term + */ + mulScalar(s: number): Matrix2D; + /** + * Translate the matrix by the dimensions of the provided vector. + * + * @remarks + * If `vec` is provided as a scalar, matrix will be translated uniformly + * by this factor. + * + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.translate([2, 3]); + * // => new Matrix2D( + * // [1, 2], + * // [3, 4], + * // [16, 22], + * // ) + * + * const result2 = matrix.translate(2); + * // => new Matrix2D( + * // [1, 2], + * // [3, 4], + * // [13, 18], + * // ) + * ``` + * + * @param vec - The vector by which to translate the matrix + */ + translate(vec: PossibleVector2): Matrix2D; + /** + * Add the provided matrix to this matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * const a = new Matrix2D( + * [7, 8], + * [9, 10], + * [11, 12], + * ); + * + * const result = a.add(b); + * // => Matrix2D( + * // [8, 10], + * // [12, 14], + * // [16, 18], + * // ) + * ``` + * + * @param other - The matrix to add + */ + add(other: Matrix2D): Matrix2D; + /** + * Subtract the provided matrix from this matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * const a = new Matrix2D( + * [7, 8], + * [9, 10], + * [11, 12], + * ); + * + * const result = a.sub(b); + * // => Matrix2D( + * // [-6, -6], + * // [-6, -6], + * // [-6, -6], + * // ) + * ``` + * + * @param other - The matrix to subract + */ + sub(other: Matrix2D): Matrix2D; + toSymbol(): symbol; + equals(other: Matrix2D, threshold?: number): boolean; + exactlyEquals(other: Matrix2D): boolean; +} +//# sourceMappingURL=Matrix2D.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts.map new file mode 100644 index 0000000..eb590cd --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Matrix2D.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Matrix2D.d.ts","sourceRoot":"","sources":["../../src/types/Matrix2D.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Matrix2D.js b/node_modules/@motion-canvas/core/lib/types/Matrix2D.js new file mode 100644 index 0000000..c2076a6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Matrix2D.js @@ -0,0 +1,551 @@ +import { EPSILON } from './Type'; +import { Vector2 } from './Vector'; +import { DEG2RAD } from '../utils'; +/** + * A specialized 2x3 Matrix representing a 2D transformation. + * + * A Matrix2D contains six elements defined as + * [a, b, + * c, d, + * tx, ty] + * + * This is a shortcut for a 3x3 matrix of the form + * [a, b, 0, + * c, d, 0 + * tx, ty, 1] + * + * Note that because a Matrix2D ignores the z-values of each component vectors, + * it does not satisfy all properties of a "real" 3x3 matrix. + * + * - A Matrix2D has no transpose + * - A(B + C) = AB + AC does not hold for a Matrix2D + * - (rA)^-1 = r^-1 A^-1, r != 0 does not hold for a Matrix2D + * - r(AB) = (rA)B = A(rB) does not hold for a Matrix2D + */ +export class Matrix2D { + static fromRotation(angle) { + return Matrix2D.identity.rotate(angle); + } + static fromTranslation(translation) { + return Matrix2D.identity.translate(new Vector2(translation)); + } + static fromScaling(scale) { + return Matrix2D.identity.scale(new Vector2(scale)); + } + get x() { + return new Vector2(this.values[0], this.values[1]); + } + get y() { + return new Vector2(this.values[2], this.values[3]); + } + get scaleX() { + return this.values[0]; + } + set scaleX(value) { + this.values[0] = this.x.normalized.scale(value).x; + } + get skewX() { + return this.values[1]; + } + set skewX(value) { + this.values[1] = value; + } + get scaleY() { + return this.values[3]; + } + set scaleY(value) { + this.values[3] = this.y.normalized.scale(value).y; + } + get skewY() { + return this.values[2]; + } + set skewY(value) { + this.values[2] = value; + } + get translateX() { + return this.values[4]; + } + set translateX(value) { + this.values[4] = value; + } + get translateY() { + return this.values[5]; + } + set translateY(value) { + this.values[5] = value; + } + get rotation() { + return Vector2.degrees(this.values[0], this.values[1]); + } + set rotation(angle) { + const result = this.rotate(angle - this.rotation); + this.values[0] = result.values[0]; + this.values[1] = result.values[1]; + this.values[2] = result.values[2]; + this.values[3] = result.values[3]; + } + get translation() { + return new Vector2(this.values[4], this.values[5]); + } + set translation(translation) { + const vec = new Vector2(translation); + this.values[4] = vec.x; + this.values[5] = vec.y; + } + get scaling() { + return new Vector2(this.values[0], this.values[3]); + } + set scaling(value) { + const scale = new Vector2(value); + const x = new Vector2(this.values[0], this.values[1]).normalized; + const y = new Vector2(this.values[2], this.values[3]).normalized; + this.values[0] = x.x * scale.x; + this.values[1] = x.y * scale.y; + this.values[2] = y.x * scale.x; + this.values[3] = y.y * scale.y; + } + /** + * Get the inverse of the matrix. + * + * @remarks + * If the matrix is not invertible, i.e. its determinant is `0`, this will + * return `null`, instead. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const inverse = matrix.inverse; + * // => Matrix2D( + * // [-2, 1], + * // [1.5, -0.5], + * // [1, -2], + * // ) + * ``` + */ + get inverse() { + const aa = this.values[0], ab = this.values[1], ac = this.values[2], ad = this.values[3]; + const atx = this.values[4], aty = this.values[5]; + let det = aa * ad - ab * ac; + if (!det) { + return null; + } + det = 1.0 / det; + return new Matrix2D(ad * det, -ab * det, -ac * det, aa * det, (ac * aty - ad * atx) * det, (ab * atx - aa * aty) * det); + } + /** + * Get the determinant of the matrix. + */ + get determinant() { + return this.values[0] * this.values[3] - this.values[1] * this.values[2]; + } + get domMatrix() { + return new DOMMatrix([ + this.values[0], + this.values[1], + this.values[2], + this.values[3], + this.values[4], + this.values[5], + ]); + } + constructor(a, b, c, d, tx, ty) { + this.values = new Float32Array(6); + if (arguments.length === 0) { + this.values = new Float32Array([1, 0, 0, 1, 0, 0]); + return; + } + if (arguments.length === 6) { + this.values[0] = a; + this.values[1] = b; + this.values[2] = c; + this.values[3] = d; + this.values[4] = tx; + this.values[5] = ty; + return; + } + if (a instanceof DOMMatrix) { + this.values[0] = a.m11; + this.values[1] = a.m12; + this.values[2] = a.m21; + this.values[3] = a.m22; + this.values[4] = a.m41; + this.values[5] = a.m42; + return; + } + if (a instanceof Matrix2D) { + this.values = a.values; + return; + } + if (Array.isArray(a)) { + if (a.length === 2) { + this.values[0] = a[0]; + this.values[1] = a[1]; + this.values[2] = b[0]; + this.values[3] = b[1]; + this.values[4] = c[0]; + this.values[5] = c[1]; + return; + } + if (a.length === 3) { + const x = new Vector2(a[0]); + const y = new Vector2(a[1]); + const z = new Vector2(a[2]); + this.values[0] = x.x; + this.values[1] = x.y; + this.values[2] = y.x; + this.values[3] = y.y; + this.values[4] = z.x; + this.values[5] = z.y; + return; + } + this.values[0] = a[0]; + this.values[1] = a[1]; + this.values[2] = a[2]; + this.values[3] = a[3]; + this.values[4] = a[4]; + this.values[5] = a[5]; + return; + } + const x = new Vector2(a); + const y = new Vector2(b); + const z = new Vector2(c); + this.values[0] = x.x; + this.values[1] = x.y; + this.values[2] = y.x; + this.values[3] = y.y; + this.values[4] = z.x; + this.values[5] = z.y; + } + /** + * Get the nth component vector of the matrix. Only defined for 0, 1, and 2. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 0], + * [0, 0], + * [1, 0], + * ); + * + * const x = matrix.column(0); + * // Vector2(1, 0) + * + * const y = matrix.column(1); + * // Vector2(0, 0) + * + * const z = matrix.column(1); + * // Vector2(1, 0) + * ``` + * + * @param index - The index of the component vector to retrieve. + */ + column(index) { + return new Vector2(this.values[index * 2], this.values[index * 2 + 1]); + } + /** + * Returns the nth row of the matrix. Only defined for 0 and 1. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 0], + * [0, 0], + * [1, 0], + * ); + * + * const firstRow = matrix.column(0); + * // [1, 0, 1] + * + * const secondRow = matrix.column(1); + * // [0, 0, 0] + * ``` + * + * @param index - The index of the row to retrieve. + */ + row(index) { + return [this.values[index], this.values[index + 2], this.values[index + 4]]; + } + /** + * Returns the matrix product of this matrix with the provided matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [0, 1], + * [1, 1], + * ); + * const b = new Matrix2D( + * [2, 1], + * [1, 1], + * [1, 1], + * ); + * + * const result = a.mul(b); + * // => Matrix2D( + * // [2, 5], + * // [1, 3], + * // [2, 4], + * // ) + * ``` + * + * @param other - The matrix to multiply with + */ + mul(other) { + const a0 = this.values[0], a1 = this.values[1], a2 = this.values[2], a3 = this.values[3], a4 = this.values[4], a5 = this.values[5]; + const b0 = other.values[0], b1 = other.values[1], b2 = other.values[2], b3 = other.values[3], b4 = other.values[4], b5 = other.values[5]; + return new Matrix2D(a0 * b0 + a2 * b1, a1 * b0 + a3 * b1, a0 * b2 + a2 * b3, a1 * b2 + a3 * b3, a0 * b4 + a2 * b5 + a4, a1 * b4 + a3 * b5 + a5); + } + /** + * Rotate the matrix by the provided angle. By default, the angle is + * provided in degrees. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result = a.rotate(90); + * // => Matrix2D( + * // [3, 4], + * // [-1, -2], + * // [5, 6], + * // ) + * + * // Provide the angle in radians + * const result = a.rotate(Math.PI * 0.5, true); + * // => Matrix2D( + * // [3, 4], + * // [-1, -2], + * // [5, 6], + * // ) + * ``` + * + * @param angle - The angle by which to rotate the matrix. + * @param degrees - Whether the angle is provided in degrees. + */ + rotate(angle, degrees = true) { + if (degrees) { + angle *= DEG2RAD; + } + const a0 = this.values[0], a1 = this.values[1], a2 = this.values[2], a3 = this.values[3], a4 = this.values[4], a5 = this.values[5]; + const s = Math.sin(angle); + const c = Math.cos(angle); + return new Matrix2D(a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c, a4, a5); + } + /** + * Scale the x and y component vectors of the matrix. + * + * @remarks + * If `vec` is provided as a vector, the x and y component vectors of the + * matrix will be scaled by the x and y parts of the vector, respectively. + * + * If `vec` is provided as a scalar, the x and y component vectors will be + * scaled uniformly by this factor. + * + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.scale([2, 3]); + * // => new Matrix2D( + * // [2, 4], + * // [9, 12], + * // [5, 6], + * // ) + * + * const result2 = matrix.scale(2); + * // => new Matrix2D( + * // [2, 4], + * // [6, 8], + * // [5, 6], + * // ) + * ``` + * + * @param vec - The factor by which to scale the matrix + */ + scale(vec) { + const v = new Vector2(vec); + return new Matrix2D(this.values[0] * v.x, this.values[1] * v.x, this.values[2] * v.y, this.values[3] * v.y, this.values[4], this.values[5]); + } + /** + * Multiply each value of the matrix by a scalar. + * + * * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.mulScalar(2); + * // => new Matrix2D( + * // [2, 4], + * // [6, 8], + * // [10, 12], + * // ) + * ``` + * + * @param s - The value by which to scale each term + */ + mulScalar(s) { + return new Matrix2D(this.values[0] * s, this.values[1] * s, this.values[2] * s, this.values[3] * s, this.values[4] * s, this.values[5] * s); + } + /** + * Translate the matrix by the dimensions of the provided vector. + * + * @remarks + * If `vec` is provided as a scalar, matrix will be translated uniformly + * by this factor. + * + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.translate([2, 3]); + * // => new Matrix2D( + * // [1, 2], + * // [3, 4], + * // [16, 22], + * // ) + * + * const result2 = matrix.translate(2); + * // => new Matrix2D( + * // [1, 2], + * // [3, 4], + * // [13, 18], + * // ) + * ``` + * + * @param vec - The vector by which to translate the matrix + */ + translate(vec) { + const v = new Vector2(vec); + return new Matrix2D(this.values[0], this.values[1], this.values[2], this.values[3], this.values[0] * v.x + this.values[2] * v.y + this.values[4], this.values[1] * v.x + this.values[3] * v.y + this.values[5]); + } + /** + * Add the provided matrix to this matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * const a = new Matrix2D( + * [7, 8], + * [9, 10], + * [11, 12], + * ); + * + * const result = a.add(b); + * // => Matrix2D( + * // [8, 10], + * // [12, 14], + * // [16, 18], + * // ) + * ``` + * + * @param other - The matrix to add + */ + add(other) { + return new Matrix2D(this.values[0] + other.values[0], this.values[1] + other.values[1], this.values[2] + other.values[2], this.values[3] + other.values[3], this.values[4] + other.values[4], this.values[5] + other.values[5]); + } + /** + * Subtract the provided matrix from this matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * const a = new Matrix2D( + * [7, 8], + * [9, 10], + * [11, 12], + * ); + * + * const result = a.sub(b); + * // => Matrix2D( + * // [-6, -6], + * // [-6, -6], + * // [-6, -6], + * // ) + * ``` + * + * @param other - The matrix to subract + */ + sub(other) { + return new Matrix2D(this.values[0] - other.values[0], this.values[1] - other.values[1], this.values[2] - other.values[2], this.values[3] - other.values[3], this.values[4] - other.values[4], this.values[5] - other.values[5]); + } + toSymbol() { + return Matrix2D.symbol; + } + equals(other, threshold = EPSILON) { + return (Math.abs(this.values[0] - other.values[0]) <= + threshold + Number.EPSILON && + Math.abs(this.values[1] - other.values[1]) <= + threshold + Number.EPSILON && + Math.abs(this.values[2] - other.values[2]) <= + threshold + Number.EPSILON && + Math.abs(this.values[3] - other.values[3]) <= + threshold + Number.EPSILON && + Math.abs(this.values[4] - other.values[4]) <= + threshold + Number.EPSILON && + Math.abs(this.values[5] - other.values[5]) <= threshold + Number.EPSILON); + } + exactlyEquals(other) { + return (this.values[0] === other.values[0] && + this.values[1] === other.values[1] && + this.values[2] === other.values[2] && + this.values[3] === other.values[3] && + this.values[4] === other.values[4] && + this.values[5] === other.values[5]); + } +} +Matrix2D.symbol = Symbol.for('@motion-canvas/core/types/Matrix2D'); +Matrix2D.identity = new Matrix2D(1, 0, 0, 1, 0, 0); +Matrix2D.zero = new Matrix2D(0, 0, 0, 0, 0, 0); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0cml4MkQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvTWF0cml4MkQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQWtCLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBU2pDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBU1osTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBNEI7UUFDeEQsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQXNCO1FBQzlDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBVyxDQUFDO1FBQ1YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBVyxDQUFDO1FBQ1YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJ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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE9BQU87U0FDUjtRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLENBQW9CLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FzQkc7SUFDSSxNQUFNLENBQUMsS0FBYTtRQUN6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QUFDLENBQUMsQ0FBQyxFQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDakMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2Qkc7SUFDSSxHQUFHLENBQUMsS0FBZTtRQUN4QixPQUFPLElBQUksUUFBUSxDQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNq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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Origin.d.ts b/node_modules/@motion-canvas/core/lib/types/Origin.d.ts new file mode 100644 index 0000000..44a95c6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Origin.d.ts @@ -0,0 +1,37 @@ +import { Vector2 } from './Vector'; +export declare enum Center { + Vertical = 1, + Horizontal = 2 +} +export declare enum Direction { + Top = 4, + Bottom = 8, + Left = 16, + Right = 32 +} +export declare enum Origin { + Middle = 3, + Top = 5, + Bottom = 9, + Left = 18, + Right = 34, + TopLeft = 20, + TopRight = 36, + BottomLeft = 24, + BottomRight = 40 +} +export declare function flipOrigin(origin: Direction, axis?: Center): Direction; +export declare function flipOrigin(origin: Origin, axis?: Center): Origin; +/** + * Convert the given origin to a vector representing its offset. + * + * @example + * ```ts + * const bottomRight = originToOffset(Origin.TopRight); + * // bottomRight = {x: 1, y: -1} + * ``` + * + * @param origin - The origin to convert. + */ +export declare function originToOffset(origin: Origin | Direction): Vector2; +//# sourceMappingURL=Origin.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Origin.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Origin.d.ts.map new file mode 100644 index 0000000..8ac9cb3 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Origin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Origin.d.ts","sourceRoot":"","sources":["../../src/types/Origin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAEjC,oBAAY,MAAM;IAChB,QAAQ,IAAI;IACZ,UAAU,IAAI;CACf;AAED,oBAAY,SAAS;IACnB,GAAG,IAAI;IACP,MAAM,IAAI;IACV,IAAI,KAAK;IACT,KAAK,KAAK;CACX;AAED,oBAAY,MAAM;IAChB,MAAM,IAAI;IACV,GAAG,IAAI;IACP,MAAM,IAAI;IACV,IAAI,KAAK;IACT,KAAK,KAAK;IACV,OAAO,KAAK;IACZ,QAAQ,KAAK;IACb,UAAU,KAAK;IACf,WAAW,KAAK;CACjB;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;AACxE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAwBlE;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAoBlE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Origin.js b/node_modules/@motion-canvas/core/lib/types/Origin.js new file mode 100644 index 0000000..bfbb1d4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Origin.js @@ -0,0 +1,76 @@ +import { Vector2 } from './Vector'; +export var Center; +(function (Center) { + Center[Center["Vertical"] = 1] = "Vertical"; + Center[Center["Horizontal"] = 2] = "Horizontal"; +})(Center || (Center = {})); +export var Direction; +(function (Direction) { + Direction[Direction["Top"] = 4] = "Top"; + Direction[Direction["Bottom"] = 8] = "Bottom"; + Direction[Direction["Left"] = 16] = "Left"; + Direction[Direction["Right"] = 32] = "Right"; +})(Direction || (Direction = {})); +export var Origin; +(function (Origin) { + Origin[Origin["Middle"] = 3] = "Middle"; + Origin[Origin["Top"] = 5] = "Top"; + Origin[Origin["Bottom"] = 9] = "Bottom"; + Origin[Origin["Left"] = 18] = "Left"; + Origin[Origin["Right"] = 34] = "Right"; + Origin[Origin["TopLeft"] = 20] = "TopLeft"; + Origin[Origin["TopRight"] = 36] = "TopRight"; + Origin[Origin["BottomLeft"] = 24] = "BottomLeft"; + Origin[Origin["BottomRight"] = 40] = "BottomRight"; +})(Origin || (Origin = {})); +export function flipOrigin(origin, axis = Center.Horizontal | Center.Vertical) { + if (axis & Center.Vertical) { + if (origin & Direction.Top) { + origin = (origin & ~Direction.Top) | Direction.Bottom; + } + else if (origin & Direction.Bottom) { + origin = (origin & ~Direction.Bottom) | Direction.Top; + } + } + if (axis & Center.Horizontal) { + if (origin & Direction.Left) { + origin = (origin & ~Direction.Left) | Direction.Right; + } + else if (origin & Direction.Right) { + origin = (origin & ~Direction.Right) | Direction.Left; + } + } + return origin; +} +/** + * Convert the given origin to a vector representing its offset. + * + * @example + * ```ts + * const bottomRight = originToOffset(Origin.TopRight); + * // bottomRight = {x: 1, y: -1} + * ``` + * + * @param origin - The origin to convert. + */ +export function originToOffset(origin) { + if (origin === Origin.Middle) { + return Vector2.zero; + } + let x = 0; + if (origin & Direction.Left) { + x = -1; + } + else if (origin & Direction.Right) { + x = 1; + } + let y = 0; + if (origin & Direction.Top) { + y = -1; + } + else if (origin & Direction.Bottom) { + y = 1; + } + return new Vector2(x, y); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JpZ2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL09yaWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE1BQU0sQ0FBTixJQUFZLE1BR1g7QUFIRCxXQUFZLE1BQU07SUFDaEIsMkNBQVksQ0FBQTtJQUNaLCtDQUFjLENBQUE7QUFDaEIsQ0FBQyxFQUhXLE1BQU0sS0FBTixNQUFNLFFBR2pCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQix1Q0FBTyxDQUFBO0lBQ1AsNkNBQVUsQ0FBQTtJQUNWLDBDQUFTLENBQUE7SUFDVCw0Q0FBVSxDQUFBO0FBQ1osQ0FBQyxFQUxXLFNBQVMsS0FBVCxTQUFTLFFBS3BCO0FBRUQsTUFBTSxDQUFOLElBQVksTUFVWDtBQVZELFdBQVksTUFBTTtJQUNoQix1Q0FBVSxDQUFBO0lBQ1YsaUNBQU8sQ0FBQTtJQUNQLHVDQUFVLENBQUE7SUFDVixvQ0FBUyxDQUFBO0lBQ1Qsc0NBQVUsQ0FBQTtJQUNWLDBDQUFZLENBQUE7SUFDWiw0Q0FBYSxDQUFBO0lBQ2IsZ0RBQWUsQ0FBQTtJQUNmLGtEQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFWVyxNQUFNLEtBQU4sTUFBTSxRQVVqQjtBQUlELE1BQU0sVUFBVSxVQUFVLENBQ3hCLE1BQTBCLEVBQzFCLE9BQWUsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUTtJQUVsRCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQzFCLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDdkQ7YUFBTSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQ3BDLE1BQU0sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1NBQ3ZEO0tBQ0Y7SUFFRCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQzVCLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDM0IsTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7U0FDdkQ7YUFBTSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQ25DLE1BQU0sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQ3ZEO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBMEI7SUFDdkQsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDckI7SUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFO1FBQzNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNSO1NBQU0sSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRTtRQUNuQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1A7SUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQzFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNSO1NBQU0sSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRTtRQUNwQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1A7SUFFRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Spacing.d.ts b/node_modules/@motion-canvas/core/lib/types/Spacing.d.ts new file mode 100644 index 0000000..d90677b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Spacing.d.ts @@ -0,0 +1,35 @@ +import { InterpolationFunction } from '../tweening'; +import { Type } from './Type'; +import { CompoundSignal, SignalValue } from '../signals'; +export type SerializedSpacing = { + top: number; + right: number; + bottom: number; + left: number; +}; +export type PossibleSpacing = SerializedSpacing | number | [number, number] | [number, number, number] | [number, number, number, number] | undefined; +export type SpacingSignal = CompoundSignal; +export declare class Spacing implements Type { + static readonly symbol: unique symbol; + top: number; + right: number; + bottom: number; + left: number; + static createSignal(initial?: SignalValue, interpolation?: InterpolationFunction): SpacingSignal; + static lerp(from: Spacing, to: Spacing, value: number): Spacing; + get x(): number; + get y(): number; + constructor(); + constructor(from: PossibleSpacing); + constructor(all: number); + constructor(vertical: number, horizontal: number); + constructor(top: number, horizontal: number, bottom: number); + constructor(top: number, right: number, bottom: number, left: number); + lerp(to: Spacing, value: number): Spacing; + scale(value: number): Spacing; + addScalar(value: number): Spacing; + toSymbol(): symbol; + toString(): string; + serialize(): SerializedSpacing; +} +//# sourceMappingURL=Spacing.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Spacing.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Spacing.d.ts.map new file mode 100644 index 0000000..98821bf --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Spacing.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Spacing.d.ts","sourceRoot":"","sources":["../../src/types/Spacing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAM,MAAM,aAAa,CAAC;AACvD,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,cAAc,EAAyB,WAAW,EAAC,MAAM,YAAY,CAAC;AAE9E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,MAAM,GACN,CAAC,MAAM,EAAE,MAAM,CAAC,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,SAAS,CAAC;AAEd,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,cAAc,CAC3C,eAAe,EACf,OAAO,EACP,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EACnC,CAAC,CACF,CAAC;AAEF,qBAAa,OAAQ,YAAW,IAAI;IAClC,gBAAuB,MAAM,gBAE3B;IAEK,GAAG,SAAK;IACR,KAAK,SAAK;IACV,MAAM,SAAK;IACX,IAAI,SAAK;WAEF,YAAY,CACxB,OAAO,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,EACtC,aAAa,GAAE,qBAAqB,CAAC,OAAO,CAAgB,GAC3D,aAAa,CAAC,IAAI,CAAC;WASR,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAStE,IAAW,CAAC,IAAI,MAAM,CAErB;IAED,IAAW,CAAC,IAAI,MAAM,CAErB;;gBAGkB,IAAI,EAAE,eAAe;gBACrB,GAAG,EAAE,MAAM;gBACX,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;gBACpC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;gBAC/C,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAgCpE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IAI/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAS7B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASjC,QAAQ,IAAI,MAAM;IAIlB,QAAQ;IAIR,SAAS,IAAI,iBAAiB;CAQtC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Spacing.js b/node_modules/@motion-canvas/core/lib/types/Spacing.js new file mode 100644 index 0000000..ed601e8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Spacing.js @@ -0,0 +1,67 @@ +import { map } from '../tweening'; +import { CompoundSignalContext } from '../signals'; +export class Spacing { + static createSignal(initial, interpolation = Spacing.lerp) { + return new CompoundSignalContext(['top', 'right', 'bottom', 'left'], (value) => new Spacing(value), initial, interpolation).toSignal(); + } + static lerp(from, to, value) { + return new Spacing(map(from.top, to.top, value), map(from.right, to.right, value), map(from.bottom, to.bottom, value), map(from.left, to.left, value)); + } + get x() { + return this.left + this.right; + } + get y() { + return this.top + this.bottom; + } + constructor(one = 0, two, three, four) { + this.top = 0; + this.right = 0; + this.bottom = 0; + this.left = 0; + if (one === undefined || one === null) { + return; + } + if (Array.isArray(one)) { + four = one[3]; + three = one[2]; + two = one[1]; + one = one[0]; + } + if (typeof one === 'number') { + this.top = one; + this.right = two !== undefined ? two : one; + this.bottom = three !== undefined ? three : one; + this.left = four !== undefined ? four : two !== undefined ? two : one; + return; + } + this.top = one.top; + this.right = one.right; + this.bottom = one.bottom; + this.left = one.left; + } + lerp(to, value) { + return Spacing.lerp(this, to, value); + } + scale(value) { + return new Spacing(this.top * value, this.right * value, this.bottom * value, this.left * value); + } + addScalar(value) { + return new Spacing(this.top + value, this.right + value, this.bottom + value, this.left + value); + } + toSymbol() { + return Spacing.symbol; + } + toString() { + return `Spacing(${this.top}, ${this.right}, ${this.bottom}, ${this.left})`; + } + serialize() { + return { + top: this.top, + right: this.right, + bottom: this.bottom, + left: this.left, + }; + } +} +Spacing.symbol = Symbol.for('@motion-canvas/core/types/Spacing'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9TcGFjaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsR0FBRyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXZELE9BQU8sRUFBaUIscUJBQXFCLEVBQWMsTUFBTSxZQUFZLENBQUM7QUF3QjlFLE1BQU0sT0FBTyxPQUFPO0lBVVgsTUFBTSxDQUFDLFlBQVksQ0FDeEIsT0FBc0MsRUFDdEMsZ0JBQWdELE9BQU8sQ0FBQyxJQUFJO1FBRTVELE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDbEMsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFDOUMsT0FBTyxFQUNQLGFBQWEsQ0FDZCxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBYSxFQUFFLEVBQVcsRUFBRSxLQUFhO1FBQzFELE9BQU8sSUFBSSxPQUFPLENBQ2hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxDQUFDO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJ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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Type.d.ts b/node_modules/@motion-canvas/core/lib/types/Type.d.ts new file mode 100644 index 0000000..fede765 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Type.d.ts @@ -0,0 +1,6 @@ +export declare const EPSILON = 0.000001; +export interface Type { + toSymbol(): symbol; +} +export declare function isType(value: any): value is Type; +//# sourceMappingURL=Type.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Type.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Type.d.ts.map new file mode 100644 index 0000000..ba92f9b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Type.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../src/types/Type.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,MAAM,WAAW,IAAI;IACnB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,CAEhD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Type.js b/node_modules/@motion-canvas/core/lib/types/Type.js new file mode 100644 index 0000000..4894b87 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Type.js @@ -0,0 +1,5 @@ +export const EPSILON = 0.000001; +export function isType(value) { + return value && typeof value === 'object' && 'toSymbol' in value; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9UeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFNaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUFVO0lBQy9CLE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDO0FBQ25FLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Vector.d.ts b/node_modules/@motion-canvas/core/lib/types/Vector.d.ts new file mode 100644 index 0000000..04018e2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Vector.d.ts @@ -0,0 +1,188 @@ +import { InterpolationFunction } from '../tweening'; +import { Direction, Origin } from './Origin'; +import { Type } from './Type'; +import { CompoundSignal, Signal, SignalValue } from '../signals'; +import { PossibleMatrix2D } from './Matrix2D'; +export type SerializedVector2 = { + x: T; + y: T; +}; +export type PossibleVector2 = SerializedVector2 | { + width: T; + height: T; +} | T | [T, T] | undefined; +export type Vector2Signal = CompoundSignal; +export type SimpleVector2Signal = Signal; +/** + * Represents a two-dimensional vector. + */ +export declare class Vector2 implements Type { + static readonly symbol: unique symbol; + static readonly zero: Vector2; + static readonly one: Vector2; + static readonly right: Vector2; + static readonly left: Vector2; + static readonly up: Vector2; + static readonly down: Vector2; + x: number; + y: number; + static createSignal(initial?: SignalValue, interpolation?: InterpolationFunction, owner?: any): Vector2Signal; + static lerp(from: Vector2, to: Vector2, value: number | Vector2): Vector2; + static arcLerp(from: Vector2, to: Vector2, value: number, reverse?: boolean, ratio?: number): Vector2; + static createArcLerp(reverse?: boolean, ratio?: number): (from: Vector2, to: Vector2, value: number) => Vector2; + /** + * Interpolates between two vectors on the polar plane by interpolating + * the angles and magnitudes of the vectors individually. + * + * @param from - The starting vector. + * @param to - The target vector. + * @param value - The t-value of the interpolation. + * @param counterclockwise - Whether the vector should get rotated + * counterclockwise. Defaults to `false`. + * @param origin - The center of rotation. Defaults to the origin. + * + * @remarks + * This function is useful when used in conjunction with {@link rotate} to + * animate an object's position on a circular arc (see examples). + * + * @example + * Animating an object in a circle around the origin + * ```tsx + * circle().position( + * circle().position().rotate(180), + * 1, + * easeInOutCubic, + * Vector2.polarLerp + * ); + * ``` + * @example + * Rotating an object around the point `[-200, 100]` + * ```ts + * circle().position( + * circle().position().rotate(180, [-200, 100]), + * 1, + * easeInOutCubic, + * Vector2.createPolarLerp(false, [-200, 100]), + * ); + * ``` + * @example + * Rotating an object counterclockwise around the origin + * ```ts + * circle().position( + * circle().position().rotate(180), + * 1, + * easeInOutCubic, + * Vector2.createPolarLerp(true), + * ); + * ``` + */ + static polarLerp(from: Vector2, to: Vector2, value: number, counterclockwise?: boolean, origin?: Vector2): Vector2; + /** + * Helper function to create a {@link Vector2.polarLerp} interpolation + * function with additional parameters. + * + * @param counterclockwise - Whether the point should get rotated + * counterclockwise. + * @param center - The center of rotation. Defaults to the origin. + */ + static createPolarLerp(counterclockwise?: boolean, center?: PossibleVector2): (from: Vector2, to: Vector2, value: number) => Vector2; + static fromOrigin(origin: Origin | Direction): Vector2; + static fromScalar(value: number): Vector2; + static fromRadians(radians: number): Vector2; + static fromDegrees(degrees: number): Vector2; + /** + * Return the angle in radians between the vector described by x and y and the + * positive x-axis. + * + * @param x - The x component of the vector. + * @param y - The y component of the vector. + */ + static radians(x: number, y: number): number; + /** + * Return the angle in degrees between the vector described by x and y and the + * positive x-axis. + * + * @param x - The x component of the vector. + * @param y - The y component of the vector. + * + * @remarks + * The returned angle will be between -180 and 180 degrees. + */ + static degrees(x: number, y: number): number; + static magnitude(x: number, y: number): number; + static squaredMagnitude(x: number, y: number): number; + static angleBetween(u: Vector2, v: Vector2): number; + get width(): number; + set width(value: number); + get height(): number; + set height(value: number); + get magnitude(): number; + get squaredMagnitude(): number; + get normalized(): Vector2; + get safe(): Vector2; + get flipped(): Vector2; + get floored(): Vector2; + get perpendicular(): Vector2; + /** + * Return the angle in radians between the vector and the positive x-axis. + */ + get radians(): number; + /** + * Return the angle in degrees between the vector and the positive x-axis. + * + * @remarks + * The returned angle will be between -180 and 180 degrees. + */ + get degrees(): number; + get ctg(): number; + constructor(); + constructor(from: PossibleVector2); + constructor(x: number, y: number); + lerp(to: Vector2, value: Vector2 | number): Vector2; + getOriginOffset(origin: Origin | Direction): Vector2; + scale(value: number): Vector2; + transformAsPoint(matrix: PossibleMatrix2D): Vector2; + transform(matrix: PossibleMatrix2D): Vector2; + mul(possibleVector: PossibleVector2): Vector2; + div(possibleVector: PossibleVector2): Vector2; + add(possibleVector: PossibleVector2): Vector2; + sub(possibleVector: PossibleVector2): Vector2; + dot(possibleVector: PossibleVector2): number; + cross(possibleVector: PossibleVector2): number; + mod(possibleVector: PossibleVector2): Vector2; + /** + * Rotates the vector around a point by the provided angle. + * + * @param angle - The angle by which to rotate in degrees. + * @param center - The center of rotation. Defaults to the origin. + */ + rotate(angle: number, center?: PossibleVector2): Vector2; + addX(value: number): Vector2; + addY(value: number): Vector2; + toSymbol(): symbol; + toString(): string; + serialize(): SerializedVector2; + /** + * Check if two vectors are exactly equal to each other. + * + * @remarks + * If you need to compensate for floating point inaccuracies, use the + * {@link equals} method, instead. + * + * @param other - The vector to compare. + */ + exactlyEquals(other: Vector2): boolean; + /** + * Check if two vectors are equal to each other. + * + * @remarks + * This method allows passing an allowed error margin when comparing vectors + * to compensate for floating point inaccuracies. To check if two vectors are + * exactly equal, use the {@link exactlyEquals} method, instead. + * + * @param other - The vector to compare. + * @param threshold - The allowed error threshold when comparing the vectors. + */ + equals(other: Vector2, threshold?: number): boolean; +} +//# sourceMappingURL=Vector.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Vector.d.ts.map b/node_modules/@motion-canvas/core/lib/types/Vector.d.ts.map new file mode 100644 index 0000000..c36cfff --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Vector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vector.d.ts","sourceRoot":"","sources":["../../src/types/Vector.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/Vector.js b/node_modules/@motion-canvas/core/lib/types/Vector.js new file mode 100644 index 0000000..5c668cb --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/Vector.js @@ -0,0 +1,351 @@ +import { arcLerp } from '../tweening'; +import { clamp, map } from '../tweening/interpolationFunctions'; +import { Direction, Origin } from './Origin'; +import { EPSILON } from './Type'; +import { CompoundSignalContext, } from '../signals'; +import { DEG2RAD, RAD2DEG } from '../utils'; +import { Matrix2D } from './Matrix2D'; +/** + * Represents a two-dimensional vector. + */ +export class Vector2 { + static createSignal(initial, interpolation = Vector2.lerp, owner) { + return new CompoundSignalContext(['x', 'y'], (value) => new Vector2(value), initial, interpolation, owner).toSignal(); + } + static lerp(from, to, value) { + let valueX; + let valueY; + if (typeof value === 'number') { + valueX = valueY = value; + } + else { + valueX = value.x; + valueY = value.y; + } + return new Vector2(map(from.x, to.x, valueX), map(from.y, to.y, valueY)); + } + static arcLerp(from, to, value, reverse = false, ratio) { + ratio ?? (ratio = from.sub(to).ctg); + return Vector2.lerp(from, to, arcLerp(value, reverse, ratio)); + } + static createArcLerp(reverse, ratio) { + return (from, to, value) => Vector2.arcLerp(from, to, value, reverse, ratio); + } + /** + * Interpolates between two vectors on the polar plane by interpolating + * the angles and magnitudes of the vectors individually. + * + * @param from - The starting vector. + * @param to - The target vector. + * @param value - The t-value of the interpolation. + * @param counterclockwise - Whether the vector should get rotated + * counterclockwise. Defaults to `false`. + * @param origin - The center of rotation. Defaults to the origin. + * + * @remarks + * This function is useful when used in conjunction with {@link rotate} to + * animate an object's position on a circular arc (see examples). + * + * @example + * Animating an object in a circle around the origin + * ```tsx + * circle().position( + * circle().position().rotate(180), + * 1, + * easeInOutCubic, + * Vector2.polarLerp + * ); + * ``` + * @example + * Rotating an object around the point `[-200, 100]` + * ```ts + * circle().position( + * circle().position().rotate(180, [-200, 100]), + * 1, + * easeInOutCubic, + * Vector2.createPolarLerp(false, [-200, 100]), + * ); + * ``` + * @example + * Rotating an object counterclockwise around the origin + * ```ts + * circle().position( + * circle().position().rotate(180), + * 1, + * easeInOutCubic, + * Vector2.createPolarLerp(true), + * ); + * ``` + */ + static polarLerp(from, to, value, counterclockwise = false, origin = Vector2.zero) { + from = from.sub(origin); + to = to.sub(origin); + const fromAngle = from.degrees; + let toAngle = to.degrees; + const isCounterclockwise = fromAngle > toAngle; + if (isCounterclockwise !== counterclockwise) { + toAngle = toAngle + (counterclockwise ? -360 : 360); + } + const angle = map(fromAngle, toAngle, value) * DEG2RAD; + const magnitude = map(from.magnitude, to.magnitude, value); + return new Vector2(magnitude * Math.cos(angle) + origin.x, magnitude * Math.sin(angle) + origin.y); + } + /** + * Helper function to create a {@link Vector2.polarLerp} interpolation + * function with additional parameters. + * + * @param counterclockwise - Whether the point should get rotated + * counterclockwise. + * @param center - The center of rotation. Defaults to the origin. + */ + static createPolarLerp(counterclockwise = false, center = Vector2.zero) { + return (from, to, value) => Vector2.polarLerp(from, to, value, counterclockwise, new Vector2(center)); + } + static fromOrigin(origin) { + const position = new Vector2(); + if (origin === Origin.Middle) { + return position; + } + if (origin & Direction.Left) { + position.x = -1; + } + else if (origin & Direction.Right) { + position.x = 1; + } + if (origin & Direction.Top) { + position.y = -1; + } + else if (origin & Direction.Bottom) { + position.y = 1; + } + return position; + } + static fromScalar(value) { + return new Vector2(value, value); + } + static fromRadians(radians) { + return new Vector2(Math.cos(radians), Math.sin(radians)); + } + static fromDegrees(degrees) { + return Vector2.fromRadians(degrees * DEG2RAD); + } + /** + * Return the angle in radians between the vector described by x and y and the + * positive x-axis. + * + * @param x - The x component of the vector. + * @param y - The y component of the vector. + */ + static radians(x, y) { + return Math.atan2(y, x); + } + /** + * Return the angle in degrees between the vector described by x and y and the + * positive x-axis. + * + * @param x - The x component of the vector. + * @param y - The y component of the vector. + * + * @remarks + * The returned angle will be between -180 and 180 degrees. + */ + static degrees(x, y) { + return Vector2.radians(x, y) * RAD2DEG; + } + static magnitude(x, y) { + return Math.sqrt(x * x + y * y); + } + static squaredMagnitude(x, y) { + return x * x + y * y; + } + static angleBetween(u, v) { + return (Math.acos(clamp(-1, 1, u.dot(v) / (u.magnitude * v.magnitude))) * + (u.cross(v) >= 0 ? 1 : -1)); + } + get width() { + return this.x; + } + set width(value) { + this.x = value; + } + get height() { + return this.y; + } + set height(value) { + this.y = value; + } + get magnitude() { + return Vector2.magnitude(this.x, this.y); + } + get squaredMagnitude() { + return Vector2.squaredMagnitude(this.x, this.y); + } + get normalized() { + return this.scale(1 / Vector2.magnitude(this.x, this.y)); + } + get safe() { + return new Vector2(isNaN(this.x) ? 0 : this.x, isNaN(this.y) ? 0 : this.y); + } + get flipped() { + return new Vector2(-this.x, -this.y); + } + get floored() { + return new Vector2(Math.floor(this.x), Math.floor(this.y)); + } + get perpendicular() { + return new Vector2(this.y, -this.x); + } + /** + * Return the angle in radians between the vector and the positive x-axis. + */ + get radians() { + return Vector2.radians(this.x, this.y); + } + /** + * Return the angle in degrees between the vector and the positive x-axis. + * + * @remarks + * The returned angle will be between -180 and 180 degrees. + */ + get degrees() { + return Vector2.degrees(this.x, this.y); + } + get ctg() { + return this.x / this.y; + } + constructor(one, two) { + this.x = 0; + this.y = 0; + if (one === undefined || one === null) { + return; + } + if (typeof one !== 'object') { + this.x = one; + this.y = two ?? one; + return; + } + if (Array.isArray(one)) { + this.x = one[0]; + this.y = one[1]; + return; + } + if ('width' in one) { + this.x = one.width; + this.y = one.height; + return; + } + this.x = one.x; + this.y = one.y; + } + lerp(to, value) { + return Vector2.lerp(this, to, value); + } + getOriginOffset(origin) { + const offset = Vector2.fromOrigin(origin); + offset.x *= this.x / 2; + offset.y *= this.y / 2; + return offset; + } + scale(value) { + return new Vector2(this.x * value, this.y * value); + } + transformAsPoint(matrix) { + const m = new Matrix2D(matrix); + return new Vector2(this.x * m.scaleX + this.y * m.skewY + m.translateX, this.x * m.skewX + this.y * m.scaleY + m.translateY); + } + transform(matrix) { + const m = new Matrix2D(matrix); + return new Vector2(this.x * m.scaleX + this.y * m.skewY, this.x * m.skewX + this.y * m.scaleY); + } + mul(possibleVector) { + const vector = new Vector2(possibleVector); + return new Vector2(this.x * vector.x, this.y * vector.y); + } + div(possibleVector) { + const vector = new Vector2(possibleVector); + return new Vector2(this.x / vector.x, this.y / vector.y); + } + add(possibleVector) { + const vector = new Vector2(possibleVector); + return new Vector2(this.x + vector.x, this.y + vector.y); + } + sub(possibleVector) { + const vector = new Vector2(possibleVector); + return new Vector2(this.x - vector.x, this.y - vector.y); + } + dot(possibleVector) { + const vector = new Vector2(possibleVector); + return this.x * vector.x + this.y * vector.y; + } + cross(possibleVector) { + const vector = new Vector2(possibleVector); + return this.x * vector.y - this.y * vector.x; + } + mod(possibleVector) { + const vector = new Vector2(possibleVector); + return new Vector2(this.x % vector.x, this.y % vector.y); + } + /** + * Rotates the vector around a point by the provided angle. + * + * @param angle - The angle by which to rotate in degrees. + * @param center - The center of rotation. Defaults to the origin. + */ + rotate(angle, center = Vector2.zero) { + const originVector = new Vector2(center); + const matrix = Matrix2D.fromTranslation(originVector) + .rotate(angle) + .translate(originVector.flipped); + return this.transformAsPoint(matrix); + } + addX(value) { + return new Vector2(this.x + value, this.y); + } + addY(value) { + return new Vector2(this.x, this.y + value); + } + toSymbol() { + return Vector2.symbol; + } + toString() { + return `Vector2(${this.x}, ${this.y})`; + } + serialize() { + return { x: this.x, y: this.y }; + } + /** + * Check if two vectors are exactly equal to each other. + * + * @remarks + * If you need to compensate for floating point inaccuracies, use the + * {@link equals} method, instead. + * + * @param other - The vector to compare. + */ + exactlyEquals(other) { + return this.x === other.x && this.y === other.y; + } + /** + * Check if two vectors are equal to each other. + * + * @remarks + * This method allows passing an allowed error margin when comparing vectors + * to compensate for floating point inaccuracies. To check if two vectors are + * exactly equal, use the {@link exactlyEquals} method, instead. + * + * @param other - The vector to compare. + * @param threshold - The allowed error threshold when comparing the vectors. + */ + equals(other, threshold = EPSILON) { + return (Math.abs(this.x - other.x) <= threshold + Number.EPSILON && + Math.abs(this.y - other.y) <= threshold + Number.EPSILON); + } +} +Vector2.symbol = Symbol.for('@motion-canvas/core/types/Vector2'); +Vector2.zero = new Vector2(); +Vector2.one = new Vector2(1, 1); +Vector2.right = new Vector2(1, 0); +Vector2.left = new Vector2(-1, 0); +Vector2.up = new Vector2(0, 1); +Vector2.down = new Vector2(0, -1); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL1ZlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUF3QixNQUFNLGFBQWEsQ0FBQztBQUMzRCxPQUFPLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxPQUFPLEVBQU8sTUFBTSxRQUFRLENBQUM7QUFDckMsT0FBTyxFQUVMLHFCQUFxQixHQUd0QixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsUUFBUSxFQUFtQixNQUFNLFlBQVksQ0FBQztBQXVCdEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQWVYLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLE9BQXNDLEVBQ3RDLGdCQUFnRCxPQUFPLENBQUMsSUFBSSxFQUM1RCxLQUFXO1FBRVgsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFDVixDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUM5QyxPQUFPLEVBQ1AsYUFBYSxFQUNiLEtBQUssQ0FDTixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBYSxFQUFFLEVBQVcsRUFBRSxLQUF1QjtRQUNwRSxJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksTUFBTSxDQUFDO1FBRVgsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDekI7YUFBTTtZQUNMLE1BQU0sR0FB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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/index.d.ts b/node_modules/@motion-canvas/core/lib/types/index.d.ts new file mode 100644 index 0000000..b33d77f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/index.d.ts @@ -0,0 +1,15 @@ +/** + * Complex types used in animations. + * + * @packageDocumentation + */ +export * from './Canvas'; +export * from './Color'; +export * from './Matrix'; +export * from './Matrix2D'; +export * from './Origin'; +export * from './BBox'; +export * from './Spacing'; +export * from './Type'; +export * from './Vector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/index.d.ts.map b/node_modules/@motion-canvas/core/lib/types/index.d.ts.map new file mode 100644 index 0000000..81ea24f --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/types/index.js b/node_modules/@motion-canvas/core/lib/types/index.js new file mode 100644 index 0000000..410d7d5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/types/index.js @@ -0,0 +1,15 @@ +/** + * Complex types used in animations. + * + * @packageDocumentation + */ +export * from './Canvas'; +export * from './Color'; +export * from './Matrix'; +export * from './Matrix2D'; +export * from './Origin'; +export * from './BBox'; +export * from './Spacing'; +export * from './Type'; +export * from './Vector'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts b/node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts new file mode 100644 index 0000000..83ef705 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts @@ -0,0 +1,5 @@ +export declare class DetailedError extends Error { + readonly remarks?: string | undefined; + constructor(message: string, remarks?: string | undefined); +} +//# sourceMappingURL=DetailedError.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts.map new file mode 100644 index 0000000..3fe2100 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/DetailedError.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DetailedError.d.ts","sourceRoot":"","sources":["../../src/utils/DetailedError.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;aACc,OAAO,CAAC;gBAAzC,OAAO,EAAE,MAAM,EAAkB,OAAO,CAAC,oBAAQ;CAGrE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/DetailedError.js b/node_modules/@motion-canvas/core/lib/utils/DetailedError.js new file mode 100644 index 0000000..68869bc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/DetailedError.js @@ -0,0 +1,7 @@ +export class DetailedError extends Error { + constructor(message, remarks) { + super(message); + this.remarks = remarks; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGV0YWlsZWRFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9EZXRhaWxlZEVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxhQUFjLFNBQVEsS0FBSztJQUN0QyxZQUFtQixPQUFlLEVBQWtCLE9BQWdCO1FBQ2xFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURtQyxZQUFPLEdBQVAsT0FBTyxDQUFTO0lBRXBFLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts b/node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts new file mode 100644 index 0000000..8925ca0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts @@ -0,0 +1,12 @@ +/** + * A simple semaphore implementation with a capacity of 1. + * + * @internal + */ +export declare class Semaphore { + private resolveCurrent; + private current; + acquire(): Promise; + release(): void; +} +//# sourceMappingURL=Semaphore.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts.map new file mode 100644 index 0000000..91d572d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/Semaphore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Semaphore.d.ts","sourceRoot":"","sources":["../../src/utils/Semaphore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,OAAO,CAA8B;IAEhC,OAAO;IASb,OAAO;CAKf"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/Semaphore.js b/node_modules/@motion-canvas/core/lib/utils/Semaphore.js new file mode 100644 index 0000000..86acaa5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/Semaphore.js @@ -0,0 +1,25 @@ +/** + * A simple semaphore implementation with a capacity of 1. + * + * @internal + */ +export class Semaphore { + constructor() { + this.resolveCurrent = null; + this.current = null; + } + async acquire() { + while (this.current) { + await this.current; + } + this.current = new Promise(resolve => { + this.resolveCurrent = resolve; + }); + } + release() { + this.current = null; + this.resolveCurrent?.(); + this.resolveCurrent = null; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VtYXBob3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1NlbWFwaG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFBdEI7UUFDVSxtQkFBYyxHQUF3QixJQUFJLENBQUM7UUFDM0MsWUFBTyxHQUF5QixJQUFJLENBQUM7SUFnQi9DLENBQUM7SUFkUSxLQUFLLENBQUMsT0FBTztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbkIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts b/node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts new file mode 100644 index 0000000..9ea5fe5 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts @@ -0,0 +1,3 @@ +import type { ThreadGenerator } from '../threading'; +export declare function beginSlide(name: string): ThreadGenerator; +//# sourceMappingURL=beginSlide.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts.map new file mode 100644 index 0000000..e094591 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/beginSlide.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"beginSlide.d.ts","sourceRoot":"","sources":["../../src/utils/beginSlide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD,wBAAiB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CASzD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/beginSlide.js b/node_modules/@motion-canvas/core/lib/utils/beginSlide.js new file mode 100644 index 0000000..c2c164e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/beginSlide.js @@ -0,0 +1,12 @@ +import { useScene } from './useScene'; +import { useThread } from './useThread'; +export function* beginSlide(name) { + const { slides } = useScene(); + const thread = useThread(); + slides.register(name, thread.fixed); + yield; + while (slides.shouldWait(name)) { + yield; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVnaW5TbGlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9iZWdpblNsaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUV0QyxNQUFNLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFZO0lBQ3RDLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsS0FBSyxDQUFDO0lBRU4sT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLEtBQUssQ0FBQztLQUNQO0FBQ0gsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts b/node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts new file mode 100644 index 0000000..225f305 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts @@ -0,0 +1,2 @@ +export declare function capitalize(value: T): Capitalize; +//# sourceMappingURL=capitalize.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts.map new file mode 100644 index 0000000..39dfe3c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/capitalize.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"capitalize.d.ts","sourceRoot":"","sources":["../../src/utils/capitalize.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEpE"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/capitalize.js b/node_modules/@motion-canvas/core/lib/utils/capitalize.js new file mode 100644 index 0000000..80a2c47 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/capitalize.js @@ -0,0 +1,4 @@ +export function capitalize(value) { + return (value[0].toUpperCase() + value.slice(1)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGl6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jYXBpdGFsaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQW1CLEtBQVE7SUFDbkQsT0FBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRef.d.ts b/node_modules/@motion-canvas/core/lib/utils/createRef.d.ts new file mode 100644 index 0000000..e23a75b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRef.d.ts @@ -0,0 +1,15 @@ +export interface ReferenceReceiver { + (reference: T): void; +} +export interface Reference extends ReferenceReceiver { + (): T; +} +export declare function createRef(): Reference; +export declare function makeRef(object: TObject, key: TKey): ReferenceReceiver; +export type RefsProperty = TValue extends (config: { + refs?: infer TReference; +}) => void ? TReference : never; +export declare function makeRefs void>(): RefsProperty; +//# sourceMappingURL=createRef.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRef.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/createRef.d.ts.map new file mode 100644 index 0000000..93ddcca --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRef.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createRef.d.ts","sourceRoot":"","sources":["../../src/utils/createRef.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC;CACP;AAED,wBAAgB,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAW3C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,MAAM,OAAO,EACzD,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,IAAI,GACR,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAIlC;AAED,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE;IACzD,IAAI,CAAC,EAAE,MAAM,UAAU,CAAC;CACzB,KAAK,IAAI,GACN,UAAU,GACV,KAAK,CAAC;AAEV,wBAAgB,QAAQ,CACtB,CAAC,SAAS,CAAC,MAAM,EAAE;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAC,KAAK,IAAI,KACrC,YAAY,CAAC,CAAC,CAAC,CAEnB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRef.js b/node_modules/@motion-canvas/core/lib/utils/createRef.js new file mode 100644 index 0000000..d25c07d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRef.js @@ -0,0 +1,21 @@ +export function createRef() { + let value; + const ref = (newValue) => { + if (newValue !== undefined) { + value = newValue; + } + else { + return value; + } + }; + return ref; +} +export function makeRef(object, key) { + return newValue => { + object[key] = newValue; + }; +} +export function makeRefs() { + return {}; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NyZWF0ZVJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLFVBQVUsU0FBUztJQUN2QixJQUFJLEtBQVEsQ0FBQztJQUNiLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBWSxFQUFFLEVBQUU7UUFDM0IsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzFCLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDbEI7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLEdBQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQ3JCLE1BQWUsRUFDZixHQUFTO0lBRVQsT0FBTyxRQUFRLENBQUMsRUFBRTtRQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFRRCxNQUFNLFVBQVUsUUFBUTtJQUd0QixPQUFPLEVBQXFCLENBQUM7QUFDL0IsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts b/node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts new file mode 100644 index 0000000..846b89c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts @@ -0,0 +1,27 @@ +import { Reference } from './createRef'; +export type ReferenceArray = T[] & Reference; +/** + * Create an array of references. + * + * @remarks + * The returned object is both an array and a reference that can be passed + * directly to the `ref` property of a node. + * + * @example + * ```tsx + * const labels = createRefArray(); + * + * view.add(['A', 'B'].map(text => {text})); + * view.add(C); + * + * // accessing the references individually: + * yield* labels[0].text('A changes', 0.3); + * yield* labels[1].text('B changes', 0.3); + * yield* labels[2].text('C changes', 0.3); + * + * // accessing all references at once: + * yield* all(...labels.map(label => label.fill('white', 0.3))); + * ``` + */ +export declare function createRefArray(): ReferenceArray; +//# sourceMappingURL=createRefArray.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts.map new file mode 100644 index 0000000..2940a40 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRefArray.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createRefArray.d.ts","sourceRoot":"","sources":["../../src/utils/createRefArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAOtC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAMrD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRefArray.js b/node_modules/@motion-canvas/core/lib/utils/createRefArray.js new file mode 100644 index 0000000..b582886 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRefArray.js @@ -0,0 +1,49 @@ +/** + * Create an array of references. + * + * @remarks + * The returned object is both an array and a reference that can be passed + * directly to the `ref` property of a node. + * + * @example + * ```tsx + * const labels = createRefArray(); + * + * view.add(['A', 'B'].map(text => {text})); + * view.add(C); + * + * // accessing the references individually: + * yield* labels[0].text('A changes', 0.3); + * yield* labels[1].text('B changes', 0.3); + * yield* labels[2].text('C changes', 0.3); + * + * // accessing all references at once: + * yield* all(...labels.map(label => label.fill('white', 0.3))); + * ``` + */ +export function createRefArray() { + const target = function () { + // do nothing + }; + target.array = []; + return new Proxy(target, Handler); +} +const Handler = { + apply(target, _, argArray) { + if (argArray.length === 0) { + return target.array[0]; + } + target.array.push(...argArray); + }, + get(target, property, receiver) { + const value = Reflect.get(target.array, property, receiver); + if (typeof value === 'function') { + return value.bind(target.array); + } + return value; + }, + set(target, property, value, receiver) { + return Reflect.set(target.array, property, value, receiver); + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUmVmQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY3JlYXRlUmVmQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLE1BQU0sR0FBRztRQUNiLGFBQWE7SUFDZixDQUFtQixDQUFDO0lBQ3BCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBaUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQW1DO0lBQzlDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVE7UUFDdkIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEI7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRO1FBQzVCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDL0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1FBQ25DLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts b/node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts new file mode 100644 index 0000000..c7b4616 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts @@ -0,0 +1,50 @@ +import { Reference } from './createRef'; +export type ReferenceMap = Map> & Record> & { + /** + * Maps the references in this group to a new array. + * + * @param callback - The function to transform each reference. + * + * @returns An array of the transformed references. + */ + mapRefs(callback: (value: T, index: number) => TValue): TValue[]; +}; +/** + * Create a group of references. + * + * @remarks + * The returned object lets you easily create multiple references to the same + * type without initializing them individually. + * + * You can retrieve references by accessing the object's properties. If the + * reference for a given property does not exist, it will be created + * automatically. + * + * @example + * ```tsx + * const labels = createRefMap(); + * + * view.add( + * <> + * A + * B + * C + * , + * ); + * + * // accessing the references individually: + * yield* labels.a().text('A changes', 0.3); + * yield* labels.b().text('B changes', 0.3); + * yield* labels.c().text('C changes', 0.3); + * + * // checking if the given reference exists: + * if ('d' in labels) { + * yield* labels.d().text('D changes', 0.3); + * } + * + * // accessing all references at once: + * yield* all(...labels.mapRefs(label => label.fill('white', 0.3))); + * ``` + */ +export declare function createRefMap(): ReferenceMap; +//# sourceMappingURL=createRefMap.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts.map new file mode 100644 index 0000000..6834e1c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRefMap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createRefMap.d.ts","sourceRoot":"","sources":["../../src/utils/createRefMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAC,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;IAC7B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1E,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,YAAY,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAIjD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/createRefMap.js b/node_modules/@motion-canvas/core/lib/utils/createRefMap.js new file mode 100644 index 0000000..94a38a0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/createRefMap.js @@ -0,0 +1,77 @@ +import { createRef } from './createRef'; +/** + * Create a group of references. + * + * @remarks + * The returned object lets you easily create multiple references to the same + * type without initializing them individually. + * + * You can retrieve references by accessing the object's properties. If the + * reference for a given property does not exist, it will be created + * automatically. + * + * @example + * ```tsx + * const labels = createRefMap(); + * + * view.add( + * <> + * A + * B + * C + * , + * ); + * + * // accessing the references individually: + * yield* labels.a().text('A changes', 0.3); + * yield* labels.b().text('B changes', 0.3); + * yield* labels.c().text('C changes', 0.3); + * + * // checking if the given reference exists: + * if ('d' in labels) { + * yield* labels.d().text('D changes', 0.3); + * } + * + * // accessing all references at once: + * yield* all(...labels.mapRefs(label => label.fill('white', 0.3))); + * ``` + */ +export function createRefMap() { + const group = new Map(); + group.entries(); + return new Proxy(group, Handler); +} +const Handler = { + get(target, property) { + if (Reflect.has(target, property)) { + return Reflect.get(target, property); + } + if (property === 'mapRefs') { + return function (callback) { + const result = []; + for (const value of target.values()) { + result.push(callback(value(), result.length)); + } + return result; + }; + } + if (typeof property === 'string') { + let value = target.get(property); + if (!value) { + value = createRef(); + target.set(property, value); + } + return value; + } + }, + has(target, property) { + if (Reflect.has(target, property)) { + return true; + } + if (typeof property === 'string') { + return target.has(property); + } + return false; + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUmVmTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NyZWF0ZVJlZk1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sYUFBYSxDQUFDO0FBY2pEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDSCxNQUFNLFVBQVUsWUFBWTtJQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQUM5QyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEIsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFvQixDQUFDO0FBQ3RELENBQUM7QUFFRCxNQUFNLE9BQU8sR0FBOEM7SUFDekQsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRO1FBQ2xCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDakMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0QztRQUVELElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMxQixPQUFPLFVBQ0wsUUFBK0M7Z0JBRS9DLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDLENBQUM7U0FDSDtRQUVELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ2hDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzdCO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVE7UUFDbEIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/debug.d.ts b/node_modules/@motion-canvas/core/lib/utils/debug.d.ts new file mode 100644 index 0000000..e1d44c2 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/debug.d.ts @@ -0,0 +1,24 @@ +/** + * Logs a debug message with an arbitrary payload. + * + * @remarks + * This method is a shortcut for calling `useLogger().debug()` which allows + * you to more easily log non-string values as well. + * + * @example + * ```ts + * export default makeScene2D(function* (view) { + * const circle = createRef(); + * + * view.add( + * , + * ); + * + * debug(circle().position()); + * }); + * ``` + * + * @param payload - The payload to log + */ +export declare function debug(payload: any): void; +//# sourceMappingURL=debug.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/debug.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/debug.d.ts.map new file mode 100644 index 0000000..44899ec --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/debug.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,GAAG,QAQjC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/debug.js b/node_modules/@motion-canvas/core/lib/utils/debug.js new file mode 100644 index 0000000..e923960 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/debug.js @@ -0,0 +1,47 @@ +import { useLogger } from './useScene'; +function stringify(value) { + switch (typeof value) { + case 'string': + // Prevent strings from getting quoted again + return value; + case 'undefined': + // Prevent `undefined` from being turned into `null` + return 'undefined'; + default: + // Prevent `NaN` from being turned into `null` + if (Number.isNaN(value)) { + return 'NaN'; + } + return JSON.stringify(value); + } +} +/** + * Logs a debug message with an arbitrary payload. + * + * @remarks + * This method is a shortcut for calling `useLogger().debug()` which allows + * you to more easily log non-string values as well. + * + * @example + * ```ts + * export default makeScene2D(function* (view) { + * const circle = createRef(); + * + * view.add( + * , + * ); + * + * debug(circle().position()); + * }); + * ``` + * + * @param payload - The payload to log + */ +export function debug(payload) { + const result = { message: stringify(payload) }; + if (payload && typeof payload === 'object') { + result.object = payload; + } + useLogger().debug(result); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUdyQyxTQUFTLFNBQVMsQ0FBQyxLQUFVO0lBQzNCLFFBQVEsT0FBTyxLQUFLLEVBQUU7UUFDcEIsS0FBSyxRQUFRO1lBQ1gsNENBQTRDO1lBQzVDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxXQUFXO1lBQ2Qsb0RBQW9EO1lBQ3BELE9BQU8sV0FBVyxDQUFDO1FBQ3JCO1lBQ0UsOENBQThDO1lBQzlDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFZO0lBQ2hDLE1BQU0sTUFBTSxHQUFlLEVBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDO0lBRXpELElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtRQUMxQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztLQUN6QjtJQUVELFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts b/node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts new file mode 100644 index 0000000..f77b55d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts @@ -0,0 +1,9 @@ +/** + * Mark the given function as deprecated. + * + * @param fn - The function to deprecate. + * @param message - The log message. + * @param remarks - The optional log remarks. + */ +export declare function deprecate(fn: (...args: TArgs) => TReturn, message: string, remarks?: string): (...args: TArgs) => TReturn; +//# sourceMappingURL=deprecate.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts.map new file mode 100644 index 0000000..8a59d0b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/deprecate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"deprecate.d.ts","sourceRoot":"","sources":["../../src/utils/deprecate.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EACpD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAK7B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/deprecate.js b/node_modules/@motion-canvas/core/lib/utils/deprecate.js new file mode 100644 index 0000000..31b5466 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/deprecate.js @@ -0,0 +1,15 @@ +import { useLogger } from './useScene'; +/** + * Mark the given function as deprecated. + * + * @param fn - The function to deprecate. + * @param message - The log message. + * @param remarks - The optional log remarks. + */ +export function deprecate(fn, message, remarks) { + return function (...args) { + useLogger().warn({ message, remarks, stack: new Error().stack }); + return fn.apply(this, args); + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RlcHJlY2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXJDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEVBQStCLEVBQy9CLE9BQWUsRUFDZixPQUFnQjtJQUVoQixPQUFPLFVBQXFCLEdBQUcsSUFBSTtRQUNqQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDL0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7QUFDSixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts b/node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts new file mode 100644 index 0000000..7cfbda9 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts @@ -0,0 +1,3 @@ +import type { LogPayload } from '../app'; +export declare function errorToLog(error: any): LogPayload; +//# sourceMappingURL=errorToLog.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts.map new file mode 100644 index 0000000..5d7a609 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/errorToLog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"errorToLog.d.ts","sourceRoot":"","sources":["../../src/utils/errorToLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAEvC,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,UAAU,CAMjD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/errorToLog.js b/node_modules/@motion-canvas/core/lib/utils/errorToLog.js new file mode 100644 index 0000000..cd41174 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/errorToLog.js @@ -0,0 +1,8 @@ +export function errorToLog(error) { + return { + message: error.message, + stack: error.stack, + remarks: error.remarks, + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JUb0xvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lcnJvclRvTG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBVTtJQUNuQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztRQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDdkIsQ0FBQztBQUNKLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/getContext.d.ts b/node_modules/@motion-canvas/core/lib/utils/getContext.d.ts new file mode 100644 index 0000000..5bcbd84 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/getContext.d.ts @@ -0,0 +1,2 @@ +export declare function getContext(options?: CanvasRenderingContext2DSettings, canvas?: HTMLCanvasElement): CanvasRenderingContext2D; +//# sourceMappingURL=getContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/getContext.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/getContext.d.ts.map new file mode 100644 index 0000000..749b220 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/getContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getContext.d.ts","sourceRoot":"","sources":["../../src/utils/getContext.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CACxB,OAAO,CAAC,EAAE,gCAAgC,EAC1C,MAAM,GAAE,iBAAoD,GAC3D,wBAAwB,CAM1B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/getContext.js b/node_modules/@motion-canvas/core/lib/utils/getContext.js new file mode 100644 index 0000000..ce4ce1c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/getContext.js @@ -0,0 +1,8 @@ +export function getContext(options, canvas = document.createElement('canvas')) { + const context = canvas.getContext('2d', options); + if (!context) { + throw new Error('Could not create a 2D context.'); + } + return context; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9nZXRDb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQ3hCLE9BQTBDLEVBQzFDLFNBQTRCLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBRTVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7S0FDbkQ7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/index.d.ts b/node_modules/@motion-canvas/core/lib/utils/index.d.ts new file mode 100644 index 0000000..86f5cb6 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/index.d.ts @@ -0,0 +1,27 @@ +/** + * General utilities and helper functions. + * + * @packageDocumentation + */ +export * from './beginSlide'; +export * from './capitalize'; +export * from './debug'; +export * from './deprecate'; +export * from './DetailedError'; +export * from './errorToLog'; +export * from './getContext'; +export * from './math'; +export * from './range'; +export * from './Semaphore'; +export * from './usePlayback'; +export * from './useRandom'; +export * from './createRef'; +export * from './createRefArray'; +export * from './createRefMap'; +export * from './useScene'; +export * from './useThread'; +export * from './useTime'; +export * from './useContext'; +export * from './useDuration'; +export * from './proxyUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/index.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/index.d.ts.map new file mode 100644 index 0000000..e7b277b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/index.js b/node_modules/@motion-canvas/core/lib/utils/index.js new file mode 100644 index 0000000..0ea6f6c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/index.js @@ -0,0 +1,27 @@ +/** + * General utilities and helper functions. + * + * @packageDocumentation + */ +export * from './beginSlide'; +export * from './capitalize'; +export * from './debug'; +export * from './deprecate'; +export * from './DetailedError'; +export * from './errorToLog'; +export * from './getContext'; +export * from './math'; +export * from './range'; +export * from './Semaphore'; +export * from './usePlayback'; +export * from './useRandom'; +export * from './createRef'; +export * from './createRefArray'; +export * from './createRefMap'; +export * from './useScene'; +export * from './useThread'; +export * from './useTime'; +export * from './useContext'; +export * from './useDuration'; +export * from './proxyUtils'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/math.d.ts b/node_modules/@motion-canvas/core/lib/utils/math.d.ts new file mode 100644 index 0000000..395d4fc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/math.d.ts @@ -0,0 +1,15 @@ +/** + * A constant for converting radians to degrees + * + * @example + * const degrees = 0.6 * RAD2DEG; + */ +export declare const RAD2DEG: number; +/** + * A constant for converting degrees to radians + * + * @example + * const radians = 30 * DEG2RAD; + */ +export declare const DEG2RAD: number; +//# sourceMappingURL=math.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/math.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/math.d.ts.map new file mode 100644 index 0000000..a673fd8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/math.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,OAAO,QAAgB,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,OAAO,QAAgB,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/math.js b/node_modules/@motion-canvas/core/lib/utils/math.js new file mode 100644 index 0000000..7bb4416 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/math.js @@ -0,0 +1,15 @@ +/** + * A constant for converting radians to degrees + * + * @example + * const degrees = 0.6 * RAD2DEG; + */ +export const RAD2DEG = 180 / Math.PI; +/** + * A constant for converting degrees to radians + * + * @example + * const radians = 30 * DEG2RAD; + */ +export const DEG2RAD = Math.PI / 180; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBRXJDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts b/node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts new file mode 100644 index 0000000..76f2c1d --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts @@ -0,0 +1,25 @@ +/** + * Utility to redirect remote sources via Proxy + * + * This utility is used to rewrite a request to be routed through + * the Proxy instead. + */ +/** + * Route the given url through a local proxy. + * + * @example + * This rewrites a remote url like `https://via.placeholder.com/300.png/09f/fff` + * into a URI-Component-Encoded string like + * `/cors-proxy/https%3A%2F%2Fvia.placeholder.com%2F300.png%2F09f%2Ffff` + */ +export declare function viaProxy(url: string): string; +/** + * Check if the proxy is enabled via the plugin by checking + * for `import.meta.env.VITE_MC_PROXY_ENABLED` + * + * @remarks The value can either be 'true' of 'false' + * (as strings) if present, or be undefined if not run + * from a vite context or run without the MC Plugin. + */ +export declare function isProxyEnabled(): boolean; +//# sourceMappingURL=proxyUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts.map new file mode 100644 index 0000000..f659ed7 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/proxyUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"proxyUtils.d.ts","sourceRoot":"","sources":["../../src/utils/proxyUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UA2CnC;AAoBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,YAK7B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/proxyUtils.js b/node_modules/@motion-canvas/core/lib/utils/proxyUtils.js new file mode 100644 index 0000000..232126b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/proxyUtils.js @@ -0,0 +1,136 @@ +/** + * Utility to redirect remote sources via Proxy + * + * This utility is used to rewrite a request to be routed through + * the Proxy instead. + */ +import { useLogger } from './useScene'; +/** + * Route the given url through a local proxy. + * + * @example + * This rewrites a remote url like `https://via.placeholder.com/300.png/09f/fff` + * into a URI-Component-Encoded string like + * `/cors-proxy/https%3A%2F%2Fvia.placeholder.com%2F300.png%2F09f%2Ffff` + */ +export function viaProxy(url) { + if (!isProxyEnabled()) { + // Proxy is disabled, so we just pass as-is. + return url; + } + if (url.startsWith('/cors-proxy/')) { + // Already proxied, return as-is + return url; + } + // window.location.hostname is being passed here to ensure that + // this does not throw an Error for same-origin requests + // e.g. /some/image -> localhost:9000/some/image + const selfUrl = new URL(window.location.toString()); + // inside a try-catch in case the URL cannot be understood + try { + const expandedUrl = new URL(url, selfUrl); + if (!expandedUrl.protocol.startsWith('http')) { + // this is probably some embedded image (e.g. image/png;base64). + // don't touch and pass as is + return url; + } + if (selfUrl.host === expandedUrl.host) { + // This is a request to a "local" resource. + // No need to rewrite + return url; + } + // Check if the host matches the Allow List. + // if not, no rewrite takes place. + // will fail in the Editor if the + // remote host does not accept anonymous + if (!isInsideAllowList(expandedUrl.host)) { + return url; + } + } + catch (_) { + // in case of error just silently pass as-is + return url; + } + // Everything else is a "remote" resource and requires a rewrite. + return `/cors-proxy/${encodeURIComponent(url)}`; +} +/** + * Check the provided host is allowed to be routed + * to the Proxy. + */ +function isInsideAllowList(host) { + const allowList = getAllowList(); + if (allowList.length === 0) { + // Allow List defaults to allow all if empty + return true; + } + for (const entry of allowList) { + if (entry.toLowerCase().trim() === host) { + return true; + } + } + return false; +} +/** + * Check if the proxy is enabled via the plugin by checking + * for `import.meta.env.VITE_MC_PROXY_ENABLED` + * + * @remarks The value can either be 'true' of 'false' + * (as strings) if present, or be undefined if not run + * from a vite context or run without the MC Plugin. + */ +export function isProxyEnabled() { + if (import.meta.env) { + return import.meta.env.VITE_MC_PROXY_ENABLED === 'true'; + } + return false; +} +/** + * Cached value so getAllowList does not + * try to parse the Env var on every call, + * spamming the console in the process + */ +let AllowListCache = undefined; +/** + * Return the list of allowed hosts + * from the Plugin Config + */ +function getAllowList() { + // Condition should get optimized away for Prod + if (import.meta.env.VITEST !== 'true') { + if (AllowListCache) { + return [...AllowListCache]; + } + } + // Inline function gets immediately invoked + // and the result stored in getAllowListCache. + // The cached value is used on subsequent requests. + const result = (function () { + if (!isProxyEnabled() || !import.meta.env) { + return []; + } + // This value is encoded as a JSON String. + const valueJson = import.meta.env.VITE_MC_PROXY_ALLOW_LIST ?? '[]'; + const parsedJson = JSON.parse(valueJson); + // Do an additional check that only strings are present, + // create a warning and ignore the value + if (!Array.isArray(parsedJson)) { + useLogger().error('Parsed Allow List expected to be an Array, but is ' + + typeof parsedJson); + } + const validatedEntries = []; + for (const entry of parsedJson) { + if (typeof entry !== 'string') { + useLogger().warn('Unexpected Value in Allow List: ' + + entry + + '. Expected a String. Skipping.'); + continue; + } + validatedEntries.push(entry); + } + return validatedEntries; + })(); + AllowListCache = result; + return [...AllowListCache]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHlVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm94eVV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVyQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXO0lBQ2xDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtRQUNyQiw0Q0FBNEM7UUFDNUMsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUVELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUNsQyxnQ0FBZ0M7UUFDaEMsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUVELCtEQUErRDtJQUMvRCx3REFBd0Q7SUFDeEQsZ0RBQWdEO0lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCwwREFBMEQ7SUFDMUQsSUFBSTtRQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUMsZ0VBQWdFO1lBQ2hFLDZCQUE2QjtZQUM3QixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDckMsMkNBQTJDO1lBQzNDLHFCQUFxQjtZQUNyQixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsNENBQTRDO1FBQzVDLGtDQUFrQztRQUNsQyxpQ0FBaUM7UUFDakMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FB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 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/range.d.ts b/node_modules/@motion-canvas/core/lib/utils/range.d.ts new file mode 100644 index 0000000..581d442 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/range.d.ts @@ -0,0 +1,40 @@ +/** + * Create an array containing a range of numbers. + * + * @example + * ```ts + * const array1 = range(3); // [0, 1, 2] + * const array2 = range(-3); // [0, -1, -2] + * ``` + * + * @param length - The length of the array. + */ +export declare function range(length: number): number[]; +/** + * Create an array containing a range of numbers. + * + * @example + * ```ts + * const array1 = range(3, 7); // [3, 4, 5, 6] + * const array2 = range(7, 3); // [7, 6, 5, 4] + * ``` + * + * @param from - The start of the range. + * @param to - The end of the range. `to` itself is not included in the result. + */ +export declare function range(from: number, to: number): number[]; +/** + * Create an array containing a range of numbers. + * + * @example + * ```ts + * const array1 = range(1, 2, 0.25); // [1, 1.25, 1.5, 1.75] + * const array2 = range(2, 1, -0.25); // [2, 1.75, 1.5, 1.25] + * ``` + * + * @param from - The start of the range. + * @param to - The end of the range. `to` itself is not included in the result. + * @param step - The value by which to increment or decrement. + */ +export declare function range(from: number, to: number, step: number): number[]; +//# sourceMappingURL=range.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/range.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/range.d.ts.map new file mode 100644 index 0000000..ad172ab --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/range.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/utils/range.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;AAChD;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;AAC1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/range.js b/node_modules/@motion-canvas/core/lib/utils/range.js new file mode 100644 index 0000000..2bb9e1e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/range.js @@ -0,0 +1,18 @@ +export function range(first, second, step) { + let from = 0; + let to = first; + if (second !== undefined) { + from = first; + to = second; + } + step = step === undefined ? (from < to ? 1 : -1) : step; + const array = []; + let length = Math.max(Math.ceil((to - from) / step), 0); + let index = 0; + while (length--) { + array[index++] = from; + from += step; + } + return array; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUNBLE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBYSxFQUFFLE1BQWUsRUFBRSxJQUFhO0lBQ2pFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNmLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUN4QixJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsRUFBRSxHQUFHLE1BQU0sQ0FBQztLQUNiO0lBRUQsSUFBSSxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFeEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxPQUFPLE1BQU0sRUFBRSxFQUFFO1FBQ2YsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxJQUFJLENBQUM7S0FDZDtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useContext.d.ts b/node_modules/@motion-canvas/core/lib/utils/useContext.d.ts new file mode 100644 index 0000000..0de040b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useContext.d.ts @@ -0,0 +1,13 @@ +/** + * Provide a function to access the Context2D before the scene is rendered. + * + * @param callback - The function that will be provided the context before render. + */ +export declare function useContext(callback: (ctx: CanvasRenderingContext2D) => void): () => void; +/** + * Provide a function to access the Context2D after the scene is rendered. + * + * @param callback - The function that will be provided the context after render. + */ +export declare function useContextAfter(callback: (ctx: CanvasRenderingContext2D) => void): () => void; +//# sourceMappingURL=useContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useContext.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/useContext.d.ts.map new file mode 100644 index 0000000..44a7f59 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useContext.d.ts","sourceRoot":"","sources":["../../src/utils/useContext.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,GAChD,MAAM,IAAI,CAEZ;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,GAChD,MAAM,IAAI,CAEZ"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useContext.js b/node_modules/@motion-canvas/core/lib/utils/useContext.js new file mode 100644 index 0000000..682dda4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useContext.js @@ -0,0 +1,18 @@ +import { useScene } from './useScene'; +/** + * Provide a function to access the Context2D before the scene is rendered. + * + * @param callback - The function that will be provided the context before render. + */ +export function useContext(callback) { + return useScene().lifecycleEvents.onBeginRender.subscribe(callback); +} +/** + * Provide a function to access the Context2D after the scene is rendered. + * + * @param callback - The function that will be provided the context after render. + */ +export function useContextAfter(callback) { + return useScene().lifecycleEvents.onFinishRender.subscribe(callback); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91c2VDb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEM7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLFFBQWlEO0lBRWpELE9BQU8sUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixRQUFpRDtJQUVqRCxPQUFPLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts b/node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts new file mode 100644 index 0000000..be78518 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts @@ -0,0 +1,26 @@ +/** + * Register a time event and get its duration in seconds. + * + * @remarks + * This can be used to better specify when an animation should start + * as well as how long this animation should take + * + * @example + * ```ts + * export default makeScene2D(function* (view) { + * const circle = createRef(); + * + * view.add( + * , + * ); + * + * yield* circle().scale(2, useDuration('circleGrow')); + * }); + * ``` + * + * @param name - The name of the event. + * + * @returns The duration of the event in seconds. + */ +export declare function useDuration(name: string): number; +//# sourceMappingURL=useDuration.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts.map new file mode 100644 index 0000000..6d66f69 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useDuration.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useDuration.d.ts","sourceRoot":"","sources":["../../src/utils/useDuration.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useDuration.js b/node_modules/@motion-canvas/core/lib/utils/useDuration.js new file mode 100644 index 0000000..2d5f03a --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useDuration.js @@ -0,0 +1,32 @@ +import { useScene } from './useScene'; +import { useThread } from './useThread'; +/** + * Register a time event and get its duration in seconds. + * + * @remarks + * This can be used to better specify when an animation should start + * as well as how long this animation should take + * + * @example + * ```ts + * export default makeScene2D(function* (view) { + * const circle = createRef(); + * + * view.add( + * , + * ); + * + * yield* circle().scale(2, useDuration('circleGrow')); + * }); + * ``` + * + * @param name - The name of the event. + * + * @returns The duration of the event in seconds. + */ +export function useDuration(name) { + const scene = useScene(); + const thread = useThread(); + return scene.timeEvents.register(name, thread.time()); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRHVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlRHVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWTtJQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztJQUN6QixNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUMzQixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN4RCxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts b/node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts new file mode 100644 index 0000000..d728368 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts @@ -0,0 +1,8 @@ +import { PlaybackStatus } from '../app'; +/** + * Get a reference to the playback status. + */ +export declare function usePlayback(): PlaybackStatus; +export declare function startPlayback(playback: PlaybackStatus): void; +export declare function endPlayback(playback: PlaybackStatus): void; +//# sourceMappingURL=usePlayback.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts.map new file mode 100644 index 0000000..94f4322 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/usePlayback.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"usePlayback.d.ts","sourceRoot":"","sources":["../../src/utils/usePlayback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,QAAQ,CAAC;AAItC;;GAEG;AACH,wBAAgB,WAAW,mBAM1B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,QAErD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,QAInD"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/usePlayback.js b/node_modules/@motion-canvas/core/lib/utils/usePlayback.js new file mode 100644 index 0000000..e3a2fa8 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/usePlayback.js @@ -0,0 +1,20 @@ +const PlaybackStack = []; +/** + * Get a reference to the playback status. + */ +export function usePlayback() { + const playback = PlaybackStack.at(-1); + if (!playback) { + throw new Error('The playback is not available in the current context.'); + } + return playback; +} +export function startPlayback(playback) { + PlaybackStack.push(playback); +} +export function endPlayback(playback) { + if (PlaybackStack.pop() !== playback) { + throw new Error('startPlayback/endPlayback were called out of order.'); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUGxheWJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlUGxheWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxhQUFhLEdBQXFCLEVBQUUsQ0FBQztBQUUzQzs7R0FFRztBQUNILE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0tBQzFFO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBd0I7SUFDcEQsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxRQUF3QjtJQUNsRCxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxRQUFRLEVBQUU7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0tBQ3hFO0FBQ0gsQ0FBQyJ9 \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts b/node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts new file mode 100644 index 0000000..4f12cca --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts @@ -0,0 +1,14 @@ +import { Random } from '../scenes'; +/** + * Get the random number generator for the current scene. + **/ +export declare function useRandom(): Random; +/** + * Get the random number generator for the given seed. + * + * @param seed - The seed for the generator. + * @param fixed - Whether the seed should be fixed. Fixed seeds remain + * the same even when the main scene seed changes. + */ +export declare function useRandom(seed: number, fixed?: boolean): Random; +//# sourceMappingURL=useRandom.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts.map new file mode 100644 index 0000000..ecc035b --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useRandom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useRandom.d.ts","sourceRoot":"","sources":["../../src/utils/useRandom.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC;;IAEI;AACJ,wBAAgB,SAAS,IAAI,MAAM,CAAC;AACpC;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useRandom.js b/node_modules/@motion-canvas/core/lib/utils/useRandom.js new file mode 100644 index 0000000..f481152 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useRandom.js @@ -0,0 +1,8 @@ +import { useScene } from './useScene'; +import { Random } from '../scenes'; +export function useRandom(seed, fixed = true) { + return typeof seed === 'number' + ? new Random(fixed ? seed : seed + useScene().meta.seed.get()) + : useScene().random; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3VzZVJhbmRvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFjakMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFhLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDbkQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRO1FBQzdCLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDOUQsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUN4QixDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useScene.d.ts b/node_modules/@motion-canvas/core/lib/utils/useScene.d.ts new file mode 100644 index 0000000..e4e10dc --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useScene.d.ts @@ -0,0 +1,17 @@ +import type { Scene } from '../scenes'; +/** + * Get a reference to the current scene. + */ +export declare function useScene(): Scene; +export declare function startScene(scene: Scene): void; +export declare function endScene(scene: Scene): void; +export declare function useLogger(): Console | import("..").Logger; +/** + * Mark the current scene as ready to transition out. + * + * @remarks + * Usually used together with transitions. When a scene is marked as finished, + * the transition will start but the scene generator will continue running. + */ +export declare function finishScene(): void; +//# sourceMappingURL=useScene.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useScene.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/useScene.d.ts.map new file mode 100644 index 0000000..7701280 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useScene.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useScene.d.ts","sourceRoot":"","sources":["../../src/utils/useScene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,WAAW,CAAC;AAIrC;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,CAMhC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,QAEtC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,QAIpC;AAED,wBAAgB,SAAS,kCAExB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,SAE1B"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useScene.js b/node_modules/@motion-canvas/core/lib/utils/useScene.js new file mode 100644 index 0000000..56690f0 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useScene.js @@ -0,0 +1,33 @@ +const SceneStack = []; +/** + * Get a reference to the current scene. + */ +export function useScene() { + const scene = SceneStack.at(-1); + if (!scene) { + throw new Error('The scene is not available in the current context.'); + } + return scene; +} +export function startScene(scene) { + SceneStack.push(scene); +} +export function endScene(scene) { + if (SceneStack.pop() !== scene) { + throw new Error('startScene/endScene were called out of order.'); + } +} +export function useLogger() { + return SceneStack.at(-1)?.logger ?? console; +} +/** + * Mark the current scene as ready to transition out. + * + * @remarks + * Usually used together with transitions. When a scene is marked as finished, + * the transition will start but the scene generator will continue running. + */ +export function finishScene() { + useScene().enterCanTransitionOut(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlU2NlbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLEdBQVksRUFBRSxDQUFDO0FBRS9COztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVE7SUFDdEIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7S0FDdkU7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVk7SUFDckMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFZO0lBQ25DLElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRTtRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7S0FDbEU7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVc7SUFDekIsUUFBUSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUNyQyxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useThread.d.ts b/node_modules/@motion-canvas/core/lib/utils/useThread.d.ts new file mode 100644 index 0000000..bb7f47e --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useThread.d.ts @@ -0,0 +1,8 @@ +import type { Thread } from '../threading'; +/** + * Get a reference to the current thread. + */ +export declare function useThread(): Thread; +export declare function startThread(thread: Thread): void; +export declare function endThread(thread: Thread): void; +//# sourceMappingURL=useThread.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useThread.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/useThread.d.ts.map new file mode 100644 index 0000000..f2a8670 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useThread.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useThread.d.ts","sourceRoot":"","sources":["../../src/utils/useThread.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAKzC;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAWlC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,QAEzC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,QAIvC"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useThread.js b/node_modules/@motion-canvas/core/lib/utils/useThread.js new file mode 100644 index 0000000..4645ae4 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useThread.js @@ -0,0 +1,21 @@ +import { DetailedError } from './DetailedError'; +const ThreadStack = []; +/** + * Get a reference to the current thread. + */ +export function useThread() { + const thread = ThreadStack.at(-1); + if (!thread) { + throw new DetailedError('The thread is not available in the current context.', "

useThread() can only be called from within generator functions.\n It's not available during rendering.

\n"); + } + return thread; +} +export function startThread(thread) { + ThreadStack.push(thread); +} +export function endThread(thread) { + if (ThreadStack.pop() !== thread) { + throw new Error('startThread/endThread was called out of order.'); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGhyZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3VzZVRocmVhZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxXQUFXLEdBQWEsRUFBRSxDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFNBQVM7SUFDdkIsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksYUFBYSxDQUNyQixxREFBcUQsMElBSXRELENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWM7SUFDeEMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFjO0lBQ3RDLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRTtRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7S0FDbkU7QUFDSCxDQUFDIn0= \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useTime.d.ts b/node_modules/@motion-canvas/core/lib/utils/useTime.d.ts new file mode 100644 index 0000000..91cc408 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useTime.d.ts @@ -0,0 +1,19 @@ +/** + * Get the real time since the start of the animation. + * + * @remarks + * The returned value accounts for offsets caused by functions such as + * {@link flow.waitFor}. + * + * @example + * ```ts + * // current time: 0s + * yield* waitFor(0.02); + * + * // current time: 0.016(6)s + * // real time: 0.02s + * const realTime = useTime(); + * ``` + */ +export declare function useTime(): number; +//# sourceMappingURL=useTime.d.ts.map \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useTime.d.ts.map b/node_modules/@motion-canvas/core/lib/utils/useTime.d.ts.map new file mode 100644 index 0000000..1417424 --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useTime.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useTime.d.ts","sourceRoot":"","sources":["../../src/utils/useTime.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,WAEtB"} \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/lib/utils/useTime.js b/node_modules/@motion-canvas/core/lib/utils/useTime.js new file mode 100644 index 0000000..9bf980c --- /dev/null +++ b/node_modules/@motion-canvas/core/lib/utils/useTime.js @@ -0,0 +1,22 @@ +import { useThread } from './useThread'; +/** + * Get the real time since the start of the animation. + * + * @remarks + * The returned value accounts for offsets caused by functions such as + * {@link flow.waitFor}. + * + * @example + * ```ts + * // current time: 0s + * yield* waitFor(0.02); + * + * // current time: 0.016(6)s + * // real time: 0.02s + * const realTime = useTime(); + * ``` + */ +export function useTime() { + return useThread().time(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91c2VUaW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzVCLENBQUMifQ== \ No newline at end of file diff --git a/node_modules/@motion-canvas/core/package.json b/node_modules/@motion-canvas/core/package.json new file mode 100644 index 0000000..9a70b3d --- /dev/null +++ b/node_modules/@motion-canvas/core/package.json @@ -0,0 +1,39 @@ +{ + "name": "@motion-canvas/core", + "version": "3.11.0", + "description": "Web-based tool for creating animations programmatically", + "main": "lib/index.js", + "author": "motion-canvas", + "homepage": "https://motioncanvas.io/", + "bugs": "https://github.com/motion-canvas/motion-canvas/issues", + "license": "MIT", + "scripts": { + "dev": "ttsc -p tsconfig.build.json -w", + "build": "ttsc -p tsconfig.build.json", + "bundle": "rollup -c rollup.config.mjs", + "test": "vitest" + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "https://github.com/motion-canvas/motion-canvas.git" + }, + "files": [ + "lib", + "tsconfig.project.json", + "project.d.ts" + ], + "peerDependencies": { + "vite": "^4.1.4" + }, + "dependencies": { + "@types/chroma-js": "^2.1.4", + "chroma-js": "^2.4.2" + }, + "devDependencies": { + "@motion-canvas/internal": "0.0.0", + "jsdom": "^21.1.0", + "vitest": "^0.29.2" + }, + "gitHead": "cddc3abf625d2d9fdfeb48c2405f1206c2ee81e6" +} diff --git a/node_modules/@motion-canvas/core/project.d.ts b/node_modules/@motion-canvas/core/project.d.ts new file mode 100644 index 0000000..dabb635 --- /dev/null +++ b/node_modules/@motion-canvas/core/project.d.ts @@ -0,0 +1,29 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/// + +declare module '*?img' { + const value: Promise; + export = value; +} + +declare module '*?anim' { + const value: Promise; + export = value; +} + +declare module '*.csv' { + const value: unknown; + export = value; +} + +declare module '*.glsl' { + const value: string; + export = value; +} + +declare module '*?scene' { + const value: import('./lib/scenes/Scene').FullSceneDescription; + export = value; +} + +declare type Callback = (...args: any[]) => void; diff --git a/node_modules/@motion-canvas/core/tsconfig.project.json b/node_modules/@motion-canvas/core/tsconfig.project.json new file mode 100644 index 0000000..b060143 --- /dev/null +++ b/node_modules/@motion-canvas/core/tsconfig.project.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "sourceMap": true, + "noImplicitAny": true, + "module": "esnext", + "target": "es2020", + "allowJs": true, + "noEmit": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "experimentalDecorators": true + } +} diff --git a/node_modules/@motion-canvas/player/LICENSE b/node_modules/@motion-canvas/player/LICENSE new file mode 100644 index 0000000..b30f04e --- /dev/null +++ b/node_modules/@motion-canvas/player/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 motion-canvas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@motion-canvas/player/dist/main.js b/node_modules/@motion-canvas/player/dist/main.js new file mode 100644 index 0000000..a3840f4 --- /dev/null +++ b/node_modules/@motion-canvas/player/dist/main.js @@ -0,0 +1,1377 @@ +var B = Object.defineProperty; +var H = (s, t, e) => t in s ? B(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e; +var v = (s, t, e) => (H(s, typeof t != "symbol" ? t + "" : t, e), e); +import { Stage as G, Player as O } from "@motion-canvas/core"; +const Y = `.initial{display:none}.state-initial .initial{display:block}.loading{display:none}.state-loading .loading{display:block}.ready{display:none}.state-ready .ready{display:block}.error{display:none}.state-error .error{display:block}:host{position:relative;display:block}.overlay{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;opacity:0;background-color:#0000008a;transition:opacity .1s}.overlay.state-ready:not(.auto){cursor:pointer}.overlay.playing:not(.hover):hover{cursor:none}.overlay.hover,.overlay.state-ready:focus-within,.overlay.state-ready:not(.playing){opacity:1}.overlay.hover .button,.overlay.state-ready:focus-within .button,.overlay.state-ready:not(.playing) .button{scale:1;transition:scale .1s ease-out}.overlay.state-loading,.overlay.state-error{opacity:1;transition:opacity 1s}.overlay.state-ready.auto{opacity:0}.button{width:50%;max-width:96px;aspect-ratio:1;scale:.5;transition:scale .1s ease-in,opacity .1s;background-color:transparent;border:none;background-size:100% 100%;background-repeat:no-repeat;opacity:.54;cursor:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iI2ZmZmZmZiI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE0LjV2LTlsNiA0LjUtNiA0LjV6Ii8+PC9zdmc+)}.playing .button{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiNmZmZmZmYiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zy8+PHBhdGggZD0iTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMSwxNkg5VjhoMlYxNnogTTE1LDE2aC0yVjhoMlYxNnoiLz48L2c+PC9zdmc+)}.button:focus,.overlay:hover .button{opacity:.87}.auto .button{display:none}.canvas{width:100%;display:block;opacity:0;transition:opacity .1s}.canvas.state-ready{opacity:1}.message{font-family:JetBrains Mono,sans-serif;text-align:center;font-size:20px;padding:8px 16px;margin:16px;border-radius:4px;color:#fff9;background-color:#000000de}.loader{width:50%;max-width:96px;display:none;rotate:-90deg;animation:stroke 2s cubic-bezier(.5,0,.5,1) infinite,rotate 2s linear infinite}@keyframes stroke{0%{stroke-dasharray:5.6548667765px 50.8938009883px;stroke-dashoffset:2.8274333882px}50%{stroke-dasharray:50.8938009883px 5.6548667765px;stroke-dashoffset:-2.8274333882px}to{stroke-dasharray:5.6548667765px 50.8938009883px;stroke-dashoffset:-53.7212343766px}}@keyframes rotate{0%{rotate:-110deg}to{rotate:250deg}} +`, q = `
+ +
+ An error occurred while loading the animation. +
+ + + +
+`, j = []; +function W() { + const s = j.at(-1); + if (!s) + throw new Error("The scene is not available in the current context."); + return s; +} +function X() { + var s; + return ((s = j.at(-1)) == null ? void 0 : s.logger) ?? console; +} +class D extends Error { + constructor(t, e) { + super(t), this.remarks = e; + } +} +const J = []; +function k() { + const s = J.at(-1); + if (!s) + throw new D("The thread is not available in the current context.", `

useThread() can only be called from within generator functions. + It's not available during rendering.

+`); + return s; +} +function Q(s) { + return { + message: s.message, + stack: s.stack, + remarks: s.remarks + }; +} +const U = 180 / Math.PI, w = Math.PI / 180, $ = []; +function F() { + const s = $.at(-1); + if (!s) + throw new Error("The playback is not available in the current context."); + return s; +} +function M(s, ...t) { + const e = { [s.name]: s }, i = Object.getOwnPropertyDescriptor(e, s.name); + if (i) + for (let n = t.length - 1; n >= 0; n--) + t[n](e, s.name, i); +} +function S(s) { + return function(t, e, i) { + i.value.prototype.name = s ?? e, i.value.prototype.threadable = !0; + }; +} +function L(s, t) { + const e = Object.getPrototypeOf(s); + e.threadable || (e.threadable = !0, e.name = typeof t == "string" ? t : K(t)); +} +function K(s) { + return Object.getPrototypeOf(s).name ?? null; +} +class V { + constructor() { + this.subscribable = new _(this), this.subscribers = /* @__PURE__ */ new Set(); + } + /** + * {@inheritDoc Subscribable.subscribe} + */ + subscribe(t) { + return this.subscribers.add(t), () => this.unsubscribe(t); + } + /** + * {@inheritDoc Subscribable.unsubscribe} + */ + unsubscribe(t) { + this.subscribers.delete(t); + } + /** + * Unsubscribe all subscribers from the event. + */ + clear() { + this.subscribers.clear(); + } + notifySubscribers(t) { + return [...this.subscribers].map((e) => e(t)); + } +} +class _ { + constructor(t) { + this.dispatcher = t; + } + /** + * Subscribe to the event. + * + * @param handler - The handler to invoke when the event occurs. + * + * @returns A callback function that cancels the subscription. + */ + subscribe(t) { + return this.dispatcher.subscribe(t); + } + /** + * Unsubscribe from the event. + * + * @param handler - The handler to unsubscribe. + */ + unsubscribe(t) { + this.dispatcher.unsubscribe(t); + } +} +class tt extends V { + constructor() { + super(...arguments), this.value = !1; + } + /** + * Notify all current and future subscribers. + */ + raise() { + this.value || (this.value = !0, this.notifySubscribers()); + } + /** + * Stop notifying future subscribers. + */ + reset() { + this.value = !1; + } + /** + * Are subscribers being notified? + */ + isRaised() { + return this.value; + } + subscribe(t) { + const e = super.subscribe(t); + return this.value && t(), e; + } +} +function et(s) { + const t = W(), e = k(); + return t.timeEvents.register(s, e.time()); +} +function p(s, t, e) { + return s + (t - s) * e; +} +function z(s, t, e) { + return e < s ? s : e > t ? t : e; +} +function st(s, t, e) { + let i = t; + e > 1 ? e = 1 / e : i = !i; + const n = i ? Math.acos(z(-1, 1, 1 - s)) : Math.asin(s), r = p(n, p(0, Math.PI / 2, s), e); + let l = Math.sin(r), h = 1 - Math.cos(r); + return t && ([l, h] = [h, l]), new a(l, h); +} +function it(s, t = 0, e = 1) { + return s = s < 0.5 ? 4 * s * s * s : 1 - Math.pow(-2 * s + 2, 3) / 2, p(t, e, s); +} +M(Z, S()); +function* Z(s, t, e) { + const i = k(), n = i.time(), r = i.time() + s; + for (t(0, 0); r > i.fixed; ) { + const l = i.fixed - n, h = l / s; + l > 0 && t(h, l), yield; + } + i.time(r), t(1, s), e == null || e(1, s); +} +M(at, S()); +function* at(s, t) { + yield* I(et(s)), t && (yield* t); +} +M(I, S()); +function* I(s = 0, t) { + const e = k(), i = F().framesToSeconds(1), n = e.time() + s; + for (; n - i > e.fixed; ) + yield; + e.time(n), t && (yield* t); +} +function N(s, t) { + let e; + return typeof s == "string" ? (e = t(), L(e, s)) : (e = s(), L(e, e)), e; +} +class y { + static collectPromise(t, e = null) { + const i = { + promise: t, + value: e, + stack: new Error().stack + }, n = this.collectionStack.at(-1); + return n && (i.owner = n.owner), t.then((r) => { + i.value = r, n == null || n.markDirty(); + }), this.promises.push(i), i; + } + static hasPromises() { + return this.promises.length > 0; + } + static async consumePromises() { + const t = [...this.promises]; + return await Promise.all(t.map((e) => e.promise)), this.promises = this.promises.filter((e) => !t.includes(e)), t; + } + constructor(t) { + this.owner = t, this.dependencies = /* @__PURE__ */ new Set(), this.event = new tt(), this.markDirty = () => this.event.raise(), this.invokable = this.invoke.bind(this), Object.defineProperty(this.invokable, "context", { + value: this + }), Object.defineProperty(this.invokable, "toPromise", { + value: this.toPromise.bind(this) + }); + } + invoke() { + } + startCollecting() { + if (y.collectionSet.has(this)) + throw new D("A circular dependency occurred between signals.", `This can happen when signals reference each other in a loop. + Try using the attached stack trace to locate said loop.`); + y.collectionSet.add(this), y.collectionStack.push(this); + } + finishCollecting() { + if (y.collectionSet.delete(this), y.collectionStack.pop() !== this) + throw new Error("collectStart/collectEnd was called out of order."); + } + clearDependencies() { + this.dependencies.forEach((t) => t.unsubscribe(this.markDirty)), this.dependencies.clear(); + } + collect() { + const t = y.collectionStack.at(-1); + t && (t.dependencies.add(this.event.subscribable), this.event.subscribe(t.markDirty)); + } + dispose() { + this.clearDependencies(), this.event.clear(), this.owner = null; + } + async toPromise() { + do + await y.consumePromises(), this.invokable(); + while (y.hasPromises()); + return this.invokable; + } +} +y.collectionSet = /* @__PURE__ */ new Set(); +y.collectionStack = []; +y.promises = []; +function f(s) { + return typeof s == "function"; +} +function nt(s, t) { + return f(s) ? () => t(s()) : t(s); +} +function rt(s) { + return f(s) ? s() : s; +} +const T = Symbol.for("@motion-canvas/core/signals/default"); +class A extends y { + constructor(t, e, i = void 0, n = (l) => l, r = {}) { + super(i), this.initial = t, this.interpolation = e, this.parser = n, Object.defineProperty(this.invokable, "reset", { + value: this.reset.bind(this) + }), Object.defineProperty(this.invokable, "save", { + value: this.save.bind(this) + }), Object.defineProperty(this.invokable, "isInitial", { + value: this.isInitial.bind(this) + }), this.initial !== void 0 && (this.current = this.initial, this.markDirty(), f(this.initial) || (this.last = this.parse(this.initial))), this.extensions = { + getter: this.getter.bind(this), + setter: this.setter.bind(this), + tweener: this.tweener.bind(this), + ...r + }; + } + toSignal() { + return this.invokable; + } + parse(t) { + return this.parser(t); + } + set(t) { + return this.extensions.setter(t), this.owner; + } + setter(t) { + return t === T && (t = this.initial), this.current === t ? this.owner : (this.current = t, this.markDirty(), this.clearDependencies(), f(t) || (this.last = this.parse(t)), this.owner); + } + get() { + return this.extensions.getter(); + } + getter() { + var t; + if (this.event.isRaised() && f(this.current)) { + this.clearDependencies(), this.startCollecting(); + try { + this.last = this.parse(this.current()); + } catch (e) { + X().error({ + ...Q(e), + inspect: (t = this.owner) == null ? void 0 : t.key + }); + } + this.finishCollecting(); + } + return this.event.reset(), this.collect(), this.last; + } + invoke(t, e, i = it, n = this.interpolation) { + return t === void 0 ? this.get() : e === void 0 ? this.set(t) : this.createQueue(i, n).to(t, e); + } + createQueue(t, e) { + const i = this.get(), n = [], r = N("animation chain", function* () { + for (; n.length > 0; ) + yield* n.shift(); + }); + return r.to = (l, h, c = t, u = e) => (t = c, e = u, n.push(this.tween(l, h, c, u)), r), r.back = (l, h = t, c = e) => (t = h, e = c, n.push(this.tween(i, l, t, e)), r), r.wait = (l) => (n.push(I(l)), r), r.run = (l) => (n.push(l), r), r.do = (l) => (n.push(N(function* () { + l(); + })), r), r; + } + *tween(t, e, i, n) { + t === T && (t = this.initial), yield* this.extensions.tweener(t, e, i, n), this.set(t); + } + *tweener(t, e, i, n) { + const r = this.get(); + yield* Z(e, (l) => { + this.set(n(r, this.parse(rt(t)), i(l))); + }); + } + dispose() { + super.dispose(), this.initial = void 0, this.current = void 0, this.last = void 0; + } + /** + * Reset the signal to its initial value (if one has been set). + * + * @example + * ```ts + * const signal = createSignal(7); + * + * signal.reset(); + * // same as: + * signal(7); + * ``` + */ + reset() { + return this.initial !== void 0 && this.set(this.initial), this.owner; + } + /** + * Compute the current value of the signal and immediately set it. + * + * @remarks + * This method can be used to stop the signal from updating while keeping its + * current value. + * + * @example + * ```ts + * signal.save(); + * // same as: + * signal(signal()); + * ``` + */ + save() { + return this.set(this.get()); + } + /** + * Check if the signal is currently using its initial value. + * + * @example + * ```ts + * + * const signal = createSignal(0); + * signal.isInitial(); // true + * + * signal(5); + * signal.isInitial(); // false + * + * signal(DEFAULT); + * signal.isInitial(); // true + * ``` + */ + isInitial() { + return this.collect(), this.current === this.initial; + } + /** + * Get the raw value of this signal. + * + * @remarks + * If the signal was provided with a factory function, the function itself + * will be returned, without invoking it. + * + * This method can be used to create copies of signals. + * + * @example + * ```ts + * const a = createSignal(2); + * const b = createSignal(() => a); + * // b() == 2 + * + * const bClone = createSignal(b.raw()); + * // bClone() == 2 + * + * a(4); + * // b() == 4 + * // bClone() == 4 + * ``` + */ + raw() { + return this.current; + } +} +class lt extends A { + constructor(t, e, i, n, r = void 0, l = {}) { + var h; + super(void 0, n, r, e, l), this.entries = t, this.signals = [], this.parser = e; + for (const c of t) { + let u, d; + Array.isArray(c) ? ([u, d] = c, (h = d.context).owner ?? (h.owner = this)) : (u = c, d = new A(nt(i, (g) => e(g)[c]), p, r ?? this.invokable).toSignal()), this.signals.push([u, d]), Object.defineProperty(this.invokable, u, { value: d }); + } + } + toSignal() { + return this.invokable; + } + parse(t) { + return this.parser(t); + } + getter() { + return this.parse(Object.fromEntries(this.signals.map(([t, e]) => [t, e()]))); + } + setter(t) { + if (f(t)) + for (const [e, i] of this.signals) + i(() => this.parser(t())[e]); + else { + const e = this.parse(t); + for (const [i, n] of this.signals) + n(e[i]); + } + return this.owner; + } + reset() { + for (const [, t] of this.signals) + t.reset(); + return this.owner; + } + save() { + for (const [, t] of this.signals) + t.save(); + return this.owner; + } +} +var C; +(function(s) { + s[s.Vertical = 1] = "Vertical", s[s.Horizontal = 2] = "Horizontal"; +})(C || (C = {})); +var b; +(function(s) { + s[s.Top = 4] = "Top", s[s.Bottom = 8] = "Bottom", s[s.Left = 16] = "Left", s[s.Right = 32] = "Right"; +})(b || (b = {})); +var x; +(function(s) { + s[s.Middle = 3] = "Middle", s[s.Top = 5] = "Top", s[s.Bottom = 9] = "Bottom", s[s.Left = 18] = "Left", s[s.Right = 34] = "Right", s[s.TopLeft = 20] = "TopLeft", s[s.TopRight = 36] = "TopRight", s[s.BottomLeft = 24] = "BottomLeft", s[s.BottomRight = 40] = "BottomRight"; +})(x || (x = {})); +const R = 1e-6; +class o { + static fromRotation(t) { + return o.identity.rotate(t); + } + static fromTranslation(t) { + return o.identity.translate(new a(t)); + } + static fromScaling(t) { + return o.identity.scale(new a(t)); + } + get x() { + return new a(this.values[0], this.values[1]); + } + get y() { + return new a(this.values[2], this.values[3]); + } + get scaleX() { + return this.values[0]; + } + set scaleX(t) { + this.values[0] = this.x.normalized.scale(t).x; + } + get skewX() { + return this.values[1]; + } + set skewX(t) { + this.values[1] = t; + } + get scaleY() { + return this.values[3]; + } + set scaleY(t) { + this.values[3] = this.y.normalized.scale(t).y; + } + get skewY() { + return this.values[2]; + } + set skewY(t) { + this.values[2] = t; + } + get translateX() { + return this.values[4]; + } + set translateX(t) { + this.values[4] = t; + } + get translateY() { + return this.values[5]; + } + set translateY(t) { + this.values[5] = t; + } + get rotation() { + return a.degrees(this.values[0], this.values[1]); + } + set rotation(t) { + const e = this.rotate(t - this.rotation); + this.values[0] = e.values[0], this.values[1] = e.values[1], this.values[2] = e.values[2], this.values[3] = e.values[3]; + } + get translation() { + return new a(this.values[4], this.values[5]); + } + set translation(t) { + const e = new a(t); + this.values[4] = e.x, this.values[5] = e.y; + } + get scaling() { + return new a(this.values[0], this.values[3]); + } + set scaling(t) { + const e = new a(t), i = new a(this.values[0], this.values[1]).normalized, n = new a(this.values[2], this.values[3]).normalized; + this.values[0] = i.x * e.x, this.values[1] = i.y * e.y, this.values[2] = n.x * e.x, this.values[3] = n.y * e.y; + } + /** + * Get the inverse of the matrix. + * + * @remarks + * If the matrix is not invertible, i.e. its determinant is `0`, this will + * return `null`, instead. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const inverse = matrix.inverse; + * // => Matrix2D( + * // [-2, 1], + * // [1.5, -0.5], + * // [1, -2], + * // ) + * ``` + */ + get inverse() { + const t = this.values[0], e = this.values[1], i = this.values[2], n = this.values[3], r = this.values[4], l = this.values[5]; + let h = t * n - e * i; + return h ? (h = 1 / h, new o(n * h, -e * h, -i * h, t * h, (i * l - n * r) * h, (e * r - t * l) * h)) : null; + } + /** + * Get the determinant of the matrix. + */ + get determinant() { + return this.values[0] * this.values[3] - this.values[1] * this.values[2]; + } + get domMatrix() { + return new DOMMatrix([ + this.values[0], + this.values[1], + this.values[2], + this.values[3], + this.values[4], + this.values[5] + ]); + } + constructor(t, e, i, n, r, l) { + if (this.values = new Float32Array(6), arguments.length === 0) { + this.values = new Float32Array([1, 0, 0, 1, 0, 0]); + return; + } + if (arguments.length === 6) { + this.values[0] = t, this.values[1] = e, this.values[2] = i, this.values[3] = n, this.values[4] = r, this.values[5] = l; + return; + } + if (t instanceof DOMMatrix) { + this.values[0] = t.m11, this.values[1] = t.m12, this.values[2] = t.m21, this.values[3] = t.m22, this.values[4] = t.m41, this.values[5] = t.m42; + return; + } + if (t instanceof o) { + this.values = t.values; + return; + } + if (Array.isArray(t)) { + if (t.length === 2) { + this.values[0] = t[0], this.values[1] = t[1], this.values[2] = e[0], this.values[3] = e[1], this.values[4] = i[0], this.values[5] = i[1]; + return; + } + if (t.length === 3) { + const d = new a(t[0]), g = new a(t[1]), m = new a(t[2]); + this.values[0] = d.x, this.values[1] = d.y, this.values[2] = g.x, this.values[3] = g.y, this.values[4] = m.x, this.values[5] = m.y; + return; + } + this.values[0] = t[0], this.values[1] = t[1], this.values[2] = t[2], this.values[3] = t[3], this.values[4] = t[4], this.values[5] = t[5]; + return; + } + const h = new a(t), c = new a(e), u = new a(i); + this.values[0] = h.x, this.values[1] = h.y, this.values[2] = c.x, this.values[3] = c.y, this.values[4] = u.x, this.values[5] = u.y; + } + /** + * Get the nth component vector of the matrix. Only defined for 0, 1, and 2. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 0], + * [0, 0], + * [1, 0], + * ); + * + * const x = matrix.column(0); + * // Vector2(1, 0) + * + * const y = matrix.column(1); + * // Vector2(0, 0) + * + * const z = matrix.column(1); + * // Vector2(1, 0) + * ``` + * + * @param index - The index of the component vector to retrieve. + */ + column(t) { + return new a(this.values[t * 2], this.values[t * 2 + 1]); + } + /** + * Returns the nth row of the matrix. Only defined for 0 and 1. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 0], + * [0, 0], + * [1, 0], + * ); + * + * const firstRow = matrix.column(0); + * // [1, 0, 1] + * + * const secondRow = matrix.column(1); + * // [0, 0, 0] + * ``` + * + * @param index - The index of the row to retrieve. + */ + row(t) { + return [this.values[t], this.values[t + 2], this.values[t + 4]]; + } + /** + * Returns the matrix product of this matrix with the provided matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [0, 1], + * [1, 1], + * ); + * const b = new Matrix2D( + * [2, 1], + * [1, 1], + * [1, 1], + * ); + * + * const result = a.mul(b); + * // => Matrix2D( + * // [2, 5], + * // [1, 3], + * // [2, 4], + * // ) + * ``` + * + * @param other - The matrix to multiply with + */ + mul(t) { + const e = this.values[0], i = this.values[1], n = this.values[2], r = this.values[3], l = this.values[4], h = this.values[5], c = t.values[0], u = t.values[1], d = t.values[2], g = t.values[3], m = t.values[4], P = t.values[5]; + return new o(e * c + n * u, i * c + r * u, e * d + n * g, i * d + r * g, e * m + n * P + l, i * m + r * P + h); + } + /** + * Rotate the matrix by the provided angle. By default, the angle is + * provided in degrees. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result = a.rotate(90); + * // => Matrix2D( + * // [3, 4], + * // [-1, -2], + * // [5, 6], + * // ) + * + * // Provide the angle in radians + * const result = a.rotate(Math.PI * 0.5, true); + * // => Matrix2D( + * // [3, 4], + * // [-1, -2], + * // [5, 6], + * // ) + * ``` + * + * @param angle - The angle by which to rotate the matrix. + * @param degrees - Whether the angle is provided in degrees. + */ + rotate(t, e = !0) { + e && (t *= w); + const i = this.values[0], n = this.values[1], r = this.values[2], l = this.values[3], h = this.values[4], c = this.values[5], u = Math.sin(t), d = Math.cos(t); + return new o(i * d + r * u, n * d + l * u, i * -u + r * d, n * -u + l * d, h, c); + } + /** + * Scale the x and y component vectors of the matrix. + * + * @remarks + * If `vec` is provided as a vector, the x and y component vectors of the + * matrix will be scaled by the x and y parts of the vector, respectively. + * + * If `vec` is provided as a scalar, the x and y component vectors will be + * scaled uniformly by this factor. + * + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.scale([2, 3]); + * // => new Matrix2D( + * // [2, 4], + * // [9, 12], + * // [5, 6], + * // ) + * + * const result2 = matrix.scale(2); + * // => new Matrix2D( + * // [2, 4], + * // [6, 8], + * // [5, 6], + * // ) + * ``` + * + * @param vec - The factor by which to scale the matrix + */ + scale(t) { + const e = new a(t); + return new o(this.values[0] * e.x, this.values[1] * e.x, this.values[2] * e.y, this.values[3] * e.y, this.values[4], this.values[5]); + } + /** + * Multiply each value of the matrix by a scalar. + * + * * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.mulScalar(2); + * // => new Matrix2D( + * // [2, 4], + * // [6, 8], + * // [10, 12], + * // ) + * ``` + * + * @param s - The value by which to scale each term + */ + mulScalar(t) { + return new o(this.values[0] * t, this.values[1] * t, this.values[2] * t, this.values[3] * t, this.values[4] * t, this.values[5] * t); + } + /** + * Translate the matrix by the dimensions of the provided vector. + * + * @remarks + * If `vec` is provided as a scalar, matrix will be translated uniformly + * by this factor. + * + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const matrix = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * + * const result1 = matrix.translate([2, 3]); + * // => new Matrix2D( + * // [1, 2], + * // [3, 4], + * // [16, 22], + * // ) + * + * const result2 = matrix.translate(2); + * // => new Matrix2D( + * // [1, 2], + * // [3, 4], + * // [13, 18], + * // ) + * ``` + * + * @param vec - The vector by which to translate the matrix + */ + translate(t) { + const e = new a(t); + return new o(this.values[0], this.values[1], this.values[2], this.values[3], this.values[0] * e.x + this.values[2] * e.y + this.values[4], this.values[1] * e.x + this.values[3] * e.y + this.values[5]); + } + /** + * Add the provided matrix to this matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * const a = new Matrix2D( + * [7, 8], + * [9, 10], + * [11, 12], + * ); + * + * const result = a.add(b); + * // => Matrix2D( + * // [8, 10], + * // [12, 14], + * // [16, 18], + * // ) + * ``` + * + * @param other - The matrix to add + */ + add(t) { + return new o(this.values[0] + t.values[0], this.values[1] + t.values[1], this.values[2] + t.values[2], this.values[3] + t.values[3], this.values[4] + t.values[4], this.values[5] + t.values[5]); + } + /** + * Subtract the provided matrix from this matrix. + * + * @remarks + * This method returns a new matrix representing the result of the + * computation. It will not modify the source matrix. + * + * @example + * ```ts + * const a = new Matrix2D( + * [1, 2], + * [3, 4], + * [5, 6], + * ); + * const a = new Matrix2D( + * [7, 8], + * [9, 10], + * [11, 12], + * ); + * + * const result = a.sub(b); + * // => Matrix2D( + * // [-6, -6], + * // [-6, -6], + * // [-6, -6], + * // ) + * ``` + * + * @param other - The matrix to subract + */ + sub(t) { + return new o(this.values[0] - t.values[0], this.values[1] - t.values[1], this.values[2] - t.values[2], this.values[3] - t.values[3], this.values[4] - t.values[4], this.values[5] - t.values[5]); + } + toSymbol() { + return o.symbol; + } + equals(t, e = R) { + return Math.abs(this.values[0] - t.values[0]) <= e + Number.EPSILON && Math.abs(this.values[1] - t.values[1]) <= e + Number.EPSILON && Math.abs(this.values[2] - t.values[2]) <= e + Number.EPSILON && Math.abs(this.values[3] - t.values[3]) <= e + Number.EPSILON && Math.abs(this.values[4] - t.values[4]) <= e + Number.EPSILON && Math.abs(this.values[5] - t.values[5]) <= e + Number.EPSILON; + } + exactlyEquals(t) { + return this.values[0] === t.values[0] && this.values[1] === t.values[1] && this.values[2] === t.values[2] && this.values[3] === t.values[3] && this.values[4] === t.values[4] && this.values[5] === t.values[5]; + } +} +o.symbol = Symbol.for("@motion-canvas/core/types/Matrix2D"); +o.identity = new o(1, 0, 0, 1, 0, 0); +o.zero = new o(0, 0, 0, 0, 0, 0); +class a { + static createSignal(t, e = a.lerp, i) { + return new lt(["x", "y"], (n) => new a(n), t, e, i).toSignal(); + } + static lerp(t, e, i) { + let n, r; + return typeof i == "number" ? n = r = i : (n = i.x, r = i.y), new a(p(t.x, e.x, n), p(t.y, e.y, r)); + } + static arcLerp(t, e, i, n = !1, r) { + return r ?? (r = t.sub(e).ctg), a.lerp(t, e, st(i, n, r)); + } + static createArcLerp(t, e) { + return (i, n, r) => a.arcLerp(i, n, r, t, e); + } + /** + * Interpolates between two vectors on the polar plane by interpolating + * the angles and magnitudes of the vectors individually. + * + * @param from - The starting vector. + * @param to - The target vector. + * @param value - The t-value of the interpolation. + * @param counterclockwise - Whether the vector should get rotated + * counterclockwise. Defaults to `false`. + * @param origin - The center of rotation. Defaults to the origin. + * + * @remarks + * This function is useful when used in conjunction with {@link rotate} to + * animate an object's position on a circular arc (see examples). + * + * @example + * Animating an object in a circle around the origin + * ```tsx + * circle().position( + * circle().position().rotate(180), + * 1, + * easeInOutCubic, + * Vector2.polarLerp + * ); + * ``` + * @example + * Rotating an object around the point `[-200, 100]` + * ```ts + * circle().position( + * circle().position().rotate(180, [-200, 100]), + * 1, + * easeInOutCubic, + * Vector2.createPolarLerp(false, [-200, 100]), + * ); + * ``` + * @example + * Rotating an object counterclockwise around the origin + * ```ts + * circle().position( + * circle().position().rotate(180), + * 1, + * easeInOutCubic, + * Vector2.createPolarLerp(true), + * ); + * ``` + */ + static polarLerp(t, e, i, n = !1, r = a.zero) { + t = t.sub(r), e = e.sub(r); + const l = t.degrees; + let h = e.degrees; + l > h !== n && (h = h + (n ? -360 : 360)); + const u = p(l, h, i) * w, d = p(t.magnitude, e.magnitude, i); + return new a(d * Math.cos(u) + r.x, d * Math.sin(u) + r.y); + } + /** + * Helper function to create a {@link Vector2.polarLerp} interpolation + * function with additional parameters. + * + * @param counterclockwise - Whether the point should get rotated + * counterclockwise. + * @param center - The center of rotation. Defaults to the origin. + */ + static createPolarLerp(t = !1, e = a.zero) { + return (i, n, r) => a.polarLerp(i, n, r, t, new a(e)); + } + static fromOrigin(t) { + const e = new a(); + return t === x.Middle || (t & b.Left ? e.x = -1 : t & b.Right && (e.x = 1), t & b.Top ? e.y = -1 : t & b.Bottom && (e.y = 1)), e; + } + static fromScalar(t) { + return new a(t, t); + } + static fromRadians(t) { + return new a(Math.cos(t), Math.sin(t)); + } + static fromDegrees(t) { + return a.fromRadians(t * w); + } + /** + * Return the angle in radians between the vector described by x and y and the + * positive x-axis. + * + * @param x - The x component of the vector. + * @param y - The y component of the vector. + */ + static radians(t, e) { + return Math.atan2(e, t); + } + /** + * Return the angle in degrees between the vector described by x and y and the + * positive x-axis. + * + * @param x - The x component of the vector. + * @param y - The y component of the vector. + * + * @remarks + * The returned angle will be between -180 and 180 degrees. + */ + static degrees(t, e) { + return a.radians(t, e) * U; + } + static magnitude(t, e) { + return Math.sqrt(t * t + e * e); + } + static squaredMagnitude(t, e) { + return t * t + e * e; + } + static angleBetween(t, e) { + return Math.acos(z(-1, 1, t.dot(e) / (t.magnitude * e.magnitude))) * (t.cross(e) >= 0 ? 1 : -1); + } + get width() { + return this.x; + } + set width(t) { + this.x = t; + } + get height() { + return this.y; + } + set height(t) { + this.y = t; + } + get magnitude() { + return a.magnitude(this.x, this.y); + } + get squaredMagnitude() { + return a.squaredMagnitude(this.x, this.y); + } + get normalized() { + return this.scale(1 / a.magnitude(this.x, this.y)); + } + get safe() { + return new a(isNaN(this.x) ? 0 : this.x, isNaN(this.y) ? 0 : this.y); + } + get flipped() { + return new a(-this.x, -this.y); + } + get floored() { + return new a(Math.floor(this.x), Math.floor(this.y)); + } + get perpendicular() { + return new a(this.y, -this.x); + } + /** + * Return the angle in radians between the vector and the positive x-axis. + */ + get radians() { + return a.radians(this.x, this.y); + } + /** + * Return the angle in degrees between the vector and the positive x-axis. + * + * @remarks + * The returned angle will be between -180 and 180 degrees. + */ + get degrees() { + return a.degrees(this.x, this.y); + } + get ctg() { + return this.x / this.y; + } + constructor(t, e) { + if (this.x = 0, this.y = 0, t != null) { + if (typeof t != "object") { + this.x = t, this.y = e ?? t; + return; + } + if (Array.isArray(t)) { + this.x = t[0], this.y = t[1]; + return; + } + if ("width" in t) { + this.x = t.width, this.y = t.height; + return; + } + this.x = t.x, this.y = t.y; + } + } + lerp(t, e) { + return a.lerp(this, t, e); + } + getOriginOffset(t) { + const e = a.fromOrigin(t); + return e.x *= this.x / 2, e.y *= this.y / 2, e; + } + scale(t) { + return new a(this.x * t, this.y * t); + } + transformAsPoint(t) { + const e = new o(t); + return new a(this.x * e.scaleX + this.y * e.skewY + e.translateX, this.x * e.skewX + this.y * e.scaleY + e.translateY); + } + transform(t) { + const e = new o(t); + return new a(this.x * e.scaleX + this.y * e.skewY, this.x * e.skewX + this.y * e.scaleY); + } + mul(t) { + const e = new a(t); + return new a(this.x * e.x, this.y * e.y); + } + div(t) { + const e = new a(t); + return new a(this.x / e.x, this.y / e.y); + } + add(t) { + const e = new a(t); + return new a(this.x + e.x, this.y + e.y); + } + sub(t) { + const e = new a(t); + return new a(this.x - e.x, this.y - e.y); + } + dot(t) { + const e = new a(t); + return this.x * e.x + this.y * e.y; + } + cross(t) { + const e = new a(t); + return this.x * e.y - this.y * e.x; + } + mod(t) { + const e = new a(t); + return new a(this.x % e.x, this.y % e.y); + } + /** + * Rotates the vector around a point by the provided angle. + * + * @param angle - The angle by which to rotate in degrees. + * @param center - The center of rotation. Defaults to the origin. + */ + rotate(t, e = a.zero) { + const i = new a(e), n = o.fromTranslation(i).rotate(t).translate(i.flipped); + return this.transformAsPoint(n); + } + addX(t) { + return new a(this.x + t, this.y); + } + addY(t) { + return new a(this.x, this.y + t); + } + toSymbol() { + return a.symbol; + } + toString() { + return `Vector2(${this.x}, ${this.y})`; + } + serialize() { + return { x: this.x, y: this.y }; + } + /** + * Check if two vectors are exactly equal to each other. + * + * @remarks + * If you need to compensate for floating point inaccuracies, use the + * {@link equals} method, instead. + * + * @param other - The vector to compare. + */ + exactlyEquals(t) { + return this.x === t.x && this.y === t.y; + } + /** + * Check if two vectors are equal to each other. + * + * @remarks + * This method allows passing an allowed error margin when comparing vectors + * to compensate for floating point inaccuracies. To check if two vectors are + * exactly equal, use the {@link exactlyEquals} method, instead. + * + * @param other - The vector to compare. + * @param threshold - The allowed error threshold when comparing the vectors. + */ + equals(t, e = R) { + return Math.abs(this.x - t.x) <= e + Number.EPSILON && Math.abs(this.y - t.y) <= e + Number.EPSILON; + } +} +a.symbol = Symbol.for("@motion-canvas/core/types/Vector2"); +a.zero = new a(); +a.one = new a(1, 1); +a.right = new a(1, 0); +a.left = new a(-1, 0); +a.up = new a(0, 1); +a.down = new a(0, -1); +const ht = `${q}`, E = "motion-canvas-player"; +class ut extends HTMLElement { + constructor() { + super(); + v(this, "root"); + v(this, "canvas"); + v(this, "overlay"); + v(this, "button"); + v(this, "state", "initial"); + v(this, "project", null); + v(this, "player", null); + v(this, "defaultSettings"); + v(this, "abortController", null); + v(this, "mouseMoveId", null); + v(this, "finished", !1); + v(this, "playing", !1); + v(this, "connected", !1); + v(this, "stage", new G()); + v(this, "handleMouseMove", () => { + this.mouseMoveId && clearTimeout(this.mouseMoveId), this.hover && !this.playing && this.setPlaying(!0), this.mouseMoveId = window.setTimeout(() => { + this.mouseMoveId = null, this.updateClass(); + }, 2e3), this.updateClass(); + }); + v(this, "handleMouseLeave", () => { + this.hover && this.setPlaying(!1), this.mouseMoveId && (clearTimeout(this.mouseMoveId), this.mouseMoveId = null, this.updateClass()); + }); + v(this, "handleMouseDown", (e) => { + e.preventDefault(); + }); + v(this, "handleClick", () => { + this.auto || (this.handleMouseMove(), this.setPlaying(!this.playing), this.button.animate( + [ + { scale: "0.9" }, + { + scale: "1", + easing: "ease-out" + } + ], + { duration: 200 } + )); + }); + v(this, "render", async () => { + this.player && await this.stage.render( + this.player.playback.currentScene, + this.player.playback.previousScene + ); + }); + this.root = this.attachShadow({ mode: "open" }), this.root.innerHTML = ht, this.overlay = this.root.querySelector(".overlay"), this.button = this.root.querySelector(".button"), this.canvas = this.stage.finalBuffer, this.canvas.classList.add("canvas"), this.root.prepend(this.canvas), this.overlay.addEventListener("click", this.handleClick), this.overlay.addEventListener("mousemove", this.handleMouseMove), this.overlay.addEventListener("mouseleave", this.handleMouseLeave), this.button.addEventListener("mousedown", this.handleMouseDown), this.setState( + "initial" + /* Initial */ + ); + } + static get observedAttributes() { + return ["src", "quality", "width", "height", "auto", "variables"]; + } + get auto() { + return !!this.getAttribute("auto"); + } + get hover() { + return this.getAttribute("auto") === "hover"; + } + get quality() { + const e = this.getAttribute("quality"); + return e ? parseFloat(e) : this.defaultSettings.resolutionScale; + } + get width() { + const e = this.getAttribute("width"); + return e ? parseFloat(e) : this.defaultSettings.size.width; + } + get height() { + const e = this.getAttribute("height"); + return e ? parseFloat(e) : this.defaultSettings.size.height; + } + get variables() { + try { + const e = this.getAttribute("variables"); + return e ? JSON.parse(e) : {}; + } catch { + return this.project.logger.warn("Project variables could not be parsed."), {}; + } + } + setState(e) { + this.state = e, this.setPlaying(this.playing); + } + setPlaying(e) { + var i, n; + this.state === "ready" && (e || this.auto && !this.hover) ? ((i = this.player) == null || i.togglePlayback(!0), this.playing = !0) : ((n = this.player) == null || n.togglePlayback(!1), this.playing = !1), this.updateClass(); + } + updateClass() { + this.overlay.className = `overlay state-${this.state}`, this.canvas.className = `canvas state-${this.state}`, this.overlay.classList.toggle("playing", this.playing), this.overlay.classList.toggle("auto", this.auto), this.overlay.classList.toggle("hover", this.mouseMoveId !== null), this.connected && (this.mouseMoveId !== null || !this.playing ? this.dataset.overlay = "" : delete this.dataset.overlay); + } + async updateSource(e) { + var r, l, h, c; + this.setState( + "initial" + /* Initial */ + ), (r = this.abortController) == null || r.abort(), this.abortController = new AbortController(); + let i; + try { + const u = import( + /* webpackIgnore: true */ + /* @vite-ignore */ + e + ), d = new Promise((g) => setTimeout(g, 200)); + await Promise.any([d, u]), this.setState( + "loading" + /* Loading */ + ), i = (await u).default; + } catch (u) { + console.error(u), this.setState( + "error" + /* Error */ + ); + return; + } + this.defaultSettings = i.meta.getFullRenderingSettings(); + const n = new O(i); + n.setVariables(this.variables), this.finished = !1, (l = this.player) == null || l.onRender.unsubscribe(this.render), (h = this.player) == null || h.togglePlayback(!1), (c = this.player) == null || c.deactivate(), this.project = i, this.player = n, this.updateSettings(), this.player.onRender.subscribe(this.render), this.player.togglePlayback(this.playing), this.setState( + "ready" + /* Ready */ + ); + } + attributeChangedCallback(e, i, n) { + var r; + switch (e) { + case "auto": + this.setPlaying(this.playing); + break; + case "src": + this.updateSource(n); + break; + case "quality": + case "width": + case "height": + this.updateSettings(); + break; + case "variables": + (r = this.player) == null || r.setVariables(this.variables); + } + } + disconnectedCallback() { + var e, i; + this.connected = !1, (e = this.player) == null || e.deactivate(), (i = this.player) == null || i.onRender.unsubscribe(this.render); + } + connectedCallback() { + var e, i; + this.connected = !0, (e = this.player) == null || e.activate(), (i = this.player) == null || i.onRender.subscribe(this.render); + } + updateSettings() { + const e = { + ...this.defaultSettings, + size: new a(this.width, this.height), + resolutionScale: this.quality + }; + this.stage.configure(e), this.player.configure(e); + } +} +customElements.get(E) || customElements.define(E, ut); diff --git a/node_modules/@motion-canvas/player/package.json b/node_modules/@motion-canvas/player/package.json new file mode 100644 index 0000000..d24debe --- /dev/null +++ b/node_modules/@motion-canvas/player/package.json @@ -0,0 +1,30 @@ +{ + "name": "@motion-canvas/player", + "version": "3.11.0", + "description": "A custom element for displaying animations made with Motion Canvas", + "main": "dist/main.js", + "types": "types/main.d.ts", + "author": "motion-canvas", + "homepage": "https://motioncanvas.io/", + "bugs": "https://github.com/motion-canvas/motion-canvas/issues", + "license": "MIT", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build" + }, + "repository": { + "type": "git", + "url": "https://github.com/motion-canvas/motion-canvas.git" + }, + "files": [ + "dist", + "types" + ], + "devDependencies": { + "@motion-canvas/core": "^3.11.0", + "sass": "^1.58.0", + "terser": "^5.16.1" + }, + "gitHead": "cddc3abf625d2d9fdfeb48c2405f1206c2ee81e6" +} diff --git a/node_modules/@motion-canvas/player/types/main.d.ts b/node_modules/@motion-canvas/player/types/main.d.ts new file mode 100644 index 0000000..3898ef4 --- /dev/null +++ b/node_modules/@motion-canvas/player/types/main.d.ts @@ -0,0 +1,8 @@ +export interface MotionCanvasPlayerProps { + src: string; + width?: number; + height?: number; + auto?: boolean; + quality?: number; + variables?: string; +} diff --git a/node_modules/@nodelib/fs.scandir/LICENSE b/node_modules/@nodelib/fs.scandir/LICENSE new file mode 100644 index 0000000..65a9994 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@nodelib/fs.scandir/README.md b/node_modules/@nodelib/fs.scandir/README.md new file mode 100644 index 0000000..e0b218b --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/README.md @@ -0,0 +1,171 @@ +# @nodelib/fs.scandir + +> List files and directories inside the specified directory. + +## :bulb: Highlights + +The package is aimed at obtaining information about entries in the directory. + +* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional). +* :gear: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type. See [`old` and `modern` mode](#old-and-modern-mode). +* :link: Can safely work with broken symbolic links. + +## Install + +```console +npm install @nodelib/fs.scandir +``` + +## Usage + +```ts +import * as fsScandir from '@nodelib/fs.scandir'; + +fsScandir.scandir('path', (error, stats) => { /* … */ }); +``` + +## API + +### .scandir(path, [optionsOrSettings], callback) + +Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path with standard callback-style. + +```ts +fsScandir.scandir('path', (error, entries) => { /* … */ }); +fsScandir.scandir('path', {}, (error, entries) => { /* … */ }); +fsScandir.scandir('path', new fsScandir.Settings(), (error, entries) => { /* … */ }); +``` + +### .scandirSync(path, [optionsOrSettings]) + +Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path. + +```ts +const entries = fsScandir.scandirSync('path'); +const entries = fsScandir.scandirSync('path', {}); +const entries = fsScandir.scandirSync(('path', new fsScandir.Settings()); +``` + +#### path + +* Required: `true` +* Type: `string | Buffer | URL` + +A path to a file. If a URL is provided, it must use the `file:` protocol. + +#### optionsOrSettings + +* Required: `false` +* Type: `Options | Settings` +* Default: An instance of `Settings` class + +An [`Options`](#options) object or an instance of [`Settings`](#settingsoptions) class. + +> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class. + +### Settings([options]) + +A class of full settings of the package. + +```ts +const settings = new fsScandir.Settings({ followSymbolicLinks: false }); + +const entries = fsScandir.scandirSync('path', settings); +``` + +## Entry + +* `name` — The name of the entry (`unknown.txt`). +* `path` — The path of the entry relative to call directory (`root/unknown.txt`). +* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class. On Node.js below 10.10 will be emulated by [`DirentFromStats`](./src/utils/fs.ts) class. +* `stats` (optional) — An instance of `fs.Stats` class. + +For example, the `scandir` call for `tools` directory with one directory inside: + +```ts +{ + dirent: Dirent { name: 'typedoc', /* … */ }, + name: 'typedoc', + path: 'tools/typedoc' +} +``` + +## Options + +### stats + +* Type: `boolean` +* Default: `false` + +Adds an instance of `fs.Stats` class to the [`Entry`](#entry). + +> :book: Always use `fs.readdir` without the `withFileTypes` option. ??TODO?? + +### followSymbolicLinks + +* Type: `boolean` +* Default: `false` + +Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`. + +### `throwErrorOnBrokenSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Throw an error when symbolic link is broken if `true` or safely use `lstat` call if `false`. + +### `pathSegmentSeparator` + +* Type: `string` +* Default: `path.sep` + +By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead. + +### `fs` + +* Type: [`FileSystemAdapter`](./src/adapters/fs.ts) +* Default: A default FS methods + +By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own. + +```ts +interface FileSystemAdapter { + lstat?: typeof fs.lstat; + stat?: typeof fs.stat; + lstatSync?: typeof fs.lstatSync; + statSync?: typeof fs.statSync; + readdir?: typeof fs.readdir; + readdirSync?: typeof fs.readdirSync; +} + +const settings = new fsScandir.Settings({ + fs: { lstat: fakeLstat } +}); +``` + +## `old` and `modern` mode + +This package has two modes that are used depending on the environment and parameters of use. + +### old + +* Node.js below `10.10` or when the `stats` option is enabled + +When working in the old mode, the directory is read first (`fs.readdir`), then the type of entries is determined (`fs.lstat` and/or `fs.stat` for symbolic links). + +### modern + +* Node.js 10.10+ and the `stats` option is disabled + +In the modern mode, reading the directory (`fs.readdir` with the `withFileTypes` option) is combined with obtaining information about its entries. An additional call for symbolic links (`fs.stat`) is still present. + +This mode makes fewer calls to the file system. It's faster. + +## Changelog + +See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. diff --git a/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts b/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts new file mode 100644 index 0000000..827f1db --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts @@ -0,0 +1,20 @@ +import type * as fsStat from '@nodelib/fs.stat'; +import type { Dirent, ErrnoException } from '../types'; +export interface ReaddirAsynchronousMethod { + (filepath: string, options: { + withFileTypes: true; + }, callback: (error: ErrnoException | null, files: Dirent[]) => void): void; + (filepath: string, callback: (error: ErrnoException | null, files: string[]) => void): void; +} +export interface ReaddirSynchronousMethod { + (filepath: string, options: { + withFileTypes: true; + }): Dirent[]; + (filepath: string): string[]; +} +export declare type FileSystemAdapter = fsStat.FileSystemAdapter & { + readdir: ReaddirAsynchronousMethod; + readdirSync: ReaddirSynchronousMethod; +}; +export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter; +export declare function createFileSystemAdapter(fsMethods?: Partial): FileSystemAdapter; diff --git a/node_modules/@nodelib/fs.scandir/out/adapters/fs.js b/node_modules/@nodelib/fs.scandir/out/adapters/fs.js new file mode 100644 index 0000000..f0fe022 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/adapters/fs.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0; +const fs = require("fs"); +exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +function createFileSystemAdapter(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); +} +exports.createFileSystemAdapter = createFileSystemAdapter; diff --git a/node_modules/@nodelib/fs.scandir/out/constants.d.ts b/node_modules/@nodelib/fs.scandir/out/constants.d.ts new file mode 100644 index 0000000..33f1749 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/constants.d.ts @@ -0,0 +1,4 @@ +/** + * IS `true` for Node.js 10.10 and greater. + */ +export declare const IS_SUPPORT_READDIR_WITH_FILE_TYPES: boolean; diff --git a/node_modules/@nodelib/fs.scandir/out/constants.js b/node_modules/@nodelib/fs.scandir/out/constants.js new file mode 100644 index 0000000..7e3d441 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/constants.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0; +const NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.'); +if (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) { + throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); +} +const MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); +const MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); +const SUPPORTED_MAJOR_VERSION = 10; +const SUPPORTED_MINOR_VERSION = 10; +const IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; +const IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; +/** + * IS `true` for Node.js 10.10 and greater. + */ +exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; diff --git a/node_modules/@nodelib/fs.scandir/out/index.d.ts b/node_modules/@nodelib/fs.scandir/out/index.d.ts new file mode 100644 index 0000000..b9da83e --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/index.d.ts @@ -0,0 +1,12 @@ +import type { FileSystemAdapter, ReaddirAsynchronousMethod, ReaddirSynchronousMethod } from './adapters/fs'; +import * as async from './providers/async'; +import Settings, { Options } from './settings'; +import type { Dirent, Entry } from './types'; +declare type AsyncCallback = async.AsyncCallback; +declare function scandir(path: string, callback: AsyncCallback): void; +declare function scandir(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void; +declare namespace scandir { + function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise; +} +declare function scandirSync(path: string, optionsOrSettings?: Options | Settings): Entry[]; +export { scandir, scandirSync, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, ReaddirAsynchronousMethod, ReaddirSynchronousMethod, Options }; diff --git a/node_modules/@nodelib/fs.scandir/out/index.js b/node_modules/@nodelib/fs.scandir/out/index.js new file mode 100644 index 0000000..99c70d3 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/index.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Settings = exports.scandirSync = exports.scandir = void 0; +const async = require("./providers/async"); +const sync = require("./providers/sync"); +const settings_1 = require("./settings"); +exports.Settings = settings_1.default; +function scandir(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); +} +exports.scandir = scandir; +function scandirSync(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path, settings); +} +exports.scandirSync = scandirSync; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} diff --git a/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts new file mode 100644 index 0000000..5829676 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts @@ -0,0 +1,7 @@ +/// +import type Settings from '../settings'; +import type { Entry } from '../types'; +export declare type AsyncCallback = (error: NodeJS.ErrnoException, entries: Entry[]) => void; +export declare function read(directory: string, settings: Settings, callback: AsyncCallback): void; +export declare function readdirWithFileTypes(directory: string, settings: Settings, callback: AsyncCallback): void; +export declare function readdir(directory: string, settings: Settings, callback: AsyncCallback): void; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/async.js b/node_modules/@nodelib/fs.scandir/out/providers/async.js new file mode 100644 index 0000000..e8e2f0a --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/async.js @@ -0,0 +1,104 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.readdir = exports.readdirWithFileTypes = exports.read = void 0; +const fsStat = require("@nodelib/fs.stat"); +const rpl = require("run-parallel"); +const constants_1 = require("../constants"); +const utils = require("../utils"); +const common = require("./common"); +function read(directory, settings, callback) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + readdirWithFileTypes(directory, settings, callback); + return; + } + readdir(directory, settings, callback); +} +exports.read = read; +function readdirWithFileTypes(directory, settings, callback) { + settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const entries = dirents.map((dirent) => ({ + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + })); + if (!settings.followSymbolicLinks) { + callSuccessCallback(callback, entries); + return; + } + const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); + rpl(tasks, (rplError, rplEntries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, rplEntries); + }); + }); +} +exports.readdirWithFileTypes = readdirWithFileTypes; +function makeRplTaskEntry(entry, settings) { + return (done) => { + if (!entry.dirent.isSymbolicLink()) { + done(null, entry); + return; + } + settings.fs.stat(entry.path, (statError, stats) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + done(statError); + return; + } + done(null, entry); + return; + } + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + done(null, entry); + }); + }; +} +function readdir(directory, settings, callback) { + settings.fs.readdir(directory, (readdirError, names) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const tasks = names.map((name) => { + const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + return (done) => { + fsStat.stat(path, settings.fsStatSettings, (error, stats) => { + if (error !== null) { + done(error); + return; + } + const entry = { + name, + path, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + done(null, entry); + }); + }; + }); + rpl(tasks, (rplError, entries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, entries); + }); + }); +} +exports.readdir = readdir; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, result) { + callback(null, result); +} diff --git a/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts new file mode 100644 index 0000000..2b4d08b --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts @@ -0,0 +1 @@ +export declare function joinPathSegments(a: string, b: string, separator: string): string; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/common.js b/node_modules/@nodelib/fs.scandir/out/providers/common.js new file mode 100644 index 0000000..8724cb5 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/common.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.joinPathSegments = void 0; +function joinPathSegments(a, b, separator) { + /** + * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`). + */ + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; +} +exports.joinPathSegments = joinPathSegments; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts new file mode 100644 index 0000000..e05c8f0 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts @@ -0,0 +1,5 @@ +import type Settings from '../settings'; +import type { Entry } from '../types'; +export declare function read(directory: string, settings: Settings): Entry[]; +export declare function readdirWithFileTypes(directory: string, settings: Settings): Entry[]; +export declare function readdir(directory: string, settings: Settings): Entry[]; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/sync.js b/node_modules/@nodelib/fs.scandir/out/providers/sync.js new file mode 100644 index 0000000..146db34 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/sync.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.readdir = exports.readdirWithFileTypes = exports.read = void 0; +const fsStat = require("@nodelib/fs.stat"); +const constants_1 = require("../constants"); +const utils = require("../utils"); +const common = require("./common"); +function read(directory, settings) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings); + } + return readdir(directory, settings); +} +exports.read = read; +function readdirWithFileTypes(directory, settings) { + const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); + return dirents.map((dirent) => { + const entry = { + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + }; + if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { + try { + const stats = settings.fs.statSync(entry.path); + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + } + catch (error) { + if (settings.throwErrorOnBrokenSymbolicLink) { + throw error; + } + } + } + return entry; + }); +} +exports.readdirWithFileTypes = readdirWithFileTypes; +function readdir(directory, settings) { + const names = settings.fs.readdirSync(directory); + return names.map((name) => { + const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + const stats = fsStat.statSync(entryPath, settings.fsStatSettings); + const entry = { + name, + path: entryPath, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + return entry; + }); +} +exports.readdir = readdir; diff --git a/node_modules/@nodelib/fs.scandir/out/settings.d.ts b/node_modules/@nodelib/fs.scandir/out/settings.d.ts new file mode 100644 index 0000000..a0db115 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/settings.d.ts @@ -0,0 +1,20 @@ +import * as fsStat from '@nodelib/fs.stat'; +import * as fs from './adapters/fs'; +export interface Options { + followSymbolicLinks?: boolean; + fs?: Partial; + pathSegmentSeparator?: string; + stats?: boolean; + throwErrorOnBrokenSymbolicLink?: boolean; +} +export default class Settings { + private readonly _options; + readonly followSymbolicLinks: boolean; + readonly fs: fs.FileSystemAdapter; + readonly pathSegmentSeparator: string; + readonly stats: boolean; + readonly throwErrorOnBrokenSymbolicLink: boolean; + readonly fsStatSettings: fsStat.Settings; + constructor(_options?: Options); + private _getValue; +} diff --git a/node_modules/@nodelib/fs.scandir/out/settings.js b/node_modules/@nodelib/fs.scandir/out/settings.js new file mode 100644 index 0000000..15a3e8c --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/settings.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const fsStat = require("@nodelib/fs.stat"); +const fs = require("./adapters/fs"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.stats = this._getValue(this._options.stats, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + this.fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this.followSymbolicLinks, + fs: this.fs, + throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } +} +exports.default = Settings; diff --git a/node_modules/@nodelib/fs.scandir/out/types/index.d.ts b/node_modules/@nodelib/fs.scandir/out/types/index.d.ts new file mode 100644 index 0000000..f326c5e --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/types/index.d.ts @@ -0,0 +1,20 @@ +/// +import type * as fs from 'fs'; +export interface Entry { + dirent: Dirent; + name: string; + path: string; + stats?: Stats; +} +export declare type Stats = fs.Stats; +export declare type ErrnoException = NodeJS.ErrnoException; +export interface Dirent { + isBlockDevice: () => boolean; + isCharacterDevice: () => boolean; + isDirectory: () => boolean; + isFIFO: () => boolean; + isFile: () => boolean; + isSocket: () => boolean; + isSymbolicLink: () => boolean; + name: string; +} diff --git a/node_modules/@nodelib/fs.scandir/out/types/index.js b/node_modules/@nodelib/fs.scandir/out/types/index.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts b/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts new file mode 100644 index 0000000..bb863f1 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts @@ -0,0 +1,2 @@ +import type { Dirent, Stats } from '../types'; +export declare function createDirentFromStats(name: string, stats: Stats): Dirent; diff --git a/node_modules/@nodelib/fs.scandir/out/utils/fs.js b/node_modules/@nodelib/fs.scandir/out/utils/fs.js new file mode 100644 index 0000000..ace7c74 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/fs.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDirentFromStats = void 0; +class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } +} +function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); +} +exports.createDirentFromStats = createDirentFromStats; diff --git a/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts b/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts new file mode 100644 index 0000000..1b41954 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts @@ -0,0 +1,2 @@ +import * as fs from './fs'; +export { fs }; diff --git a/node_modules/@nodelib/fs.scandir/out/utils/index.js b/node_modules/@nodelib/fs.scandir/out/utils/index.js new file mode 100644 index 0000000..f5de129 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fs = void 0; +const fs = require("./fs"); +exports.fs = fs; diff --git a/node_modules/@nodelib/fs.scandir/package.json b/node_modules/@nodelib/fs.scandir/package.json new file mode 100644 index 0000000..d3a8924 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/package.json @@ -0,0 +1,44 @@ +{ + "name": "@nodelib/fs.scandir", + "version": "2.1.5", + "description": "List files and directories inside the specified directory", + "license": "MIT", + "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir", + "keywords": [ + "NodeLib", + "fs", + "FileSystem", + "file system", + "scandir", + "readdir", + "dirent" + ], + "engines": { + "node": ">= 8" + }, + "files": [ + "out/**", + "!out/**/*.map", + "!out/**/*.spec.*" + ], + "main": "out/index.js", + "typings": "out/index.d.ts", + "scripts": { + "clean": "rimraf {tsconfig.tsbuildinfo,out}", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc -b .", + "compile:watch": "tsc -p . --watch --sourceMap", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile:watch" + }, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "devDependencies": { + "@nodelib/fs.macchiato": "1.0.4", + "@types/run-parallel": "^1.1.0" + }, + "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562" +} diff --git a/node_modules/@nodelib/fs.stat/LICENSE b/node_modules/@nodelib/fs.stat/LICENSE new file mode 100644 index 0000000..65a9994 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@nodelib/fs.stat/README.md b/node_modules/@nodelib/fs.stat/README.md new file mode 100644 index 0000000..686f047 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/README.md @@ -0,0 +1,126 @@ +# @nodelib/fs.stat + +> Get the status of a file with some features. + +## :bulb: Highlights + +Wrapper around standard method `fs.lstat` and `fs.stat` with some features. + +* :beginner: Normally follows symbolic link. +* :gear: Can safely work with broken symbolic link. + +## Install + +```console +npm install @nodelib/fs.stat +``` + +## Usage + +```ts +import * as fsStat from '@nodelib/fs.stat'; + +fsStat.stat('path', (error, stats) => { /* … */ }); +``` + +## API + +### .stat(path, [optionsOrSettings], callback) + +Returns an instance of `fs.Stats` class for provided path with standard callback-style. + +```ts +fsStat.stat('path', (error, stats) => { /* … */ }); +fsStat.stat('path', {}, (error, stats) => { /* … */ }); +fsStat.stat('path', new fsStat.Settings(), (error, stats) => { /* … */ }); +``` + +### .statSync(path, [optionsOrSettings]) + +Returns an instance of `fs.Stats` class for provided path. + +```ts +const stats = fsStat.stat('path'); +const stats = fsStat.stat('path', {}); +const stats = fsStat.stat('path', new fsStat.Settings()); +``` + +#### path + +* Required: `true` +* Type: `string | Buffer | URL` + +A path to a file. If a URL is provided, it must use the `file:` protocol. + +#### optionsOrSettings + +* Required: `false` +* Type: `Options | Settings` +* Default: An instance of `Settings` class + +An [`Options`](#options) object or an instance of [`Settings`](#settings) class. + +> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class. + +### Settings([options]) + +A class of full settings of the package. + +```ts +const settings = new fsStat.Settings({ followSymbolicLink: false }); + +const stats = fsStat.stat('path', settings); +``` + +## Options + +### `followSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Follow symbolic link or not. Call `fs.stat` on symbolic link if `true`. + +### `markSymbolicLink` + +* Type: `boolean` +* Default: `false` + +Mark symbolic link by setting the return value of `isSymbolicLink` function to always `true` (even after `fs.stat`). + +> :book: Can be used if you want to know what is hidden behind a symbolic link, but still continue to know that it is a symbolic link. + +### `throwErrorOnBrokenSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`. + +### `fs` + +* Type: [`FileSystemAdapter`](./src/adapters/fs.ts) +* Default: A default FS methods + +By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own. + +```ts +interface FileSystemAdapter { + lstat?: typeof fs.lstat; + stat?: typeof fs.stat; + lstatSync?: typeof fs.lstatSync; + statSync?: typeof fs.statSync; +} + +const settings = new fsStat.Settings({ + fs: { lstat: fakeLstat } +}); +``` + +## Changelog + +See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. diff --git a/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts b/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts new file mode 100644 index 0000000..3af759c --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts @@ -0,0 +1,13 @@ +/// +import * as fs from 'fs'; +import type { ErrnoException } from '../types'; +export declare type StatAsynchronousMethod = (path: string, callback: (error: ErrnoException | null, stats: fs.Stats) => void) => void; +export declare type StatSynchronousMethod = (path: string) => fs.Stats; +export interface FileSystemAdapter { + lstat: StatAsynchronousMethod; + stat: StatAsynchronousMethod; + lstatSync: StatSynchronousMethod; + statSync: StatSynchronousMethod; +} +export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter; +export declare function createFileSystemAdapter(fsMethods?: Partial): FileSystemAdapter; diff --git a/node_modules/@nodelib/fs.stat/out/adapters/fs.js b/node_modules/@nodelib/fs.stat/out/adapters/fs.js new file mode 100644 index 0000000..8dc08c8 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/adapters/fs.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0; +const fs = require("fs"); +exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync +}; +function createFileSystemAdapter(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); +} +exports.createFileSystemAdapter = createFileSystemAdapter; diff --git a/node_modules/@nodelib/fs.stat/out/index.d.ts b/node_modules/@nodelib/fs.stat/out/index.d.ts new file mode 100644 index 0000000..f95db99 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/index.d.ts @@ -0,0 +1,12 @@ +import type { FileSystemAdapter, StatAsynchronousMethod, StatSynchronousMethod } from './adapters/fs'; +import * as async from './providers/async'; +import Settings, { Options } from './settings'; +import type { Stats } from './types'; +declare type AsyncCallback = async.AsyncCallback; +declare function stat(path: string, callback: AsyncCallback): void; +declare function stat(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void; +declare namespace stat { + function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise; +} +declare function statSync(path: string, optionsOrSettings?: Options | Settings): Stats; +export { Settings, stat, statSync, AsyncCallback, FileSystemAdapter, StatAsynchronousMethod, StatSynchronousMethod, Options, Stats }; diff --git a/node_modules/@nodelib/fs.stat/out/index.js b/node_modules/@nodelib/fs.stat/out/index.js new file mode 100644 index 0000000..b23f751 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/index.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.statSync = exports.stat = exports.Settings = void 0; +const async = require("./providers/async"); +const sync = require("./providers/sync"); +const settings_1 = require("./settings"); +exports.Settings = settings_1.default; +function stat(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); +} +exports.stat = stat; +function statSync(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path, settings); +} +exports.statSync = statSync; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} diff --git a/node_modules/@nodelib/fs.stat/out/providers/async.d.ts b/node_modules/@nodelib/fs.stat/out/providers/async.d.ts new file mode 100644 index 0000000..85423ce --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/async.d.ts @@ -0,0 +1,4 @@ +import type Settings from '../settings'; +import type { ErrnoException, Stats } from '../types'; +export declare type AsyncCallback = (error: ErrnoException, stats: Stats) => void; +export declare function read(path: string, settings: Settings, callback: AsyncCallback): void; diff --git a/node_modules/@nodelib/fs.stat/out/providers/async.js b/node_modules/@nodelib/fs.stat/out/providers/async.js new file mode 100644 index 0000000..983ff0e --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/async.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.read = void 0; +function read(path, settings, callback) { + settings.fs.lstat(path, (lstatError, lstat) => { + if (lstatError !== null) { + callFailureCallback(callback, lstatError); + return; + } + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + callSuccessCallback(callback, lstat); + return; + } + settings.fs.stat(path, (statError, stat) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + callFailureCallback(callback, statError); + return; + } + callSuccessCallback(callback, lstat); + return; + } + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + callSuccessCallback(callback, stat); + }); + }); +} +exports.read = read; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, result) { + callback(null, result); +} diff --git a/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts b/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts new file mode 100644 index 0000000..428c3d7 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts @@ -0,0 +1,3 @@ +import type Settings from '../settings'; +import type { Stats } from '../types'; +export declare function read(path: string, settings: Settings): Stats; diff --git a/node_modules/@nodelib/fs.stat/out/providers/sync.js b/node_modules/@nodelib/fs.stat/out/providers/sync.js new file mode 100644 index 0000000..1521c36 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/sync.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.read = void 0; +function read(path, settings) { + const lstat = settings.fs.lstatSync(path); + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return lstat; + } + try { + const stat = settings.fs.statSync(path); + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + return stat; + } + catch (error) { + if (!settings.throwErrorOnBrokenSymbolicLink) { + return lstat; + } + throw error; + } +} +exports.read = read; diff --git a/node_modules/@nodelib/fs.stat/out/settings.d.ts b/node_modules/@nodelib/fs.stat/out/settings.d.ts new file mode 100644 index 0000000..f4b3d44 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/settings.d.ts @@ -0,0 +1,16 @@ +import * as fs from './adapters/fs'; +export interface Options { + followSymbolicLink?: boolean; + fs?: Partial; + markSymbolicLink?: boolean; + throwErrorOnBrokenSymbolicLink?: boolean; +} +export default class Settings { + private readonly _options; + readonly followSymbolicLink: boolean; + readonly fs: fs.FileSystemAdapter; + readonly markSymbolicLink: boolean; + readonly throwErrorOnBrokenSymbolicLink: boolean; + constructor(_options?: Options); + private _getValue; +} diff --git a/node_modules/@nodelib/fs.stat/out/settings.js b/node_modules/@nodelib/fs.stat/out/settings.js new file mode 100644 index 0000000..111ec09 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/settings.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = require("./adapters/fs"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } +} +exports.default = Settings; diff --git a/node_modules/@nodelib/fs.stat/out/types/index.d.ts b/node_modules/@nodelib/fs.stat/out/types/index.d.ts new file mode 100644 index 0000000..74c08ed --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/types/index.d.ts @@ -0,0 +1,4 @@ +/// +import type * as fs from 'fs'; +export declare type Stats = fs.Stats; +export declare type ErrnoException = NodeJS.ErrnoException; diff --git a/node_modules/@nodelib/fs.stat/out/types/index.js b/node_modules/@nodelib/fs.stat/out/types/index.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@nodelib/fs.stat/package.json b/node_modules/@nodelib/fs.stat/package.json new file mode 100644 index 0000000..f2540c2 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/package.json @@ -0,0 +1,37 @@ +{ + "name": "@nodelib/fs.stat", + "version": "2.0.5", + "description": "Get the status of a file with some features", + "license": "MIT", + "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat", + "keywords": [ + "NodeLib", + "fs", + "FileSystem", + "file system", + "stat" + ], + "engines": { + "node": ">= 8" + }, + "files": [ + "out/**", + "!out/**/*.map", + "!out/**/*.spec.*" + ], + "main": "out/index.js", + "typings": "out/index.d.ts", + "scripts": { + "clean": "rimraf {tsconfig.tsbuildinfo,out}", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc -b .", + "compile:watch": "tsc -p . --watch --sourceMap", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile:watch" + }, + "devDependencies": { + "@nodelib/fs.macchiato": "1.0.4" + }, + "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562" +} diff --git a/node_modules/@nodelib/fs.walk/LICENSE b/node_modules/@nodelib/fs.walk/LICENSE new file mode 100644 index 0000000..65a9994 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@nodelib/fs.walk/README.md b/node_modules/@nodelib/fs.walk/README.md new file mode 100644 index 0000000..6ccc08d --- /dev/null +++ b/node_modules/@nodelib/fs.walk/README.md @@ -0,0 +1,215 @@ +# @nodelib/fs.walk + +> A library for efficiently walking a directory recursively. + +## :bulb: Highlights + +* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional). +* :rocket: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type for performance reasons. See [`old` and `modern` mode](https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode). +* :gear: Built-in directories/files and error filtering system. +* :link: Can safely work with broken symbolic links. + +## Install + +```console +npm install @nodelib/fs.walk +``` + +## Usage + +```ts +import * as fsWalk from '@nodelib/fs.walk'; + +fsWalk.walk('path', (error, entries) => { /* … */ }); +``` + +## API + +### .walk(path, [optionsOrSettings], callback) + +Reads the directory recursively and asynchronously. Requires a callback function. + +> :book: If you want to use the Promise API, use `util.promisify`. + +```ts +fsWalk.walk('path', (error, entries) => { /* … */ }); +fsWalk.walk('path', {}, (error, entries) => { /* … */ }); +fsWalk.walk('path', new fsWalk.Settings(), (error, entries) => { /* … */ }); +``` + +### .walkStream(path, [optionsOrSettings]) + +Reads the directory recursively and asynchronously. [Readable Stream](https://nodejs.org/dist/latest-v12.x/docs/api/stream.html#stream_readable_streams) is used as a provider. + +```ts +const stream = fsWalk.walkStream('path'); +const stream = fsWalk.walkStream('path', {}); +const stream = fsWalk.walkStream('path', new fsWalk.Settings()); +``` + +### .walkSync(path, [optionsOrSettings]) + +Reads the directory recursively and synchronously. Returns an array of entries. + +```ts +const entries = fsWalk.walkSync('path'); +const entries = fsWalk.walkSync('path', {}); +const entries = fsWalk.walkSync('path', new fsWalk.Settings()); +``` + +#### path + +* Required: `true` +* Type: `string | Buffer | URL` + +A path to a file. If a URL is provided, it must use the `file:` protocol. + +#### optionsOrSettings + +* Required: `false` +* Type: `Options | Settings` +* Default: An instance of `Settings` class + +An [`Options`](#options) object or an instance of [`Settings`](#settings) class. + +> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class. + +### Settings([options]) + +A class of full settings of the package. + +```ts +const settings = new fsWalk.Settings({ followSymbolicLinks: true }); + +const entries = fsWalk.walkSync('path', settings); +``` + +## Entry + +* `name` — The name of the entry (`unknown.txt`). +* `path` — The path of the entry relative to call directory (`root/unknown.txt`). +* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class. +* [`stats`] — An instance of `fs.Stats` class. + +## Options + +### basePath + +* Type: `string` +* Default: `undefined` + +By default, all paths are built relative to the root path. You can use this option to set custom root path. + +In the example below we read the files from the `root` directory, but in the results the root path will be `custom`. + +```ts +fsWalk.walkSync('root'); // → ['root/file.txt'] +fsWalk.walkSync('root', { basePath: 'custom' }); // → ['custom/file.txt'] +``` + +### concurrency + +* Type: `number` +* Default: `Infinity` + +The maximum number of concurrent calls to `fs.readdir`. + +> :book: The higher the number, the higher performance and the load on the File System. If you want to read in quiet mode, set the value to `4 * os.cpus().length` (4 is default size of [thread pool work scheduling](http://docs.libuv.org/en/v1.x/threadpool.html#thread-pool-work-scheduling)). + +### deepFilter + +* Type: [`DeepFilterFunction`](./src/settings.ts) +* Default: `undefined` + +A function that indicates whether the directory will be read deep or not. + +```ts +// Skip all directories that starts with `node_modules` +const filter: DeepFilterFunction = (entry) => !entry.path.startsWith('node_modules'); +``` + +### entryFilter + +* Type: [`EntryFilterFunction`](./src/settings.ts) +* Default: `undefined` + +A function that indicates whether the entry will be included to results or not. + +```ts +// Exclude all `.js` files from results +const filter: EntryFilterFunction = (entry) => !entry.name.endsWith('.js'); +``` + +### errorFilter + +* Type: [`ErrorFilterFunction`](./src/settings.ts) +* Default: `undefined` + +A function that allows you to skip errors that occur when reading directories. + +For example, you can skip `ENOENT` errors if required: + +```ts +// Skip all ENOENT errors +const filter: ErrorFilterFunction = (error) => error.code == 'ENOENT'; +``` + +### stats + +* Type: `boolean` +* Default: `false` + +Adds an instance of `fs.Stats` class to the [`Entry`](#entry). + +> :book: Always use `fs.readdir` with additional `fs.lstat/fs.stat` calls to determine the entry type. + +### followSymbolicLinks + +* Type: `boolean` +* Default: `false` + +Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`. + +### `throwErrorOnBrokenSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`. + +### `pathSegmentSeparator` + +* Type: `string` +* Default: `path.sep` + +By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead. + +### `fs` + +* Type: `FileSystemAdapter` +* Default: A default FS methods + +By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own. + +```ts +interface FileSystemAdapter { + lstat: typeof fs.lstat; + stat: typeof fs.stat; + lstatSync: typeof fs.lstatSync; + statSync: typeof fs.statSync; + readdir: typeof fs.readdir; + readdirSync: typeof fs.readdirSync; +} + +const settings = new fsWalk.Settings({ + fs: { lstat: fakeLstat } +}); +``` + +## Changelog + +See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. diff --git a/node_modules/@nodelib/fs.walk/out/index.d.ts b/node_modules/@nodelib/fs.walk/out/index.d.ts new file mode 100644 index 0000000..8864c7b --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/index.d.ts @@ -0,0 +1,14 @@ +/// +import type { Readable } from 'stream'; +import type { Dirent, FileSystemAdapter } from '@nodelib/fs.scandir'; +import { AsyncCallback } from './providers/async'; +import Settings, { DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction, Options } from './settings'; +import type { Entry } from './types'; +declare function walk(directory: string, callback: AsyncCallback): void; +declare function walk(directory: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void; +declare namespace walk { + function __promisify__(directory: string, optionsOrSettings?: Options | Settings): Promise; +} +declare function walkSync(directory: string, optionsOrSettings?: Options | Settings): Entry[]; +declare function walkStream(directory: string, optionsOrSettings?: Options | Settings): Readable; +export { walk, walkSync, walkStream, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, Options, DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction }; diff --git a/node_modules/@nodelib/fs.walk/out/index.js b/node_modules/@nodelib/fs.walk/out/index.js new file mode 100644 index 0000000..1520787 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/index.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0; +const async_1 = require("./providers/async"); +const stream_1 = require("./providers/stream"); +const sync_1 = require("./providers/sync"); +const settings_1 = require("./settings"); +exports.Settings = settings_1.default; +function walk(directory, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); + return; + } + new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); +} +exports.walk = walk; +function walkSync(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new sync_1.default(directory, settings); + return provider.read(); +} +exports.walkSync = walkSync; +function walkStream(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new stream_1.default(directory, settings); + return provider.read(); +} +exports.walkStream = walkStream; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/async.d.ts b/node_modules/@nodelib/fs.walk/out/providers/async.d.ts new file mode 100644 index 0000000..0f6717d --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/async.d.ts @@ -0,0 +1,12 @@ +import AsyncReader from '../readers/async'; +import type Settings from '../settings'; +import type { Entry, Errno } from '../types'; +export declare type AsyncCallback = (error: Errno, entries: Entry[]) => void; +export default class AsyncProvider { + private readonly _root; + private readonly _settings; + protected readonly _reader: AsyncReader; + private readonly _storage; + constructor(_root: string, _settings: Settings); + read(callback: AsyncCallback): void; +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/async.js b/node_modules/@nodelib/fs.walk/out/providers/async.js new file mode 100644 index 0000000..51d3be5 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/async.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const async_1 = require("../readers/async"); +class AsyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._storage = []; + } + read(callback) { + this._reader.onError((error) => { + callFailureCallback(callback, error); + }); + this._reader.onEntry((entry) => { + this._storage.push(entry); + }); + this._reader.onEnd(() => { + callSuccessCallback(callback, this._storage); + }); + this._reader.read(); + } +} +exports.default = AsyncProvider; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, entries) { + callback(null, entries); +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/index.d.ts b/node_modules/@nodelib/fs.walk/out/providers/index.d.ts new file mode 100644 index 0000000..874f60c --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/index.d.ts @@ -0,0 +1,4 @@ +import AsyncProvider from './async'; +import StreamProvider from './stream'; +import SyncProvider from './sync'; +export { AsyncProvider, StreamProvider, SyncProvider }; diff --git a/node_modules/@nodelib/fs.walk/out/providers/index.js b/node_modules/@nodelib/fs.walk/out/providers/index.js new file mode 100644 index 0000000..4c2529c --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/index.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SyncProvider = exports.StreamProvider = exports.AsyncProvider = void 0; +const async_1 = require("./async"); +exports.AsyncProvider = async_1.default; +const stream_1 = require("./stream"); +exports.StreamProvider = stream_1.default; +const sync_1 = require("./sync"); +exports.SyncProvider = sync_1.default; diff --git a/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts b/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts new file mode 100644 index 0000000..294185f --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts @@ -0,0 +1,12 @@ +/// +import { Readable } from 'stream'; +import AsyncReader from '../readers/async'; +import type Settings from '../settings'; +export default class StreamProvider { + private readonly _root; + private readonly _settings; + protected readonly _reader: AsyncReader; + protected readonly _stream: Readable; + constructor(_root: string, _settings: Settings); + read(): Readable; +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/stream.js b/node_modules/@nodelib/fs.walk/out/providers/stream.js new file mode 100644 index 0000000..51298b0 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/stream.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const async_1 = require("../readers/async"); +class StreamProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._stream = new stream_1.Readable({ + objectMode: true, + read: () => { }, + destroy: () => { + if (!this._reader.isDestroyed) { + this._reader.destroy(); + } + } + }); + } + read() { + this._reader.onError((error) => { + this._stream.emit('error', error); + }); + this._reader.onEntry((entry) => { + this._stream.push(entry); + }); + this._reader.onEnd(() => { + this._stream.push(null); + }); + this._reader.read(); + return this._stream; + } +} +exports.default = StreamProvider; diff --git a/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts b/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts new file mode 100644 index 0000000..551c42e --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts @@ -0,0 +1,10 @@ +import SyncReader from '../readers/sync'; +import type Settings from '../settings'; +import type { Entry } from '../types'; +export default class SyncProvider { + private readonly _root; + private readonly _settings; + protected readonly _reader: SyncReader; + constructor(_root: string, _settings: Settings); + read(): Entry[]; +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/sync.js b/node_modules/@nodelib/fs.walk/out/providers/sync.js new file mode 100644 index 0000000..faab6ca --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/sync.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = require("../readers/sync"); +class SyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new sync_1.default(this._root, this._settings); + } + read() { + return this._reader.read(); + } +} +exports.default = SyncProvider; diff --git a/node_modules/@nodelib/fs.walk/out/readers/async.d.ts b/node_modules/@nodelib/fs.walk/out/readers/async.d.ts new file mode 100644 index 0000000..9acf4e6 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/async.d.ts @@ -0,0 +1,30 @@ +/// +import { EventEmitter } from 'events'; +import * as fsScandir from '@nodelib/fs.scandir'; +import type Settings from '../settings'; +import type { Entry, Errno } from '../types'; +import Reader from './reader'; +declare type EntryEventCallback = (entry: Entry) => void; +declare type ErrorEventCallback = (error: Errno) => void; +declare type EndEventCallback = () => void; +export default class AsyncReader extends Reader { + protected readonly _settings: Settings; + protected readonly _scandir: typeof fsScandir.scandir; + protected readonly _emitter: EventEmitter; + private readonly _queue; + private _isFatalError; + private _isDestroyed; + constructor(_root: string, _settings: Settings); + read(): EventEmitter; + get isDestroyed(): boolean; + destroy(): void; + onEntry(callback: EntryEventCallback): void; + onError(callback: ErrorEventCallback): void; + onEnd(callback: EndEventCallback): void; + private _pushToQueue; + private _worker; + private _handleError; + private _handleEntry; + private _emitEntry; +} +export {}; diff --git a/node_modules/@nodelib/fs.walk/out/readers/async.js b/node_modules/@nodelib/fs.walk/out/readers/async.js new file mode 100644 index 0000000..ebe8dd5 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/async.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const events_1 = require("events"); +const fsScandir = require("@nodelib/fs.scandir"); +const fastq = require("fastq"); +const common = require("./common"); +const reader_1 = require("./reader"); +class AsyncReader extends reader_1.default { + constructor(_root, _settings) { + super(_root, _settings); + this._settings = _settings; + this._scandir = fsScandir.scandir; + this._emitter = new events_1.EventEmitter(); + this._queue = fastq(this._worker.bind(this), this._settings.concurrency); + this._isFatalError = false; + this._isDestroyed = false; + this._queue.drain = () => { + if (!this._isFatalError) { + this._emitter.emit('end'); + } + }; + } + read() { + this._isFatalError = false; + this._isDestroyed = false; + setImmediate(() => { + this._pushToQueue(this._root, this._settings.basePath); + }); + return this._emitter; + } + get isDestroyed() { + return this._isDestroyed; + } + destroy() { + if (this._isDestroyed) { + throw new Error('The reader is already destroyed'); + } + this._isDestroyed = true; + this._queue.killAndDrain(); + } + onEntry(callback) { + this._emitter.on('entry', callback); + } + onError(callback) { + this._emitter.once('error', callback); + } + onEnd(callback) { + this._emitter.once('end', callback); + } + _pushToQueue(directory, base) { + const queueItem = { directory, base }; + this._queue.push(queueItem, (error) => { + if (error !== null) { + this._handleError(error); + } + }); + } + _worker(item, done) { + this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => { + if (error !== null) { + done(error, undefined); + return; + } + for (const entry of entries) { + this._handleEntry(entry, item.base); + } + done(null, undefined); + }); + } + _handleError(error) { + if (this._isDestroyed || !common.isFatalError(this._settings, error)) { + return; + } + this._isFatalError = true; + this._isDestroyed = true; + this._emitter.emit('error', error); + } + _handleEntry(entry, base) { + if (this._isDestroyed || this._isFatalError) { + return; + } + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._emitEntry(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _emitEntry(entry) { + this._emitter.emit('entry', entry); + } +} +exports.default = AsyncReader; diff --git a/node_modules/@nodelib/fs.walk/out/readers/common.d.ts b/node_modules/@nodelib/fs.walk/out/readers/common.d.ts new file mode 100644 index 0000000..5985f97 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/common.d.ts @@ -0,0 +1,7 @@ +import type { FilterFunction } from '../settings'; +import type Settings from '../settings'; +import type { Errno } from '../types'; +export declare function isFatalError(settings: Settings, error: Errno): boolean; +export declare function isAppliedFilter(filter: FilterFunction | null, value: T): boolean; +export declare function replacePathSegmentSeparator(filepath: string, separator: string): string; +export declare function joinPathSegments(a: string, b: string, separator: string): string; diff --git a/node_modules/@nodelib/fs.walk/out/readers/common.js b/node_modules/@nodelib/fs.walk/out/readers/common.js new file mode 100644 index 0000000..a93572f --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/common.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0; +function isFatalError(settings, error) { + if (settings.errorFilter === null) { + return true; + } + return !settings.errorFilter(error); +} +exports.isFatalError = isFatalError; +function isAppliedFilter(filter, value) { + return filter === null || filter(value); +} +exports.isAppliedFilter = isAppliedFilter; +function replacePathSegmentSeparator(filepath, separator) { + return filepath.split(/[/\\]/).join(separator); +} +exports.replacePathSegmentSeparator = replacePathSegmentSeparator; +function joinPathSegments(a, b, separator) { + if (a === '') { + return b; + } + /** + * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`). + */ + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; +} +exports.joinPathSegments = joinPathSegments; diff --git a/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts b/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts new file mode 100644 index 0000000..e1f383b --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts @@ -0,0 +1,6 @@ +import type Settings from '../settings'; +export default class Reader { + protected readonly _root: string; + protected readonly _settings: Settings; + constructor(_root: string, _settings: Settings); +} diff --git a/node_modules/@nodelib/fs.walk/out/readers/reader.js b/node_modules/@nodelib/fs.walk/out/readers/reader.js new file mode 100644 index 0000000..782f07c --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/reader.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const common = require("./common"); +class Reader { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); + } +} +exports.default = Reader; diff --git a/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts b/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts new file mode 100644 index 0000000..af41033 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts @@ -0,0 +1,15 @@ +import * as fsScandir from '@nodelib/fs.scandir'; +import type { Entry } from '../types'; +import Reader from './reader'; +export default class SyncReader extends Reader { + protected readonly _scandir: typeof fsScandir.scandirSync; + private readonly _storage; + private readonly _queue; + read(): Entry[]; + private _pushToQueue; + private _handleQueue; + private _handleDirectory; + private _handleError; + private _handleEntry; + private _pushToStorage; +} diff --git a/node_modules/@nodelib/fs.walk/out/readers/sync.js b/node_modules/@nodelib/fs.walk/out/readers/sync.js new file mode 100644 index 0000000..9a8d5a6 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/sync.js @@ -0,0 +1,59 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsScandir = require("@nodelib/fs.scandir"); +const common = require("./common"); +const reader_1 = require("./reader"); +class SyncReader extends reader_1.default { + constructor() { + super(...arguments); + this._scandir = fsScandir.scandirSync; + this._storage = []; + this._queue = new Set(); + } + read() { + this._pushToQueue(this._root, this._settings.basePath); + this._handleQueue(); + return this._storage; + } + _pushToQueue(directory, base) { + this._queue.add({ directory, base }); + } + _handleQueue() { + for (const item of this._queue.values()) { + this._handleDirectory(item.directory, item.base); + } + } + _handleDirectory(directory, base) { + try { + const entries = this._scandir(directory, this._settings.fsScandirSettings); + for (const entry of entries) { + this._handleEntry(entry, base); + } + } + catch (error) { + this._handleError(error); + } + } + _handleError(error) { + if (!common.isFatalError(this._settings, error)) { + return; + } + throw error; + } + _handleEntry(entry, base) { + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._pushToStorage(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _pushToStorage(entry) { + this._storage.push(entry); + } +} +exports.default = SyncReader; diff --git a/node_modules/@nodelib/fs.walk/out/settings.d.ts b/node_modules/@nodelib/fs.walk/out/settings.d.ts new file mode 100644 index 0000000..d1c4b45 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/settings.d.ts @@ -0,0 +1,30 @@ +import * as fsScandir from '@nodelib/fs.scandir'; +import type { Entry, Errno } from './types'; +export declare type FilterFunction = (value: T) => boolean; +export declare type DeepFilterFunction = FilterFunction; +export declare type EntryFilterFunction = FilterFunction; +export declare type ErrorFilterFunction = FilterFunction; +export interface Options { + basePath?: string; + concurrency?: number; + deepFilter?: DeepFilterFunction; + entryFilter?: EntryFilterFunction; + errorFilter?: ErrorFilterFunction; + followSymbolicLinks?: boolean; + fs?: Partial; + pathSegmentSeparator?: string; + stats?: boolean; + throwErrorOnBrokenSymbolicLink?: boolean; +} +export default class Settings { + private readonly _options; + readonly basePath?: string; + readonly concurrency: number; + readonly deepFilter: DeepFilterFunction | null; + readonly entryFilter: EntryFilterFunction | null; + readonly errorFilter: ErrorFilterFunction | null; + readonly pathSegmentSeparator: string; + readonly fsScandirSettings: fsScandir.Settings; + constructor(_options?: Options); + private _getValue; +} diff --git a/node_modules/@nodelib/fs.walk/out/settings.js b/node_modules/@nodelib/fs.walk/out/settings.js new file mode 100644 index 0000000..d7a85c8 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/settings.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const fsScandir = require("@nodelib/fs.scandir"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.basePath = this._getValue(this._options.basePath, undefined); + this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); + this.deepFilter = this._getValue(this._options.deepFilter, null); + this.entryFilter = this._getValue(this._options.entryFilter, null); + this.errorFilter = this._getValue(this._options.errorFilter, null); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.fsScandirSettings = new fsScandir.Settings({ + followSymbolicLinks: this._options.followSymbolicLinks, + fs: this._options.fs, + pathSegmentSeparator: this._options.pathSegmentSeparator, + stats: this._options.stats, + throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } +} +exports.default = Settings; diff --git a/node_modules/@nodelib/fs.walk/out/types/index.d.ts b/node_modules/@nodelib/fs.walk/out/types/index.d.ts new file mode 100644 index 0000000..6ee9bd3 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/types/index.d.ts @@ -0,0 +1,8 @@ +/// +import type * as scandir from '@nodelib/fs.scandir'; +export declare type Entry = scandir.Entry; +export declare type Errno = NodeJS.ErrnoException; +export interface QueueItem { + directory: string; + base?: string; +} diff --git a/node_modules/@nodelib/fs.walk/out/types/index.js b/node_modules/@nodelib/fs.walk/out/types/index.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@nodelib/fs.walk/package.json b/node_modules/@nodelib/fs.walk/package.json new file mode 100644 index 0000000..86bfce4 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/package.json @@ -0,0 +1,44 @@ +{ + "name": "@nodelib/fs.walk", + "version": "1.2.8", + "description": "A library for efficiently walking a directory recursively", + "license": "MIT", + "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk", + "keywords": [ + "NodeLib", + "fs", + "FileSystem", + "file system", + "walk", + "scanner", + "crawler" + ], + "engines": { + "node": ">= 8" + }, + "files": [ + "out/**", + "!out/**/*.map", + "!out/**/*.spec.*", + "!out/**/tests/**" + ], + "main": "out/index.js", + "typings": "out/index.d.ts", + "scripts": { + "clean": "rimraf {tsconfig.tsbuildinfo,out}", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc -b .", + "compile:watch": "tsc -p . --watch --sourceMap", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile:watch" + }, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "devDependencies": { + "@nodelib/fs.macchiato": "1.0.4" + }, + "gitHead": "1e5bad48565da2b06b8600e744324ea240bf49d8" +} diff --git a/node_modules/@types/chroma-js/LICENSE b/node_modules/@types/chroma-js/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/chroma-js/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/chroma-js/README.md b/node_modules/@types/chroma-js/README.md new file mode 100644 index 0000000..648c725 --- /dev/null +++ b/node_modules/@types/chroma-js/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/chroma-js` + +# Summary +This package contains type definitions for chroma-js (https://github.com/gka/chroma.js). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chroma-js. + +### Additional Details + * Last updated: Tue, 17 Oct 2023 22:10:14 GMT + * Dependencies: none + +# Credits +These definitions were written by [Sebastian Brückner](https://github.com/invliD), [Marcin Pacholec](https://github.com/mpacholec), and [Charlie Zhuo](https://github.com/CharlieZhuo). diff --git a/node_modules/@types/chroma-js/index.d.ts b/node_modules/@types/chroma-js/index.d.ts new file mode 100644 index 0000000..64bbde6 --- /dev/null +++ b/node_modules/@types/chroma-js/index.d.ts @@ -0,0 +1,534 @@ +/** + * Chroma.js is a tiny library for all kinds of color conversions and color scales. + */ +declare namespace chroma { + interface ColorSpaces { + rgb: [number, number, number]; + rgba: [number, number, number, number]; + hsl: [number, number, number]; + hsv: [number, number, number]; + hsi: [number, number, number]; + lab: [number, number, number]; + oklab: [number, number, number]; + lch: [number, number, number]; + oklch: [number, number, number]; + hcl: [number, number, number]; + cmyk: [number, number, number, number]; + gl: [number, number, number, number]; + } + + type InterpolationMode = "rgb" | "hsl" | "hsv" | "hsi" | "lab" | "oklab" | "lch" | "oklch" | "hcl" | "lrgb"; + + interface ChromaStatic { + /** + * Creates a color from a string representation (as supported in CSS). + * Creates a color from a number representation [0; 16777215] + * + * @param color The string to convert to a color. + * @return the color object. + */ + (color: string | number | Color): Color; + + /** + * Create a color in the specified color space using a, b and c as values. + * + * @param colorSpace The color space to use. Defaults to "rgb". + * @return the color object. + */ + (a: number, b: number, c: number, colorSpace?: keyof ColorSpaces): Color; + + (a: number, b: number, c: number, d: number, colorSpace?: keyof ColorSpaces): Color; + + /** + * Create a color in the specified color space using values. + * + * @param values An array of values (e.g. [r, g, b, a?]). + * @param colorSpace The color space to use. Defaults to "rgb". + * @return the color object. + */ + (values: number[], colorSpace?: keyof ColorSpaces): Color; + + /** + * Create a color from a hex or string representation (as supported in CSS). + * + * This is an alias of chroma.css(). + * + * @param color The string to convert to a color. + * @return the color object. + */ + hex(color: string): Color; + + valid(color: any, mode?: string): boolean; + + hsl(h: number, s: number, l: number, alpha?: number): Color; + + hsv(h: number, s: number, v: number, alpha?: number): Color; + + lab(lightness: number, a: number, b: number, alpha?: number): Color; + + oklab(lightness: number, a: number, b: number, alpha?: number): Color; + + lch(l: number, c: number, h: number, alpha?: number): Color; + + oklch(l: number, c: number, h: number, alpha?: number): Color; + + /** + * Same meaning as lch(), but in different order. + */ + hcl(h: number, c: number, l: number, alpha?: number): Color; + + rgb(r: number, g: number, b: number, alpha?: number): Color; + + /** + * GL is a variant of RGB(A), with the only difference that the components are normalized to the range of 0..1. + */ + gl(red: number, green: number, blue: number, alpha?: number): Color; + + /** + * Returns a color from the color temperature scale. + * light 2000K, bright sunlight 6000K. + * Based on Neil Bartlett's implementation. + * https://github.com/neilbartlett/color-temperature + */ + temperature(t: number): Color; + + /** + * Mixes two colors. The mix ratio is a value between 0 and 1. + * The color mixing produces different results based the color space used for interpolation. Defaults to LRGB. + * @example chroma.mix('red', 'blue', 0.25) // => #bf0040 + * @example chroma.mix('red', 'blue', 0.5, 'hsl') // => #ff00ff + */ + mix(color1: string | Color, color2: string | Color, f?: number, colorSpace?: InterpolationMode): Color; + + /** + * Alias for {@see mix}. + */ + interpolate(color1: string | Color, color2: string | Color, f?: number, colorSpace?: InterpolationMode): Color; + + /** + * Similar to {@link mix}, but accepts more than two colors. Simple averaging of R,G,B components and the alpha + * channel. + */ + average(colors: Array, colorSpace?: InterpolationMode, weights?: number[]): Color; + + /** + * Blends two colors using RGB channel-wise blend functions. + */ + blend( + color1: string | Color, + color2: string | Color, + blendMode: "multiply" | "darken" | "lighten" | "screen" | "overlay" | "burn" | "dodge", + ): Color; + + /** + * Returns a random color. + */ + random(): Color; + + /** + * Computes the WCAG contrast ratio between two colors. + * A minimum contrast of 4.5:1 is recommended {@link https://www.w3.org/TR/WCAG20-TECHS/G18.html} + * to ensure that text is still readable against a background color. + */ + contrast(color1: string | Color, color2: string | Color): number; + + /** + * Computes the eucledian distance between two colors in a given color space (default is 'lab'). + * {@link https://en.wikipedia.org/wiki/Euclidean_distance#Three_dimensions} + */ + distance(color1: string | Color, color2: string | Color, colorSpace?: keyof ColorSpaces): number; + + /** + * Computes color difference {@link https://en.wikipedia.org/wiki/Color_difference#CMC_l:c_.281984.29} as + * developed by the Colour Measurement Committee of the Society of Dyers and Colourists (CMC) in 1984. + * The implementation is adapted from Bruce Lindbloom. + * {@link https://web.archive.org/web/20160306044036/http://www.brucelindbloom.com/javascript/ColorDiff.js} + * The parameters L (default 1) and C (default 1) are weighting factors for lightness and chromacity. + */ + deltaE(color1: string | Color, color2: string | Color, L?: number, C?: number): number; + + /** + * chroma.brewer is an map of ColorBrewer scales that are included in chroma.js for convenience. + * chroma.scale uses the colors to construct. + */ + brewer: { + OrRd: string[]; + PuBu: string[]; + BuPu: string[]; + Oranges: string[]; + BuGn: string[]; + YlOrBr: string[]; + YlGn: string[]; + Reds: string[]; + RdPu: string[]; + Greens: string[]; + YlGnBu: string[]; + Purples: string[]; + GnBu: string[]; + Greys: string[]; + YlOrRd: string[]; + PuRd: string[]; + Blues: string[]; + PuBuGn: string[]; + Spectral: string[]; + RdYlGn: string[]; + RdBu: string[]; + PiYG: string[]; + PRGn: string[]; + RdYlBu: string[]; + BrBG: string[]; + RdGy: string[]; + PuOr: string[]; + Set2: string[]; + Accent: string[]; + Set1: string[]; + Set3: string[]; + Dark2: string[]; + Paired: string[]; + Pastel2: string[]; + Pastel1: string[]; + }; + + /** + * Helper function that computes class breaks based on data. + * Mode: + *
  • equidistant 'e' breaks are computed by dividing the total range of the data into n groups + * of equal size. + *
  • quantile 'q' input domain is divided by quantile ranges. + *
  • logarithmic 'l' breaks are equidistant breaks but on a logarithmic scale. + *
  • k-means 'k' breaks use the 1-dimensional + * [k-means clustering algorithm]{@link https://en.wikipedia.org/wiki/K-means_clustering} to find (roughly) n + * groups of "similar" values. Note that this k-means implementation does not guarantee to find exactly n groups. + */ + limits(data: number[], mode: "e" | "q" | "l" | "k", c: number): number[]; + + /** + * Returns a function that + * [bezier-interpolates]{@link https://www.vis4.net/blog/posts/mastering-multi-hued-color-scales/} between + * colors in Lab space. The input range of the function is [0..1]. + * You can convert it to a scale instance by calling chroma.bezier(...).scale() + */ + bezier(colors: string[]): { (t: number): Color; scale(): Scale }; + + scale(name: string | Color): Scale; + + scale(colors?: Array): Scale; + + cubehelix(): Cubehelix; + + cmyk(c: number, m: number, y: number, k: number): Color; + + css(col: string): Color; + } + + interface Color { + /** + * Get and set the color opacity. + */ + alpha(a: number): Color; + alpha(): number; + + darken(f?: number): Color; + + mix(targetColor: string | Color, f?: number, colorSpace?: keyof ColorSpaces): Color; + + brighten(f?: number): Color; + + /** + * Changes the saturation of a color by manipulating the Lch chromacity. + */ + saturate(s?: number): Color; + + /** + * Similar to saturate, but the opposite direction. + */ + desaturate(s?: number): Color; + + /** + * Changes a single channel and returns the result a new chroma object. + * @example + * // half Lab lightness + * chroma('orangered').set('lab.l', '*0.5') + * @example + * // double Lch saturation + * chroma('darkseagreen').set('lch.c', '*2') + */ + set(modechan: string, v: number | string): Color; + + /** + * Returns a single channel value. + * Also @see set + */ + get(modechan: string): number; + + /** + * Relative brightness, according to the + * [WCAG]{@link http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef} definition. Normalized to + * 0 for darkest black and 1 for lightest white. + */ + luminance(): number; + + /** + * Set luminance of color. The source color will be interpolated with black or white until the correct luminance is found. + * The color space used defaults to RGB. + */ + luminance(l: number, colorSpace?: InterpolationMode): Color; + + /** + * Get color as hexadecimal string. + * + * @param mode `auto` - string will include alpha channel only if it's less than 1. + * `rgb` - string will not include alpha channel. + * `rgba` - string will include alpha channel. + * + * @example + * chroma('orange').hex() === '#ffa500' + * chroma('orange').alpha(0.5).hex() === '#ffa50080' + * chroma('orange').alpha(0.5).hex('rgb') === '#ffa500' + */ + hex(mode?: "auto" | "rgb" | "rgba"): string; + + /** + * Returns the named color. Falls back to hexadecimal RGB string, if the color isn't present. + */ + name(): string; + + /** + * Returns a RGB() or HSL() string representation that can be used as CSS-color definition. + * mode defaults to 'rgb' + */ + css(mode?: "hsl"): string; + + /** + * Estimate the temperature in Kelvin of any given color, though this makes the only sense for colors from the + * [temperature gradient]{@link ChromaStatic.temperature} above. + */ + temperature(): number; + + /** + * Returns the numeric representation of the hexadecimal RGB color. + * + * @example + * chroma('#000000').num() === 0 + * chroma('#0000ff').num() === 255 + * chroma('#00ff00').num() === 65280 + * chroma('#ff0000').num() === 16711680 + */ + num(): number; + + /** + * Returns an array with the red, green, and blue component, each as + * number within the range 0..255. Chroma internally stores RGB + * channels as floats but rounds the numbers before returning them. + * You can pass false to prevent the rounding. + * + * @example + * chroma('orange').rgb() === [255,165,0] + * chroma('orange').darken().rgb() === [198,118,0] + * chroma('orange').darken().rgb(false) === [198.05,118.11,0] + */ + rgb: (round?: boolean) => ColorSpaces["rgb"]; + + /** + * Just like color.rgb but adds the alpha channel to the returned array. + * + * @example + * chroma('orange').rgba() === [255,165,0,1] + * chroma('hsla(20, 100%, 40%, 0.5)').rgba() === [204,68,0,0.5] + */ + rgba: (round?: boolean) => ColorSpaces["rgba"]; + + /** + * Returns an array with the `hue`, `saturation`, and `lightness` + * component. Hue is the color angle in degree (`0..360`), saturation + * and lightness are within `0..1`. Note that for hue-less colors + * (black, white, and grays), the hue component will be NaN. + * + * @example + * chroma('orange').hsl() === [38.82,1,0.5,1] + * chroma('white').hsl() === [NaN,0,1,1] + */ + hsl: () => ColorSpaces["hsl"]; + + /** + * Returns an array with the `hue`, `saturation`, and `value` + * components. Hue is the color angle in degree (`0..360`), + * saturation and value are within `0..1`. Note that for hue-less + * colors (black, white, and grays), the hue component will be NaN. + * + * @example + * chroma('orange').hsv() === [38.82,1,1] + * chroma('white').hsv() === [NaN,0,1] + */ + hsv: () => ColorSpaces["hsv"]; + + /** + * Returns an array with the `hue`, `saturation`, and `intensity` + * components, each as number between 0 and 255. Note that for hue-less + * colors (black, white, and grays), the hue component will be NaN. + * + * @example + * chroma('orange').hsi() === [39.64,1,0.55] + * chroma('white').hsi() === [NaN,0,1] + */ + hsi: () => ColorSpaces["hsi"]; + + /** + * Returns an array with the **L**, **a**, and **b** components. + * + * @example + * chroma('orange').lab() === [74.94,23.93,78.95] + */ + lab: () => ColorSpaces["lab"]; + + /** + * Returns an array with the **L**, **a**, and **b** components. + * + * @example + * chroma('orange').oklab() === [0.7927,0.0566,0.1614] + */ + oklab: () => ColorSpaces["oklab"]; + + /** + * Returns an array with the **Lightness**, **chroma**, and **hue** + * components. + * + * @example + * chroma('skyblue').lch() === [79.21,25.94,235.11] + */ + lch: () => ColorSpaces["lch"]; + + /** + * Returns an array with the **Lightness**, **chroma**, and **hue** + * components. + * + * @example + * chroma('skyblue').oklch() === [0.8148,0.0819,225.8] + */ + oklch: () => ColorSpaces["oklch"]; + + /** + * Alias of [lch](#color-lch), but with the components in reverse + * order. + * + * @example + * chroma('skyblue').hcl() === [235.11,25.94,79.21] + */ + hcl: () => ColorSpaces["hcl"]; + + /** + * Just like color.rgb but adds the alpha channel to the returned + * array. + * + * @example + * chroma('orange').rgba() === [255,165,0,1] + * chroma('hsla(20, 100%, 40%, 0.5)').rgba() === [204,68,0,0.5] + */ + cmyk: () => ColorSpaces["cmyk"]; + + /** + * Returns an array with the cyan, magenta, yellow, and key (black) + * components, each as a normalized value between 0 and 1. + * + * @example + * chroma('33cc00').gl() === [0.2,0.8,0,1] + */ + gl: () => ColorSpaces["gl"]; + + /** + * Test if a color has been clipped or not. + * Colors generated from CIELab color space may have their RGB + * channels clipped to the range of [0..255]. + * Colors outside that range may exist in nature but are not + * displayable on RGB monitors (such as ultraviolet). + * + * @example + * chroma.hcl(50, 40, 20).clipped() === true + */ + clipped: () => boolean; + + /** + * The unclipped RGB components. + * + * @example + * chroma.hcl(50, 40, 100)._rgb._unclipped === [322.65,235.24,196.7,1] + */ + _rgb: { _unclipped: ColorSpaces["rgba"] }; + } + + interface Scale { + (c: string[]): Scale; + + (value: number | null | undefined): OutType; + + domain(d?: number[], n?: number, mode?: string): this; + + mode(mode: InterpolationMode): this; + + gamma(g: number): this; + + cache(use: boolean): boolean; + + correctLightness(enable?: boolean): this; + + padding(p: number | number[]): this; + + /** + * You can call scale.colors(n) to quickly grab `c` equi-distant colors from a color scale. If called with no + * arguments, scale.colors returns the original array of colors used to create the scale. + */ + colors( + c: number | undefined, + format: undefined | null | "alpha" | "darken" | "brighten" | "saturate" | "desaturate", + ): Color[]; + colors(c: number | undefined, format: "luminance" | "temperature"): number[]; + colors(c: number | undefined, format: K): Array; + colors(c: number | undefined, format?: "hex" | "name"): string[]; + + /** + * If you want the scale function to return a distinct set of colors instead of a continuous gradient, you can + * use scale.classes. If you pass a number the scale will broken into equi-distant classes. + * You can also define custom class breaks by passing them as array + */ + classes(c: number | number[]): this; + + /** + * Set out format for scale() call. Passing null will result in a scale which outputs colors. + */ + out(format: null): Scale; + out(format: K): Scale; + out(format: "hex"): Scale; + } + + interface Cubehelix { + /** + * Set start color for hue rotation, default=300 + */ + start(s: number): Cubehelix; + + /** + * number (and direction) of hue rotations (e.g. 1=360°, 1.5=`540°``), default=-1.5 + */ + rotations(r: number): Cubehelix; + + /** + * gamma factor can be used to emphasise low or high intensity values, default=1 + */ + gamma(g: number): Cubehelix; + + /** + * lightness range: default: [0,1] (black -> white) + */ + lightness(l: number[]): Cubehelix; + + /** + * You can call cubehelix.scale() to use the cube-helix through the chroma.scale interface. + */ + scale(): Scale; + } +} + +declare var chroma: chroma.ChromaStatic; + +export = chroma; +export as namespace chroma; diff --git a/node_modules/@types/chroma-js/package.json b/node_modules/@types/chroma-js/package.json new file mode 100644 index 0000000..7a027e6 --- /dev/null +++ b/node_modules/@types/chroma-js/package.json @@ -0,0 +1,35 @@ +{ + "name": "@types/chroma-js", + "version": "2.4.2", + "description": "TypeScript definitions for chroma-js", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chroma-js", + "license": "MIT", + "contributors": [ + { + "name": "Sebastian Brückner", + "githubUsername": "invliD", + "url": "https://github.com/invliD" + }, + { + "name": "Marcin Pacholec", + "githubUsername": "mpacholec", + "url": "https://github.com/mpacholec" + }, + { + "name": "Charlie Zhuo", + "githubUsername": "CharlieZhuo", + "url": "https://github.com/CharlieZhuo" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/chroma-js" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "51dda77a92ae37a8dbb7e189fa6ac303dc58d33e7bb5f4c09c4c85ff0e57d36d", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/anymatch/LICENSE b/node_modules/anymatch/LICENSE new file mode 100644 index 0000000..491766c --- /dev/null +++ b/node_modules/anymatch/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com) + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/anymatch/README.md b/node_modules/anymatch/README.md new file mode 100644 index 0000000..1dd67f5 --- /dev/null +++ b/node_modules/anymatch/README.md @@ -0,0 +1,87 @@ +anymatch [![Build Status](https://travis-ci.org/micromatch/anymatch.svg?branch=master)](https://travis-ci.org/micromatch/anymatch) [![Coverage Status](https://img.shields.io/coveralls/micromatch/anymatch.svg?branch=master)](https://coveralls.io/r/micromatch/anymatch?branch=master) +====== +Javascript module to match a string against a regular expression, glob, string, +or function that takes the string as an argument and returns a truthy or falsy +value. The matcher can also be an array of any or all of these. Useful for +allowing a very flexible user-defined config to define things like file paths. + +__Note: This module has Bash-parity, please be aware that Windows-style backslashes are not supported as separators. See https://github.com/micromatch/micromatch#backslashes for more information.__ + + +Usage +----- +```sh +npm install anymatch +``` + +#### anymatch(matchers, testString, [returnIndex], [options]) +* __matchers__: (_Array|String|RegExp|Function_) +String to be directly matched, string with glob patterns, regular expression +test, function that takes the testString as an argument and returns a truthy +value if it should be matched, or an array of any number and mix of these types. +* __testString__: (_String|Array_) The string to test against the matchers. If +passed as an array, the first element of the array will be used as the +`testString` for non-function matchers, while the entire array will be applied +as the arguments for function matchers. +* __options__: (_Object_ [optional]_) Any of the [picomatch](https://github.com/micromatch/picomatch#options) options. + * __returnIndex__: (_Boolean [optional]_) If true, return the array index of +the first matcher that that testString matched, or -1 if no match, instead of a +boolean result. + +```js +const anymatch = require('anymatch'); + +const matchers = [ 'path/to/file.js', 'path/anyjs/**/*.js', /foo.js$/, string => string.includes('bar') && string.length > 10 ] ; + +anymatch(matchers, 'path/to/file.js'); // true +anymatch(matchers, 'path/anyjs/baz.js'); // true +anymatch(matchers, 'path/to/foo.js'); // true +anymatch(matchers, 'path/to/bar.js'); // true +anymatch(matchers, 'bar.js'); // false + +// returnIndex = true +anymatch(matchers, 'foo.js', {returnIndex: true}); // 2 +anymatch(matchers, 'path/anyjs/foo.js', {returnIndex: true}); // 1 + +// any picomatc + +// using globs to match directories and their children +anymatch('node_modules', 'node_modules'); // true +anymatch('node_modules', 'node_modules/somelib/index.js'); // false +anymatch('node_modules/**', 'node_modules/somelib/index.js'); // true +anymatch('node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // false +anymatch('**/node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // true + +const matcher = anymatch(matchers); +['foo.js', 'bar.js'].filter(matcher); // [ 'foo.js' ] +anymatch master* ❯ + +``` + +#### anymatch(matchers) +You can also pass in only your matcher(s) to get a curried function that has +already been bound to the provided matching criteria. This can be used as an +`Array#filter` callback. + +```js +var matcher = anymatch(matchers); + +matcher('path/to/file.js'); // true +matcher('path/anyjs/baz.js', true); // 1 + +['foo.js', 'bar.js'].filter(matcher); // ['foo.js'] +``` + +Changelog +---------- +[See release notes page on GitHub](https://github.com/micromatch/anymatch/releases) + +- **v3.0:** Removed `startIndex` and `endIndex` arguments. Node 8.x-only. +- **v2.0:** [micromatch](https://github.com/jonschlinkert/micromatch) moves away from minimatch-parity and inline with Bash. This includes handling backslashes differently (see https://github.com/micromatch/micromatch#backslashes for more information). +- **v1.2:** anymatch uses [micromatch](https://github.com/jonschlinkert/micromatch) +for glob pattern matching. Issues with glob pattern matching should be +reported directly to the [micromatch issue tracker](https://github.com/jonschlinkert/micromatch/issues). + +License +------- +[ISC](https://raw.github.com/micromatch/anymatch/master/LICENSE) diff --git a/node_modules/anymatch/index.d.ts b/node_modules/anymatch/index.d.ts new file mode 100644 index 0000000..3ef7eaa --- /dev/null +++ b/node_modules/anymatch/index.d.ts @@ -0,0 +1,20 @@ +type AnymatchFn = (testString: string) => boolean; +type AnymatchPattern = string|RegExp|AnymatchFn; +type AnymatchMatcher = AnymatchPattern|AnymatchPattern[] +type AnymatchTester = { + (testString: string|any[], returnIndex: true): number; + (testString: string|any[]): boolean; +} + +type PicomatchOptions = {dot: boolean}; + +declare const anymatch: { + (matchers: AnymatchMatcher): AnymatchTester; + (matchers: AnymatchMatcher, testString: null, returnIndex: true | PicomatchOptions): AnymatchTester; + (matchers: AnymatchMatcher, testString: string|any[], returnIndex: true | PicomatchOptions): number; + (matchers: AnymatchMatcher, testString: string|any[]): boolean; +} + +export {AnymatchMatcher as Matcher} +export {AnymatchTester as Tester} +export default anymatch diff --git a/node_modules/anymatch/index.js b/node_modules/anymatch/index.js new file mode 100644 index 0000000..8eb73e9 --- /dev/null +++ b/node_modules/anymatch/index.js @@ -0,0 +1,104 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { value: true }); + +const picomatch = require('picomatch'); +const normalizePath = require('normalize-path'); + +/** + * @typedef {(testString: string) => boolean} AnymatchFn + * @typedef {string|RegExp|AnymatchFn} AnymatchPattern + * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher + */ +const BANG = '!'; +const DEFAULT_OPTIONS = {returnIndex: false}; +const arrify = (item) => Array.isArray(item) ? item : [item]; + +/** + * @param {AnymatchPattern} matcher + * @param {object} options + * @returns {AnymatchFn} + */ +const createPattern = (matcher, options) => { + if (typeof matcher === 'function') { + return matcher; + } + if (typeof matcher === 'string') { + const glob = picomatch(matcher, options); + return (string) => matcher === string || glob(string); + } + if (matcher instanceof RegExp) { + return (string) => matcher.test(string); + } + return (string) => false; +}; + +/** + * @param {Array} patterns + * @param {Array} negPatterns + * @param {String|Array} args + * @param {Boolean} returnIndex + * @returns {boolean|number} + */ +const matchPatterns = (patterns, negPatterns, args, returnIndex) => { + const isList = Array.isArray(args); + const _path = isList ? args[0] : args; + if (!isList && typeof _path !== 'string') { + throw new TypeError('anymatch: second argument must be a string: got ' + + Object.prototype.toString.call(_path)) + } + const path = normalizePath(_path, false); + + for (let index = 0; index < negPatterns.length; index++) { + const nglob = negPatterns[index]; + if (nglob(path)) { + return returnIndex ? -1 : false; + } + } + + const applied = isList && [path].concat(args.slice(1)); + for (let index = 0; index < patterns.length; index++) { + const pattern = patterns[index]; + if (isList ? pattern(...applied) : pattern(path)) { + return returnIndex ? index : true; + } + } + + return returnIndex ? -1 : false; +}; + +/** + * @param {AnymatchMatcher} matchers + * @param {Array|string} testString + * @param {object} options + * @returns {boolean|number|Function} + */ +const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => { + if (matchers == null) { + throw new TypeError('anymatch: specify first argument'); + } + const opts = typeof options === 'boolean' ? {returnIndex: options} : options; + const returnIndex = opts.returnIndex || false; + + // Early cache for matchers. + const mtchers = arrify(matchers); + const negatedGlobs = mtchers + .filter(item => typeof item === 'string' && item.charAt(0) === BANG) + .map(item => item.slice(1)) + .map(item => picomatch(item, opts)); + const patterns = mtchers + .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG)) + .map(matcher => createPattern(matcher, opts)); + + if (testString == null) { + return (testString, ri = false) => { + const returnIndex = typeof ri === 'boolean' ? ri : false; + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); + } + } + + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); +}; + +anymatch.default = anymatch; +module.exports = anymatch; diff --git a/node_modules/anymatch/package.json b/node_modules/anymatch/package.json new file mode 100644 index 0000000..2cb2307 --- /dev/null +++ b/node_modules/anymatch/package.json @@ -0,0 +1,48 @@ +{ + "name": "anymatch", + "version": "3.1.3", + "description": "Matches strings against configurable strings, globs, regular expressions, and/or functions", + "files": [ + "index.js", + "index.d.ts" + ], + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "author": { + "name": "Elan Shanker", + "url": "https://github.com/es128" + }, + "license": "ISC", + "homepage": "https://github.com/micromatch/anymatch", + "repository": { + "type": "git", + "url": "https://github.com/micromatch/anymatch" + }, + "keywords": [ + "match", + "any", + "string", + "file", + "fs", + "list", + "glob", + "regex", + "regexp", + "regular", + "expression", + "function" + ], + "scripts": { + "test": "nyc mocha", + "mocha": "mocha" + }, + "devDependencies": { + "mocha": "^6.1.3", + "nyc": "^14.0.0" + }, + "engines": { + "node": ">= 8" + } +} diff --git a/node_modules/binary-extensions/binary-extensions.json b/node_modules/binary-extensions/binary-extensions.json new file mode 100644 index 0000000..4aab383 --- /dev/null +++ b/node_modules/binary-extensions/binary-extensions.json @@ -0,0 +1,260 @@ +[ + "3dm", + "3ds", + "3g2", + "3gp", + "7z", + "a", + "aac", + "adp", + "ai", + "aif", + "aiff", + "alz", + "ape", + "apk", + "appimage", + "ar", + "arj", + "asf", + "au", + "avi", + "bak", + "baml", + "bh", + "bin", + "bk", + "bmp", + "btif", + "bz2", + "bzip2", + "cab", + "caf", + "cgm", + "class", + "cmx", + "cpio", + "cr2", + "cur", + "dat", + "dcm", + "deb", + "dex", + "djvu", + "dll", + "dmg", + "dng", + "doc", + "docm", + "docx", + "dot", + "dotm", + "dra", + "DS_Store", + "dsk", + "dts", + "dtshd", + "dvb", + "dwg", + "dxf", + "ecelp4800", + "ecelp7470", + "ecelp9600", + "egg", + "eol", + "eot", + "epub", + "exe", + "f4v", + "fbs", + "fh", + "fla", + "flac", + "flatpak", + "fli", + "flv", + "fpx", + "fst", + "fvt", + "g3", + "gh", + "gif", + "graffle", + "gz", + "gzip", + "h261", + "h263", + "h264", + "icns", + "ico", + "ief", + "img", + "ipa", + "iso", + "jar", + "jpeg", + "jpg", + "jpgv", + "jpm", + "jxr", + "key", + "ktx", + "lha", + "lib", + "lvp", + "lz", + "lzh", + "lzma", + "lzo", + "m3u", + "m4a", + "m4v", + "mar", + "mdi", + "mht", + "mid", + "midi", + "mj2", + "mka", + "mkv", + "mmr", + "mng", + "mobi", + "mov", + "movie", + "mp3", + "mp4", + "mp4a", + "mpeg", + "mpg", + "mpga", + "mxu", + "nef", + "npx", + "numbers", + "nupkg", + "o", + "odp", + "ods", + "odt", + "oga", + "ogg", + "ogv", + "otf", + "ott", + "pages", + "pbm", + "pcx", + "pdb", + "pdf", + "pea", + "pgm", + "pic", + "png", + "pnm", + "pot", + "potm", + "potx", + "ppa", + "ppam", + "ppm", + "pps", + "ppsm", + "ppsx", + "ppt", + "pptm", + "pptx", + "psd", + "pya", + "pyc", + "pyo", + "pyv", + "qt", + "rar", + "ras", + "raw", + "resources", + "rgb", + "rip", + "rlc", + "rmf", + "rmvb", + "rpm", + "rtf", + "rz", + "s3m", + "s7z", + "scpt", + "sgi", + "shar", + "snap", + "sil", + "sketch", + "slk", + "smv", + "snk", + "so", + "stl", + "suo", + "sub", + "swf", + "tar", + "tbz", + "tbz2", + "tga", + "tgz", + "thmx", + "tif", + "tiff", + "tlz", + "ttc", + "ttf", + "txz", + "udf", + "uvh", + "uvi", + "uvm", + "uvp", + "uvs", + "uvu", + "viv", + "vob", + "war", + "wav", + "wax", + "wbmp", + "wdp", + "weba", + "webm", + "webp", + "whl", + "wim", + "wm", + "wma", + "wmv", + "wmx", + "woff", + "woff2", + "wrm", + "wvx", + "xbm", + "xif", + "xla", + "xlam", + "xls", + "xlsb", + "xlsm", + "xlsx", + "xlt", + "xltm", + "xltx", + "xm", + "xmind", + "xpi", + "xpm", + "xwd", + "xz", + "z", + "zip", + "zipx" +] diff --git a/node_modules/binary-extensions/binary-extensions.json.d.ts b/node_modules/binary-extensions/binary-extensions.json.d.ts new file mode 100644 index 0000000..94a248c --- /dev/null +++ b/node_modules/binary-extensions/binary-extensions.json.d.ts @@ -0,0 +1,3 @@ +declare const binaryExtensionsJson: readonly string[]; + +export = binaryExtensionsJson; diff --git a/node_modules/binary-extensions/index.d.ts b/node_modules/binary-extensions/index.d.ts new file mode 100644 index 0000000..f469ac5 --- /dev/null +++ b/node_modules/binary-extensions/index.d.ts @@ -0,0 +1,14 @@ +/** +List of binary file extensions. + +@example +``` +import binaryExtensions = require('binary-extensions'); + +console.log(binaryExtensions); +//=> ['3ds', '3g2', …] +``` +*/ +declare const binaryExtensions: readonly string[]; + +export = binaryExtensions; diff --git a/node_modules/binary-extensions/index.js b/node_modules/binary-extensions/index.js new file mode 100644 index 0000000..d46e468 --- /dev/null +++ b/node_modules/binary-extensions/index.js @@ -0,0 +1 @@ +module.exports = require('./binary-extensions.json'); diff --git a/node_modules/binary-extensions/license b/node_modules/binary-extensions/license new file mode 100644 index 0000000..401b1c7 --- /dev/null +++ b/node_modules/binary-extensions/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/binary-extensions/package.json b/node_modules/binary-extensions/package.json new file mode 100644 index 0000000..c4d3641 --- /dev/null +++ b/node_modules/binary-extensions/package.json @@ -0,0 +1,38 @@ +{ + "name": "binary-extensions", + "version": "2.2.0", + "description": "List of binary file extensions", + "license": "MIT", + "repository": "sindresorhus/binary-extensions", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts", + "binary-extensions.json", + "binary-extensions.json.d.ts" + ], + "keywords": [ + "binary", + "extensions", + "extension", + "file", + "json", + "list", + "array" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/binary-extensions/readme.md b/node_modules/binary-extensions/readme.md new file mode 100644 index 0000000..3e25dd8 --- /dev/null +++ b/node_modules/binary-extensions/readme.md @@ -0,0 +1,41 @@ +# binary-extensions + +> List of binary file extensions + +The list is just a [JSON file](binary-extensions.json) and can be used anywhere. + + +## Install + +``` +$ npm install binary-extensions +``` + + +## Usage + +```js +const binaryExtensions = require('binary-extensions'); + +console.log(binaryExtensions); +//=> ['3ds', '3g2', …] +``` + + +## Related + +- [is-binary-path](https://github.com/sindresorhus/is-binary-path) - Check if a filepath is a binary file +- [text-extensions](https://github.com/sindresorhus/text-extensions) - List of text file extensions + + +--- + +
    + + Get professional support for this package with a Tidelift subscription + +
    + + Tidelift helps make open source sustainable for maintainers while giving companies
    assurances about security, maintenance, and licensing for their dependencies. +
    +
    diff --git a/node_modules/braces/CHANGELOG.md b/node_modules/braces/CHANGELOG.md new file mode 100644 index 0000000..36f798b --- /dev/null +++ b/node_modules/braces/CHANGELOG.md @@ -0,0 +1,184 @@ +# Release history + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +
    + Guiding Principles + +- Changelogs are for humans, not machines. +- There should be an entry for every single version. +- The same types of changes should be grouped. +- Versions and sections should be linkable. +- The latest version comes first. +- The release date of each versions is displayed. +- Mention whether you follow Semantic Versioning. + +
    + +
    + Types of changes + +Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): + +- `Added` for new features. +- `Changed` for changes in existing functionality. +- `Deprecated` for soon-to-be removed features. +- `Removed` for now removed features. +- `Fixed` for any bug fixes. +- `Security` in case of vulnerabilities. + +
    + +## [3.0.0] - 2018-04-08 + +v3.0 is a complete refactor, resulting in a faster, smaller codebase, with fewer deps, and a more accurate parser and compiler. + +**Breaking Changes** + +- The undocumented `.makeRe` method was removed + +**Non-breaking changes** + +- Caching was removed + +## [2.3.2] - 2018-04-08 + +- start refactoring +- cover sets +- better range handling + +## [2.3.1] - 2018-02-17 + +- Remove unnecessary escape in Regex. (#14) + +## [2.3.0] - 2017-10-19 + +- minor code reorganization +- optimize regex +- expose `maxLength` option + +## [2.2.1] - 2017-05-30 + +- don't condense when braces contain extglobs + +## [2.2.0] - 2017-05-28 + +- ensure word boundaries are preserved +- fixes edge case where extglob characters precede a brace pattern + +## [2.1.1] - 2017-04-27 + +- use snapdragon-node +- handle edge case +- optimizations, lint + +## [2.0.4] - 2017-04-11 + +- pass opts to compiler +- minor optimization in create method +- re-write parser handlers to remove negation regex + +## [2.0.3] - 2016-12-10 + +- use split-string +- clear queue at the end +- adds sequences example +- add unit tests + +## [2.0.2] - 2016-10-21 + +- fix comma handling in nested extglobs + +## [2.0.1] - 2016-10-20 + +- add comments +- more tests, ensure quotes are stripped + +## [2.0.0] - 2016-10-19 + +- don't expand braces inside character classes +- add quantifier pattern + +## [1.8.5] - 2016-05-21 + +- Refactor (#10) + +## [1.8.4] - 2016-04-20 + +- fixes https://github.com/jonschlinkert/micromatch/issues/66 + +## [1.8.0] - 2015-03-18 + +- adds exponent examples, tests +- fixes the first example in https://github.com/jonschlinkert/micromatch/issues/38 + +## [1.6.0] - 2015-01-30 + +- optimizations, `bash` mode: +- improve path escaping + +## [1.5.0] - 2015-01-28 + +- Merge pull request #5 from eush77/lib-files + +## [1.4.0] - 2015-01-24 + +- add extglob tests +- externalize exponent function +- better whitespace handling + +## [1.3.0] - 2015-01-24 + +- make regex patterns explicity + +## [1.1.0] - 2015-01-11 + +- don't create a match group with `makeRe` + +## [1.0.0] - 2014-12-23 + +- Merge commit '97b05f5544f8348736a8efaecf5c32bbe3e2ad6e' +- support empty brace syntax +- better bash coverage +- better support for regex strings + +## [0.1.4] - 2014-11-14 + +- improve recognition of bad args, recognize mismatched argument types +- support escaping +- remove pathname-expansion +- support whitespace in patterns + +## [0.1.0] + +- first commit + +[2.3.2]: https://github.com/micromatch/braces/compare/2.3.1...2.3.2 +[2.3.1]: https://github.com/micromatch/braces/compare/2.3.0...2.3.1 +[2.3.0]: https://github.com/micromatch/braces/compare/2.2.1...2.3.0 +[2.2.1]: https://github.com/micromatch/braces/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/micromatch/braces/compare/2.1.1...2.2.0 +[2.1.1]: https://github.com/micromatch/braces/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/micromatch/braces/compare/2.0.4...2.1.0 +[2.0.4]: https://github.com/micromatch/braces/compare/2.0.3...2.0.4 +[2.0.3]: https://github.com/micromatch/braces/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/micromatch/braces/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/micromatch/braces/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/micromatch/braces/compare/1.8.5...2.0.0 +[1.8.5]: https://github.com/micromatch/braces/compare/1.8.4...1.8.5 +[1.8.4]: https://github.com/micromatch/braces/compare/1.8.0...1.8.4 +[1.8.0]: https://github.com/micromatch/braces/compare/1.6.0...1.8.0 +[1.6.0]: https://github.com/micromatch/braces/compare/1.5.0...1.6.0 +[1.5.0]: https://github.com/micromatch/braces/compare/1.4.0...1.5.0 +[1.4.0]: https://github.com/micromatch/braces/compare/1.3.0...1.4.0 +[1.3.0]: https://github.com/micromatch/braces/compare/1.2.0...1.3.0 +[1.2.0]: https://github.com/micromatch/braces/compare/1.1.0...1.2.0 +[1.1.0]: https://github.com/micromatch/braces/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/micromatch/braces/compare/0.1.4...1.0.0 +[0.1.4]: https://github.com/micromatch/braces/compare/0.1.0...0.1.4 + +[Unreleased]: https://github.com/micromatch/braces/compare/0.1.0...HEAD +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog \ No newline at end of file diff --git a/node_modules/braces/LICENSE b/node_modules/braces/LICENSE new file mode 100644 index 0000000..d32ab44 --- /dev/null +++ b/node_modules/braces/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2018, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/braces/README.md b/node_modules/braces/README.md new file mode 100644 index 0000000..cba2f60 --- /dev/null +++ b/node_modules/braces/README.md @@ -0,0 +1,593 @@ +# braces [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/braces.svg?style=flat)](https://www.npmjs.com/package/braces) [![NPM monthly downloads](https://img.shields.io/npm/dm/braces.svg?style=flat)](https://npmjs.org/package/braces) [![NPM total downloads](https://img.shields.io/npm/dt/braces.svg?style=flat)](https://npmjs.org/package/braces) [![Linux Build Status](https://img.shields.io/travis/micromatch/braces.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/braces) + +> Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save braces +``` + +## v3.0.0 Released!! + +See the [changelog](CHANGELOG.md) for details. + +## Why use braces? + +Brace patterns make globs more powerful by adding the ability to match specific ranges and sequences of characters. + +* **Accurate** - complete support for the [Bash 4.3 Brace Expansion](www.gnu.org/software/bash/) specification (passes all of the Bash braces tests) +* **[fast and performant](#benchmarks)** - Starts fast, runs fast and [scales well](#performance) as patterns increase in complexity. +* **Organized code base** - The parser and compiler are easy to maintain and update when edge cases crop up. +* **Well-tested** - Thousands of test assertions, and passes all of the Bash, minimatch, and [brace-expansion](https://github.com/juliangruber/brace-expansion) unit tests (as of the date this was written). +* **Safer** - You shouldn't have to worry about users defining aggressive or malicious brace patterns that can break your application. Braces takes measures to prevent malicious regex that can be used for DDoS attacks (see [catastrophic backtracking](https://www.regular-expressions.info/catastrophic.html)). +* [Supports lists](#lists) - (aka "sets") `a/{b,c}/d` => `['a/b/d', 'a/c/d']` +* [Supports sequences](#sequences) - (aka "ranges") `{01..03}` => `['01', '02', '03']` +* [Supports steps](#steps) - (aka "increments") `{2..10..2}` => `['2', '4', '6', '8', '10']` +* [Supports escaping](#escaping) - To prevent evaluation of special characters. + +## Usage + +The main export is a function that takes one or more brace `patterns` and `options`. + +```js +const braces = require('braces'); +// braces(patterns[, options]); + +console.log(braces(['{01..05}', '{a..e}'])); +//=> ['(0[1-5])', '([a-e])'] + +console.log(braces(['{01..05}', '{a..e}'], { expand: true })); +//=> ['01', '02', '03', '04', '05', 'a', 'b', 'c', 'd', 'e'] +``` + +### Brace Expansion vs. Compilation + +By default, brace patterns are compiled into strings that are optimized for creating regular expressions and matching. + +**Compiled** + +```js +console.log(braces('a/{x,y,z}/b')); +//=> ['a/(x|y|z)/b'] +console.log(braces(['a/{01..20}/b', 'a/{1..5}/b'])); +//=> [ 'a/(0[1-9]|1[0-9]|20)/b', 'a/([1-5])/b' ] +``` + +**Expanded** + +Enable brace expansion by setting the `expand` option to true, or by using [braces.expand()](#expand) (returns an array similar to what you'd expect from Bash, or `echo {1..5}`, or [minimatch](https://github.com/isaacs/minimatch)): + +```js +console.log(braces('a/{x,y,z}/b', { expand: true })); +//=> ['a/x/b', 'a/y/b', 'a/z/b'] + +console.log(braces.expand('{01..10}')); +//=> ['01','02','03','04','05','06','07','08','09','10'] +``` + +### Lists + +Expand lists (like Bash "sets"): + +```js +console.log(braces('a/{foo,bar,baz}/*.js')); +//=> ['a/(foo|bar|baz)/*.js'] + +console.log(braces.expand('a/{foo,bar,baz}/*.js')); +//=> ['a/foo/*.js', 'a/bar/*.js', 'a/baz/*.js'] +``` + +### Sequences + +Expand ranges of characters (like Bash "sequences"): + +```js +console.log(braces.expand('{1..3}')); // ['1', '2', '3'] +console.log(braces.expand('a/{1..3}/b')); // ['a/1/b', 'a/2/b', 'a/3/b'] +console.log(braces('{a..c}', { expand: true })); // ['a', 'b', 'c'] +console.log(braces('foo/{a..c}', { expand: true })); // ['foo/a', 'foo/b', 'foo/c'] + +// supports zero-padded ranges +console.log(braces('a/{01..03}/b')); //=> ['a/(0[1-3])/b'] +console.log(braces('a/{001..300}/b')); //=> ['a/(0{2}[1-9]|0[1-9][0-9]|[12][0-9]{2}|300)/b'] +``` + +See [fill-range](https://github.com/jonschlinkert/fill-range) for all available range-expansion options. + +### Steppped ranges + +Steps, or increments, may be used with ranges: + +```js +console.log(braces.expand('{2..10..2}')); +//=> ['2', '4', '6', '8', '10'] + +console.log(braces('{2..10..2}')); +//=> ['(2|4|6|8|10)'] +``` + +When the [.optimize](#optimize) method is used, or [options.optimize](#optionsoptimize) is set to true, sequences are passed to [to-regex-range](https://github.com/jonschlinkert/to-regex-range) for expansion. + +### Nesting + +Brace patterns may be nested. The results of each expanded string are not sorted, and left to right order is preserved. + +**"Expanded" braces** + +```js +console.log(braces.expand('a{b,c,/{x,y}}/e')); +//=> ['ab/e', 'ac/e', 'a/x/e', 'a/y/e'] + +console.log(braces.expand('a/{x,{1..5},y}/c')); +//=> ['a/x/c', 'a/1/c', 'a/2/c', 'a/3/c', 'a/4/c', 'a/5/c', 'a/y/c'] +``` + +**"Optimized" braces** + +```js +console.log(braces('a{b,c,/{x,y}}/e')); +//=> ['a(b|c|/(x|y))/e'] + +console.log(braces('a/{x,{1..5},y}/c')); +//=> ['a/(x|([1-5])|y)/c'] +``` + +### Escaping + +**Escaping braces** + +A brace pattern will not be expanded or evaluted if _either the opening or closing brace is escaped_: + +```js +console.log(braces.expand('a\\{d,c,b}e')); +//=> ['a{d,c,b}e'] + +console.log(braces.expand('a{d,c,b\\}e')); +//=> ['a{d,c,b}e'] +``` + +**Escaping commas** + +Commas inside braces may also be escaped: + +```js +console.log(braces.expand('a{b\\,c}d')); +//=> ['a{b,c}d'] + +console.log(braces.expand('a{d\\,c,b}e')); +//=> ['ad,ce', 'abe'] +``` + +**Single items** + +Following bash conventions, a brace pattern is also not expanded when it contains a single character: + +```js +console.log(braces.expand('a{b}c')); +//=> ['a{b}c'] +``` + +## Options + +### options.maxLength + +**Type**: `Number` + +**Default**: `65,536` + +**Description**: Limit the length of the input string. Useful when the input string is generated or your application allows users to pass a string, et cetera. + +```js +console.log(braces('a/{b,c}/d', { maxLength: 3 })); //=> throws an error +``` + +### options.expand + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Generate an "expanded" brace pattern (alternatively you can use the `braces.expand()` method, which does the same thing). + +```js +console.log(braces('a/{b,c}/d', { expand: true })); +//=> [ 'a/b/d', 'a/c/d' ] +``` + +### options.nodupes + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Remove duplicates from the returned array. + +### options.rangeLimit + +**Type**: `Number` + +**Default**: `1000` + +**Description**: To prevent malicious patterns from being passed by users, an error is thrown when `braces.expand()` is used or `options.expand` is true and the generated range will exceed the `rangeLimit`. + +You can customize `options.rangeLimit` or set it to `Inifinity` to disable this altogether. + +**Examples** + +```js +// pattern exceeds the "rangeLimit", so it's optimized automatically +console.log(braces.expand('{1..1000}')); +//=> ['([1-9]|[1-9][0-9]{1,2}|1000)'] + +// pattern does not exceed "rangeLimit", so it's NOT optimized +console.log(braces.expand('{1..100}')); +//=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100'] +``` + +### options.transform + +**Type**: `Function` + +**Default**: `undefined` + +**Description**: Customize range expansion. + +**Example: Transforming non-numeric values** + +```js +const alpha = braces.expand('x/{a..e}/y', { + transform(value, index) { + // When non-numeric values are passed, "value" is a character code. + return 'foo/' + String.fromCharCode(value) + '-' + index; + } +}); +console.log(alpha); +//=> [ 'x/foo/a-0/y', 'x/foo/b-1/y', 'x/foo/c-2/y', 'x/foo/d-3/y', 'x/foo/e-4/y' ] +``` + +**Example: Transforming numeric values** + +```js +const numeric = braces.expand('{1..5}', { + transform(value) { + // when numeric values are passed, "value" is a number + return 'foo/' + value * 2; + } +}); +console.log(numeric); +//=> [ 'foo/2', 'foo/4', 'foo/6', 'foo/8', 'foo/10' ] +``` + +### options.quantifiers + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: In regular expressions, quanitifiers can be used to specify how many times a token can be repeated. For example, `a{1,3}` will match the letter `a` one to three times. + +Unfortunately, regex quantifiers happen to share the same syntax as [Bash lists](#lists) + +The `quantifiers` option tells braces to detect when [regex quantifiers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#quantifiers) are defined in the given pattern, and not to try to expand them as lists. + +**Examples** + +```js +const braces = require('braces'); +console.log(braces('a/b{1,3}/{x,y,z}')); +//=> [ 'a/b(1|3)/(x|y|z)' ] +console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true})); +//=> [ 'a/b{1,3}/(x|y|z)' ] +console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true, expand: true})); +//=> [ 'a/b{1,3}/x', 'a/b{1,3}/y', 'a/b{1,3}/z' ] +``` + +### options.unescape + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Strip backslashes that were used for escaping from the result. + +## What is "brace expansion"? + +Brace expansion is a type of parameter expansion that was made popular by unix shells for generating lists of strings, as well as regex-like matching when used alongside wildcards (globs). + +In addition to "expansion", braces are also used for matching. In other words: + +* [brace expansion](#brace-expansion) is for generating new lists +* [brace matching](#brace-matching) is for filtering existing lists + +
    +More about brace expansion (click to expand) + +There are two main types of brace expansion: + +1. **lists**: which are defined using comma-separated values inside curly braces: `{a,b,c}` +2. **sequences**: which are defined using a starting value and an ending value, separated by two dots: `a{1..3}b`. Optionally, a third argument may be passed to define a "step" or increment to use: `a{1..100..10}b`. These are also sometimes referred to as "ranges". + +Here are some example brace patterns to illustrate how they work: + +**Sets** + +``` +{a,b,c} => a b c +{a,b,c}{1,2} => a1 a2 b1 b2 c1 c2 +``` + +**Sequences** + +``` +{1..9} => 1 2 3 4 5 6 7 8 9 +{4..-4} => 4 3 2 1 0 -1 -2 -3 -4 +{1..20..3} => 1 4 7 10 13 16 19 +{a..j} => a b c d e f g h i j +{j..a} => j i h g f e d c b a +{a..z..3} => a d g j m p s v y +``` + +**Combination** + +Sets and sequences can be mixed together or used along with any other strings. + +``` +{a,b,c}{1..3} => a1 a2 a3 b1 b2 b3 c1 c2 c3 +foo/{a,b,c}/bar => foo/a/bar foo/b/bar foo/c/bar +``` + +The fact that braces can be "expanded" from relatively simple patterns makes them ideal for quickly generating test fixtures, file paths, and similar use cases. + +## Brace matching + +In addition to _expansion_, brace patterns are also useful for performing regular-expression-like matching. + +For example, the pattern `foo/{1..3}/bar` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +``` + +But not: + +``` +baz/1/qux +baz/2/qux +baz/3/qux +``` + +Braces can also be combined with [glob patterns](https://github.com/jonschlinkert/micromatch) to perform more advanced wildcard matching. For example, the pattern `*/{1..3}/*` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +baz/1/qux +baz/2/qux +baz/3/qux +``` + +## Brace matching pitfalls + +Although brace patterns offer a user-friendly way of matching ranges or sets of strings, there are also some major disadvantages and potential risks you should be aware of. + +### tldr + +**"brace bombs"** + +* brace expansion can eat up a huge amount of processing resources +* as brace patterns increase _linearly in size_, the system resources required to expand the pattern increase exponentially +* users can accidentally (or intentially) exhaust your system's resources resulting in the equivalent of a DoS attack (bonus: no programming knowledge is required!) + +For a more detailed explanation with examples, see the [geometric complexity](#geometric-complexity) section. + +### The solution + +Jump to the [performance section](#performance) to see how Braces solves this problem in comparison to other libraries. + +### Geometric complexity + +At minimum, brace patterns with sets limited to two elements have quadradic or `O(n^2)` complexity. But the complexity of the algorithm increases exponentially as the number of sets, _and elements per set_, increases, which is `O(n^c)`. + +For example, the following sets demonstrate quadratic (`O(n^2)`) complexity: + +``` +{1,2}{3,4} => (2X2) => 13 14 23 24 +{1,2}{3,4}{5,6} => (2X2X2) => 135 136 145 146 235 236 245 246 +``` + +But add an element to a set, and we get a n-fold Cartesian product with `O(n^c)` complexity: + +``` +{1,2,3}{4,5,6}{7,8,9} => (3X3X3) => 147 148 149 157 158 159 167 168 169 247 248 + 249 257 258 259 267 268 269 347 348 349 357 + 358 359 367 368 369 +``` + +Now, imagine how this complexity grows given that each element is a n-tuple: + +``` +{1..100}{1..100} => (100X100) => 10,000 elements (38.4 kB) +{1..100}{1..100}{1..100} => (100X100X100) => 1,000,000 elements (5.76 MB) +``` + +Although these examples are clearly contrived, they demonstrate how brace patterns can quickly grow out of control. + +**More information** + +Interested in learning more about brace expansion? + +* [linuxjournal/bash-brace-expansion](http://www.linuxjournal.com/content/bash-brace-expansion) +* [rosettacode/Brace_expansion](https://rosettacode.org/wiki/Brace_expansion) +* [cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) + +
    + +## Performance + +Braces is not only screaming fast, it's also more accurate the other brace expansion libraries. + +### Better algorithms + +Fortunately there is a solution to the ["brace bomb" problem](#brace-matching-pitfalls): _don't expand brace patterns into an array when they're used for matching_. + +Instead, convert the pattern into an optimized regular expression. This is easier said than done, and braces is the only library that does this currently. + +**The proof is in the numbers** + +Minimatch gets exponentially slower as patterns increase in complexity, braces does not. The following results were generated using `braces()` and `minimatch.braceExpand()`, respectively. + +| **Pattern** | **braces** | **[minimatch][]** | +| --- | --- | --- | +| `{1..9007199254740991}`[^1] | `298 B` (5ms 459μs)| N/A (freezes) | +| `{1..1000000000000000}` | `41 B` (1ms 15μs) | N/A (freezes) | +| `{1..100000000000000}` | `40 B` (890μs) | N/A (freezes) | +| `{1..10000000000000}` | `39 B` (2ms 49μs) | N/A (freezes) | +| `{1..1000000000000}` | `38 B` (608μs) | N/A (freezes) | +| `{1..100000000000}` | `37 B` (397μs) | N/A (freezes) | +| `{1..10000000000}` | `35 B` (983μs) | N/A (freezes) | +| `{1..1000000000}` | `34 B` (798μs) | N/A (freezes) | +| `{1..100000000}` | `33 B` (733μs) | N/A (freezes) | +| `{1..10000000}` | `32 B` (5ms 632μs) | `78.89 MB` (16s 388ms 569μs) | +| `{1..1000000}` | `31 B` (1ms 381μs) | `6.89 MB` (1s 496ms 887μs) | +| `{1..100000}` | `30 B` (950μs) | `588.89 kB` (146ms 921μs) | +| `{1..10000}` | `29 B` (1ms 114μs) | `48.89 kB` (14ms 187μs) | +| `{1..1000}` | `28 B` (760μs) | `3.89 kB` (1ms 453μs) | +| `{1..100}` | `22 B` (345μs) | `291 B` (196μs) | +| `{1..10}` | `10 B` (533μs) | `20 B` (37μs) | +| `{1..3}` | `7 B` (190μs) | `5 B` (27μs) | + +### Faster algorithms + +When you need expansion, braces is still much faster. + +_(the following results were generated using `braces.expand()` and `minimatch.braceExpand()`, respectively)_ + +| **Pattern** | **braces** | **[minimatch][]** | +| --- | --- | --- | +| `{1..10000000}` | `78.89 MB` (2s 698ms 642μs) | `78.89 MB` (18s 601ms 974μs) | +| `{1..1000000}` | `6.89 MB` (458ms 576μs) | `6.89 MB` (1s 491ms 621μs) | +| `{1..100000}` | `588.89 kB` (20ms 728μs) | `588.89 kB` (156ms 919μs) | +| `{1..10000}` | `48.89 kB` (2ms 202μs) | `48.89 kB` (13ms 641μs) | +| `{1..1000}` | `3.89 kB` (1ms 796μs) | `3.89 kB` (1ms 958μs) | +| `{1..100}` | `291 B` (424μs) | `291 B` (211μs) | +| `{1..10}` | `20 B` (487μs) | `20 B` (72μs) | +| `{1..3}` | `5 B` (166μs) | `5 B` (27μs) | + +If you'd like to run these comparisons yourself, see [test/support/generate.js](test/support/generate.js). + +## Benchmarks + +### Running benchmarks + +Install dev dependencies: + +```bash +npm i -d && npm benchmark +``` + +### Latest results + +Braces is more accurate, without sacrificing performance. + +```bash +# range (expanded) + braces x 29,040 ops/sec ±3.69% (91 runs sampled)) + minimatch x 4,735 ops/sec ±1.28% (90 runs sampled) + +# range (optimized for regex) + braces x 382,878 ops/sec ±0.56% (94 runs sampled) + minimatch x 1,040 ops/sec ±0.44% (93 runs sampled) + +# nested ranges (expanded) + braces x 19,744 ops/sec ±2.27% (92 runs sampled)) + minimatch x 4,579 ops/sec ±0.50% (93 runs sampled) + +# nested ranges (optimized for regex) + braces x 246,019 ops/sec ±2.02% (93 runs sampled) + minimatch x 1,028 ops/sec ±0.39% (94 runs sampled) + +# set (expanded) + braces x 138,641 ops/sec ±0.53% (95 runs sampled) + minimatch x 219,582 ops/sec ±0.98% (94 runs sampled) + +# set (optimized for regex) + braces x 388,408 ops/sec ±0.41% (95 runs sampled) + minimatch x 44,724 ops/sec ±0.91% (89 runs sampled) + +# nested sets (expanded) + braces x 84,966 ops/sec ±0.48% (94 runs sampled) + minimatch x 140,720 ops/sec ±0.37% (95 runs sampled) + +# nested sets (optimized for regex) + braces x 263,340 ops/sec ±2.06% (92 runs sampled) + minimatch x 28,714 ops/sec ±0.40% (90 runs sampled) +``` + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 197 | [jonschlinkert](https://github.com/jonschlinkert) | +| 4 | [doowb](https://github.com/doowb) | +| 1 | [es128](https://github.com/es128) | +| 1 | [eush77](https://github.com/eush77) | +| 1 | [hemanth](https://github.com/hemanth) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file diff --git a/node_modules/braces/index.js b/node_modules/braces/index.js new file mode 100644 index 0000000..0eee0f5 --- /dev/null +++ b/node_modules/braces/index.js @@ -0,0 +1,170 @@ +'use strict'; + +const stringify = require('./lib/stringify'); +const compile = require('./lib/compile'); +const expand = require('./lib/expand'); +const parse = require('./lib/parse'); + +/** + * Expand the given pattern or create a regex-compatible string. + * + * ```js + * const braces = require('braces'); + * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)'] + * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c'] + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {String} + * @api public + */ + +const braces = (input, options = {}) => { + let output = []; + + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; +}; + +/** + * Parse the given `str` with the given `options`. + * + * ```js + * // braces.parse(pattern, [, options]); + * const ast = braces.parse('a/{b,c}/d'); + * console.log(ast); + * ``` + * @param {String} pattern Brace pattern to parse + * @param {Object} options + * @return {Object} Returns an AST + * @api public + */ + +braces.parse = (input, options = {}) => parse(input, options); + +/** + * Creates a braces string from an AST, or an AST node. + * + * ```js + * const braces = require('braces'); + * let ast = braces.parse('foo/{a,b}/bar'); + * console.log(stringify(ast.nodes[2])); //=> '{a,b}' + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.stringify = (input, options = {}) => { + if (typeof input === 'string') { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); +}; + +/** + * Compiles a brace pattern into a regex-compatible, optimized string. + * This method is called by the main [braces](#braces) function by default. + * + * ```js + * const braces = require('braces'); + * console.log(braces.compile('a/{b,c}/d')); + * //=> ['a/(b|c)/d'] + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.compile = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + return compile(input, options); +}; + +/** + * Expands a brace pattern into an array. This method is called by the + * main [braces](#braces) function when `options.expand` is true. Before + * using this method it's recommended that you read the [performance notes](#performance)) + * and advantages of using [.compile](#compile) instead. + * + * ```js + * const braces = require('braces'); + * console.log(braces.expand('a/{b,c}/d')); + * //=> ['a/b/d', 'a/c/d']; + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.expand = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + + let result = expand(input, options); + + // filter out empty strings if specified + if (options.noempty === true) { + result = result.filter(Boolean); + } + + // filter out duplicates if specified + if (options.nodupes === true) { + result = [...new Set(result)]; + } + + return result; +}; + +/** + * Processes a brace pattern and returns either an expanded array + * (if `options.expand` is true), a highly optimized regex-compatible string. + * This method is called by the main [braces](#braces) function. + * + * ```js + * const braces = require('braces'); + * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) + * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.create = (input, options = {}) => { + if (input === '' || input.length < 3) { + return [input]; + } + + return options.expand !== true + ? braces.compile(input, options) + : braces.expand(input, options); +}; + +/** + * Expose "braces" + */ + +module.exports = braces; diff --git a/node_modules/braces/lib/compile.js b/node_modules/braces/lib/compile.js new file mode 100644 index 0000000..3e984a4 --- /dev/null +++ b/node_modules/braces/lib/compile.js @@ -0,0 +1,57 @@ +'use strict'; + +const fill = require('fill-range'); +const utils = require('./utils'); + +const compile = (ast, options = {}) => { + let walk = (node, parent = {}) => { + let invalidBlock = utils.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? '\\' : ''; + let output = ''; + + if (node.isOpen === true) { + return prefix + node.value; + } + if (node.isClose === true) { + return prefix + node.value; + } + + if (node.type === 'open') { + return invalid ? (prefix + node.value) : '('; + } + + if (node.type === 'close') { + return invalid ? (prefix + node.value) : ')'; + } + + if (node.type === 'comma') { + return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|'); + } + + if (node.value) { + return node.value; + } + + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + let range = fill(...args, { ...options, wrap: false, toRegex: true }); + + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + + if (node.nodes) { + for (let child of node.nodes) { + output += walk(child, node); + } + } + return output; + }; + + return walk(ast); +}; + +module.exports = compile; diff --git a/node_modules/braces/lib/constants.js b/node_modules/braces/lib/constants.js new file mode 100644 index 0000000..a937943 --- /dev/null +++ b/node_modules/braces/lib/constants.js @@ -0,0 +1,57 @@ +'use strict'; + +module.exports = { + MAX_LENGTH: 1024 * 64, + + // Digits + CHAR_0: '0', /* 0 */ + CHAR_9: '9', /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 'A', /* A */ + CHAR_LOWERCASE_A: 'a', /* a */ + CHAR_UPPERCASE_Z: 'Z', /* Z */ + CHAR_LOWERCASE_Z: 'z', /* z */ + + CHAR_LEFT_PARENTHESES: '(', /* ( */ + CHAR_RIGHT_PARENTHESES: ')', /* ) */ + + CHAR_ASTERISK: '*', /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: '&', /* & */ + CHAR_AT: '@', /* @ */ + CHAR_BACKSLASH: '\\', /* \ */ + CHAR_BACKTICK: '`', /* ` */ + CHAR_CARRIAGE_RETURN: '\r', /* \r */ + CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */ + CHAR_COLON: ':', /* : */ + CHAR_COMMA: ',', /* , */ + CHAR_DOLLAR: '$', /* . */ + CHAR_DOT: '.', /* . */ + CHAR_DOUBLE_QUOTE: '"', /* " */ + CHAR_EQUAL: '=', /* = */ + CHAR_EXCLAMATION_MARK: '!', /* ! */ + CHAR_FORM_FEED: '\f', /* \f */ + CHAR_FORWARD_SLASH: '/', /* / */ + CHAR_HASH: '#', /* # */ + CHAR_HYPHEN_MINUS: '-', /* - */ + CHAR_LEFT_ANGLE_BRACKET: '<', /* < */ + CHAR_LEFT_CURLY_BRACE: '{', /* { */ + CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */ + CHAR_LINE_FEED: '\n', /* \n */ + CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */ + CHAR_PERCENT: '%', /* % */ + CHAR_PLUS: '+', /* + */ + CHAR_QUESTION_MARK: '?', /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */ + CHAR_RIGHT_CURLY_BRACE: '}', /* } */ + CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */ + CHAR_SEMICOLON: ';', /* ; */ + CHAR_SINGLE_QUOTE: '\'', /* ' */ + CHAR_SPACE: ' ', /* */ + CHAR_TAB: '\t', /* \t */ + CHAR_UNDERSCORE: '_', /* _ */ + CHAR_VERTICAL_LINE: '|', /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */ +}; diff --git a/node_modules/braces/lib/expand.js b/node_modules/braces/lib/expand.js new file mode 100644 index 0000000..376c748 --- /dev/null +++ b/node_modules/braces/lib/expand.js @@ -0,0 +1,113 @@ +'use strict'; + +const fill = require('fill-range'); +const stringify = require('./stringify'); +const utils = require('./utils'); + +const append = (queue = '', stash = '', enclose = false) => { + let result = []; + + queue = [].concat(queue); + stash = [].concat(stash); + + if (!stash.length) return queue; + if (!queue.length) { + return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash; + } + + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === 'string') ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele)); + } + } + } + return utils.flatten(result); +}; + +const expand = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit; + + let walk = (node, parent = {}) => { + node.queue = []; + + let p = parent; + let q = parent.queue; + + while (p.type !== 'brace' && p.type !== 'root' && p.parent) { + p = p.parent; + q = p.queue; + } + + if (node.invalid || node.dollar) { + q.push(append(q.pop(), stringify(node, options))); + return; + } + + if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) { + q.push(append(q.pop(), ['{}'])); + return; + } + + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + + if (utils.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); + } + + let range = fill(...args, options); + if (range.length === 0) { + range = stringify(node, options); + } + + q.push(append(q.pop(), range)); + node.nodes = []; + return; + } + + let enclose = utils.encloseBrace(node); + let queue = node.queue; + let block = node; + + while (block.type !== 'brace' && block.type !== 'root' && block.parent) { + block = block.parent; + queue = block.queue; + } + + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + + if (child.type === 'comma' && node.type === 'brace') { + if (i === 1) queue.push(''); + queue.push(''); + continue; + } + + if (child.type === 'close') { + q.push(append(q.pop(), queue, enclose)); + continue; + } + + if (child.value && child.type !== 'open') { + queue.push(append(queue.pop(), child.value)); + continue; + } + + if (child.nodes) { + walk(child, node); + } + } + + return queue; + }; + + return utils.flatten(walk(ast)); +}; + +module.exports = expand; diff --git a/node_modules/braces/lib/parse.js b/node_modules/braces/lib/parse.js new file mode 100644 index 0000000..145ea26 --- /dev/null +++ b/node_modules/braces/lib/parse.js @@ -0,0 +1,333 @@ +'use strict'; + +const stringify = require('./stringify'); + +/** + * Constants + */ + +const { + MAX_LENGTH, + CHAR_BACKSLASH, /* \ */ + CHAR_BACKTICK, /* ` */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_RIGHT_SQUARE_BRACKET, /* ] */ + CHAR_DOUBLE_QUOTE, /* " */ + CHAR_SINGLE_QUOTE, /* ' */ + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE +} = require('./constants'); + +/** + * parse + */ + +const parse = (input, options = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + let opts = options || {}; + let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + + let ast = { type: 'root', input, nodes: [] }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + let memo = {}; + + /** + * Helpers + */ + + const advance = () => input[index++]; + const push = node => { + if (node.type === 'text' && prev.type === 'dot') { + prev.type = 'text'; + } + + if (prev && prev.type === 'text' && node.type === 'text') { + prev.value += node.value; + return; + } + + block.nodes.push(node); + node.parent = block; + node.prev = prev; + prev = node; + return node; + }; + + push({ type: 'bos' }); + + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + + /** + * Invalid chars + */ + + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + + /** + * Escaped chars + */ + + if (value === CHAR_BACKSLASH) { + push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() }); + continue; + } + + /** + * Right square bracket (literal): ']' + */ + + if (value === CHAR_RIGHT_SQUARE_BRACKET) { + push({ type: 'text', value: '\\' + value }); + continue; + } + + /** + * Left square bracket: '[' + */ + + if (value === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + + let closed = true; + let next; + + while (index < length && (next = advance())) { + value += next; + + if (next === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + continue; + } + + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + brackets--; + + if (brackets === 0) { + break; + } + } + } + + push({ type: 'text', value }); + continue; + } + + /** + * Parentheses + */ + + if (value === CHAR_LEFT_PARENTHESES) { + block = push({ type: 'paren', nodes: [] }); + stack.push(block); + push({ type: 'text', value }); + continue; + } + + if (value === CHAR_RIGHT_PARENTHESES) { + if (block.type !== 'paren') { + push({ type: 'text', value }); + continue; + } + block = stack.pop(); + push({ type: 'text', value }); + block = stack[stack.length - 1]; + continue; + } + + /** + * Quotes: '|"|` + */ + + if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { + let open = value; + let next; + + if (options.keepQuotes !== true) { + value = ''; + } + + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + + if (next === open) { + if (options.keepQuotes === true) value += next; + break; + } + + value += next; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Left curly brace: '{' + */ + + if (value === CHAR_LEFT_CURLY_BRACE) { + depth++; + + let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true; + let brace = { + type: 'brace', + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + + block = push(brace); + stack.push(block); + push({ type: 'open', value }); + continue; + } + + /** + * Right curly brace: '}' + */ + + if (value === CHAR_RIGHT_CURLY_BRACE) { + if (block.type !== 'brace') { + push({ type: 'text', value }); + continue; + } + + let type = 'close'; + block = stack.pop(); + block.close = true; + + push({ type, value }); + depth--; + + block = stack[stack.length - 1]; + continue; + } + + /** + * Comma: ',' + */ + + if (value === CHAR_COMMA && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { type: 'text', value: stringify(block) }]; + } + + push({ type: 'comma', value }); + block.commas++; + continue; + } + + /** + * Dot: '.' + */ + + if (value === CHAR_DOT && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + + if (depth === 0 || siblings.length === 0) { + push({ type: 'text', value }); + continue; + } + + if (prev.type === 'dot') { + block.range = []; + prev.value += value; + prev.type = 'range'; + + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = 'text'; + continue; + } + + block.ranges++; + block.args = []; + continue; + } + + if (prev.type === 'range') { + siblings.pop(); + + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + + push({ type: 'dot', value }); + continue; + } + + /** + * Text + */ + + push({ type: 'text', value }); + } + + // Mark imbalanced braces and brackets as invalid + do { + block = stack.pop(); + + if (block.type !== 'root') { + block.nodes.forEach(node => { + if (!node.nodes) { + if (node.type === 'open') node.isOpen = true; + if (node.type === 'close') node.isClose = true; + if (!node.nodes) node.type = 'text'; + node.invalid = true; + } + }); + + // get the location of the block on parent.nodes (block's siblings) + let parent = stack[stack.length - 1]; + let index = parent.nodes.indexOf(block); + // replace the (invalid) block with it's nodes + parent.nodes.splice(index, 1, ...block.nodes); + } + } while (stack.length > 0); + + push({ type: 'eos' }); + return ast; +}; + +module.exports = parse; diff --git a/node_modules/braces/lib/stringify.js b/node_modules/braces/lib/stringify.js new file mode 100644 index 0000000..414b7bc --- /dev/null +++ b/node_modules/braces/lib/stringify.js @@ -0,0 +1,32 @@ +'use strict'; + +const utils = require('./utils'); + +module.exports = (ast, options = {}) => { + let stringify = (node, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let output = ''; + + if (node.value) { + if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) { + return '\\' + node.value; + } + return node.value; + } + + if (node.value) { + return node.value; + } + + if (node.nodes) { + for (let child of node.nodes) { + output += stringify(child); + } + } + return output; + }; + + return stringify(ast); +}; + diff --git a/node_modules/braces/lib/utils.js b/node_modules/braces/lib/utils.js new file mode 100644 index 0000000..e3551a6 --- /dev/null +++ b/node_modules/braces/lib/utils.js @@ -0,0 +1,112 @@ +'use strict'; + +exports.isInteger = num => { + if (typeof num === 'number') { + return Number.isInteger(num); + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isInteger(Number(num)); + } + return false; +}; + +/** + * Find a node of the given type + */ + +exports.find = (node, type) => node.nodes.find(node => node.type === type); + +/** + * Find a node of the given type + */ + +exports.exceedsLimit = (min, max, step = 1, limit) => { + if (limit === false) return false; + if (!exports.isInteger(min) || !exports.isInteger(max)) return false; + return ((Number(max) - Number(min)) / Number(step)) >= limit; +}; + +/** + * Escape the given node with '\\' before node.value + */ + +exports.escapeNode = (block, n = 0, type) => { + let node = block.nodes[n]; + if (!node) return; + + if ((type && node.type === type) || node.type === 'open' || node.type === 'close') { + if (node.escaped !== true) { + node.value = '\\' + node.value; + node.escaped = true; + } + } +}; + +/** + * Returns true if the given brace node should be enclosed in literal braces + */ + +exports.encloseBrace = node => { + if (node.type !== 'brace') return false; + if ((node.commas >> 0 + node.ranges >> 0) === 0) { + node.invalid = true; + return true; + } + return false; +}; + +/** + * Returns true if a brace node is invalid. + */ + +exports.isInvalidBrace = block => { + if (block.type !== 'brace') return false; + if (block.invalid === true || block.dollar) return true; + if ((block.commas >> 0 + block.ranges >> 0) === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; +}; + +/** + * Returns true if a node is an open or close node + */ + +exports.isOpenOrClose = node => { + if (node.type === 'open' || node.type === 'close') { + return true; + } + return node.open === true || node.close === true; +}; + +/** + * Reduce an array of text nodes. + */ + +exports.reduce = nodes => nodes.reduce((acc, node) => { + if (node.type === 'text') acc.push(node.value); + if (node.type === 'range') node.type = 'text'; + return acc; +}, []); + +/** + * Flatten an array + */ + +exports.flatten = (...args) => { + const result = []; + const flat = arr => { + for (let i = 0; i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele); + } + return result; + }; + flat(args); + return result; +}; diff --git a/node_modules/braces/package.json b/node_modules/braces/package.json new file mode 100644 index 0000000..3f52e34 --- /dev/null +++ b/node_modules/braces/package.json @@ -0,0 +1,77 @@ +{ + "name": "braces", + "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.", + "version": "3.0.2", + "homepage": "https://github.com/micromatch/braces", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Brian Woodward (https://twitter.com/doowb)", + "Elan Shanker (https://github.com/es128)", + "Eugene Sharygin (https://github.com/eush77)", + "hemanth.hm (http://h3manth.com)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "micromatch/braces", + "bugs": { + "url": "https://github.com/micromatch/braces/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "lib" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha", + "benchmark": "node benchmark" + }, + "dependencies": { + "fill-range": "^7.0.1" + }, + "devDependencies": { + "ansi-colors": "^3.2.4", + "bash-path": "^2.0.1", + "gulp-format-md": "^2.0.0", + "mocha": "^6.1.1" + }, + "keywords": [ + "alpha", + "alphabetical", + "bash", + "brace", + "braces", + "expand", + "expansion", + "filepath", + "fill", + "fs", + "glob", + "globbing", + "letter", + "match", + "matches", + "matching", + "number", + "numerical", + "path", + "range", + "ranges", + "sh" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "lint": { + "reflinks": true + }, + "plugins": [ + "gulp-format-md" + ] + } +} diff --git a/node_modules/chokidar/LICENSE b/node_modules/chokidar/LICENSE new file mode 100644 index 0000000..fa9162b --- /dev/null +++ b/node_modules/chokidar/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/chokidar/README.md b/node_modules/chokidar/README.md new file mode 100644 index 0000000..d6a57fd --- /dev/null +++ b/node_modules/chokidar/README.md @@ -0,0 +1,308 @@ +# Chokidar [![Weekly downloads](https://img.shields.io/npm/dw/chokidar.svg)](https://github.com/paulmillr/chokidar) [![Yearly downloads](https://img.shields.io/npm/dy/chokidar.svg)](https://github.com/paulmillr/chokidar) + +> Minimal and efficient cross-platform file watching library + +[![NPM](https://nodei.co/npm/chokidar.png)](https://www.npmjs.com/package/chokidar) + +## Why? + +Node.js `fs.watch`: + +* Doesn't report filenames on MacOS. +* Doesn't report events at all when using editors like Sublime on MacOS. +* Often reports events twice. +* Emits most changes as `rename`. +* Does not provide an easy way to recursively watch file trees. +* Does not support recursive watching on Linux. + +Node.js `fs.watchFile`: + +* Almost as bad at event handling. +* Also does not provide any recursive watching. +* Results in high CPU utilization. + +Chokidar resolves these problems. + +Initially made for **[Brunch](https://brunch.io/)** (an ultra-swift web app build tool), it is now used in +[Microsoft's Visual Studio Code](https://github.com/microsoft/vscode), +[gulp](https://github.com/gulpjs/gulp/), +[karma](https://karma-runner.github.io/), +[PM2](https://github.com/Unitech/PM2), +[browserify](http://browserify.org/), +[webpack](https://webpack.github.io/), +[BrowserSync](https://www.browsersync.io/), +and [many others](https://www.npmjs.com/browse/depended/chokidar). +It has proven itself in production environments. + +Version 3 is out! Check out our blog post about it: [Chokidar 3: How to save 32TB of traffic every week](https://paulmillr.com/posts/chokidar-3-save-32tb-of-traffic/) + +## How? + +Chokidar does still rely on the Node.js core `fs` module, but when using +`fs.watch` and `fs.watchFile` for watching, it normalizes the events it +receives, often checking for truth by getting file stats and/or dir contents. + +On MacOS, chokidar by default uses a native extension exposing the Darwin +`FSEvents` API. This provides very efficient recursive watching compared with +implementations like `kqueue` available on most \*nix platforms. Chokidar still +does have to do some work to normalize the events received that way as well. + +On most other platforms, the `fs.watch`-based implementation is the default, which +avoids polling and keeps CPU usage down. Be advised that chokidar will initiate +watchers recursively for everything within scope of the paths that have been +specified, so be judicious about not wasting system resources by watching much +more than needed. + +## Getting started + +Install with npm: + +```sh +npm install chokidar +``` + +Then `require` and use it in your code: + +```javascript +const chokidar = require('chokidar'); + +// One-liner for current directory +chokidar.watch('.').on('all', (event, path) => { + console.log(event, path); +}); +``` + +## API + +```javascript +// Example of a more typical implementation structure + +// Initialize watcher. +const watcher = chokidar.watch('file, dir, glob, or array', { + ignored: /(^|[\/\\])\../, // ignore dotfiles + persistent: true +}); + +// Something to use when events are received. +const log = console.log.bind(console); +// Add event listeners. +watcher + .on('add', path => log(`File ${path} has been added`)) + .on('change', path => log(`File ${path} has been changed`)) + .on('unlink', path => log(`File ${path} has been removed`)); + +// More possible events. +watcher + .on('addDir', path => log(`Directory ${path} has been added`)) + .on('unlinkDir', path => log(`Directory ${path} has been removed`)) + .on('error', error => log(`Watcher error: ${error}`)) + .on('ready', () => log('Initial scan complete. Ready for changes')) + .on('raw', (event, path, details) => { // internal + log('Raw event info:', event, path, details); + }); + +// 'add', 'addDir' and 'change' events also receive stat() results as second +// argument when available: https://nodejs.org/api/fs.html#fs_class_fs_stats +watcher.on('change', (path, stats) => { + if (stats) console.log(`File ${path} changed size to ${stats.size}`); +}); + +// Watch new files. +watcher.add('new-file'); +watcher.add(['new-file-2', 'new-file-3', '**/other-file*']); + +// Get list of actual paths being watched on the filesystem +var watchedPaths = watcher.getWatched(); + +// Un-watch some files. +await watcher.unwatch('new-file*'); + +// Stop watching. +// The method is async! +watcher.close().then(() => console.log('closed')); + +// Full list of options. See below for descriptions. +// Do not use this example! +chokidar.watch('file', { + persistent: true, + + ignored: '*.txt', + ignoreInitial: false, + followSymlinks: true, + cwd: '.', + disableGlobbing: false, + + usePolling: false, + interval: 100, + binaryInterval: 300, + alwaysStat: false, + depth: 99, + awaitWriteFinish: { + stabilityThreshold: 2000, + pollInterval: 100 + }, + + ignorePermissionErrors: false, + atomic: true // or a custom 'atomicity delay', in milliseconds (default 100) +}); + +``` + +`chokidar.watch(paths, [options])` + +* `paths` (string or array of strings). Paths to files, dirs to be watched +recursively, or glob patterns. + - Note: globs must not contain windows separators (`\`), + because that's how they work by the standard — + you'll need to replace them with forward slashes (`/`). + - Note 2: for additional glob documentation, check out low-level + library: [picomatch](https://github.com/micromatch/picomatch). +* `options` (object) Options object as defined below: + +#### Persistence + +* `persistent` (default: `true`). Indicates whether the process +should continue to run as long as files are being watched. If set to +`false` when using `fsevents` to watch, no more events will be emitted +after `ready`, even if the process continues to run. + +#### Path filtering + +* `ignored` ([anymatch](https://github.com/es128/anymatch)-compatible definition) +Defines files/paths to be ignored. The whole relative or absolute path is +tested, not just filename. If a function with two arguments is provided, it +gets called twice per path - once with a single argument (the path), second +time with two arguments (the path and the +[`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) +object of that path). +* `ignoreInitial` (default: `false`). If set to `false` then `add`/`addDir` events are also emitted for matching paths while +instantiating the watching as chokidar discovers these file paths (before the `ready` event). +* `followSymlinks` (default: `true`). When `false`, only the +symlinks themselves will be watched for changes instead of following +the link references and bubbling events through the link's path. +* `cwd` (no default). The base directory from which watch `paths` are to be +derived. Paths emitted with events will be relative to this. +* `disableGlobbing` (default: `false`). If set to `true` then the strings passed to `.watch()` and `.add()` are treated as +literal path names, even if they look like globs. + +#### Performance + +* `usePolling` (default: `false`). +Whether to use fs.watchFile (backed by polling), or fs.watch. If polling +leads to high CPU utilization, consider setting this to `false`. It is +typically necessary to **set this to `true` to successfully watch files over +a network**, and it may be necessary to successfully watch files in other +non-standard situations. Setting to `true` explicitly on MacOS overrides the +`useFsEvents` default. You may also set the CHOKIDAR_USEPOLLING env variable +to true (1) or false (0) in order to override this option. +* _Polling-specific settings_ (effective when `usePolling: true`) + * `interval` (default: `100`). Interval of file system polling, in milliseconds. You may also + set the CHOKIDAR_INTERVAL env variable to override this option. + * `binaryInterval` (default: `300`). Interval of file system + polling for binary files. + ([see list of binary extensions](https://github.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json)) +* `useFsEvents` (default: `true` on MacOS). Whether to use the +`fsevents` watching interface if available. When set to `true` explicitly +and `fsevents` is available this supercedes the `usePolling` setting. When +set to `false` on MacOS, `usePolling: true` becomes the default. +* `alwaysStat` (default: `false`). If relying upon the +[`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) +object that may get passed with `add`, `addDir`, and `change` events, set +this to `true` to ensure it is provided even in cases where it wasn't +already available from the underlying watch events. +* `depth` (default: `undefined`). If set, limits how many levels of +subdirectories will be traversed. +* `awaitWriteFinish` (default: `false`). +By default, the `add` event will fire when a file first appears on disk, before +the entire file has been written. Furthermore, in some cases some `change` +events will be emitted while the file is being written. In some cases, +especially when watching for large files there will be a need to wait for the +write operation to finish before responding to a file creation or modification. +Setting `awaitWriteFinish` to `true` (or a truthy value) will poll file size, +holding its `add` and `change` events until the size does not change for a +configurable amount of time. The appropriate duration setting is heavily +dependent on the OS and hardware. For accurate detection this parameter should +be relatively high, making file watching much less responsive. +Use with caution. + * *`options.awaitWriteFinish` can be set to an object in order to adjust + timing params:* + * `awaitWriteFinish.stabilityThreshold` (default: 2000). Amount of time in + milliseconds for a file size to remain constant before emitting its event. + * `awaitWriteFinish.pollInterval` (default: 100). File size polling interval, in milliseconds. + +#### Errors + +* `ignorePermissionErrors` (default: `false`). Indicates whether to watch files +that don't have read permissions if possible. If watching fails due to `EPERM` +or `EACCES` with this set to `true`, the errors will be suppressed silently. +* `atomic` (default: `true` if `useFsEvents` and `usePolling` are `false`). +Automatically filters out artifacts that occur when using editors that use +"atomic writes" instead of writing directly to the source file. If a file is +re-added within 100 ms of being deleted, Chokidar emits a `change` event +rather than `unlink` then `add`. If the default of 100 ms does not work well +for you, you can override it by setting `atomic` to a custom value, in +milliseconds. + +### Methods & Events + +`chokidar.watch()` produces an instance of `FSWatcher`. Methods of `FSWatcher`: + +* `.add(path / paths)`: Add files, directories, or glob patterns for tracking. +Takes an array of strings or just one string. +* `.on(event, callback)`: Listen for an FS event. +Available events: `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `ready`, +`raw`, `error`. +Additionally `all` is available which gets emitted with the underlying event +name and path for every event other than `ready`, `raw`, and `error`. `raw` is internal, use it carefully. +* `.unwatch(path / paths)`: Stop watching files, directories, or glob patterns. +Takes an array of strings or just one string. +* `.close()`: **async** Removes all listeners from watched files. Asynchronous, returns Promise. Use with `await` to ensure bugs don't happen. +* `.getWatched()`: Returns an object representing all the paths on the file +system being watched by this `FSWatcher` instance. The object's keys are all the +directories (using absolute paths unless the `cwd` option was used), and the +values are arrays of the names of the items contained in each directory. + +## CLI + +If you need a CLI interface for your file watching, check out +[chokidar-cli](https://github.com/open-cli-tools/chokidar-cli), allowing you to +execute a command on each change, or get a stdio stream of change events. + +## Install Troubleshooting + +* `npm WARN optional dep failed, continuing fsevents@n.n.n` + * This message is normal part of how `npm` handles optional dependencies and is + not indicative of a problem. Even if accompanied by other related error messages, + Chokidar should function properly. + +* `TypeError: fsevents is not a constructor` + * Update chokidar by doing `rm -rf node_modules package-lock.json yarn.lock && npm install`, or update your dependency that uses chokidar. + +* Chokidar is producing `ENOSP` error on Linux, like this: + * `bash: cannot set terminal process group (-1): Inappropriate ioctl for device bash: no job control in this shell` + `Error: watch /home/ ENOSPC` + * This means Chokidar ran out of file handles and you'll need to increase their count by executing the following command in Terminal: + `echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p` + +## Changelog + +For more detailed changelog, see [`full_changelog.md`](.github/full_changelog.md). +- **v3.5 (Jan 6, 2021):** Support for ARM Macs with Apple Silicon. Fixes for deleted symlinks. +- **v3.4 (Apr 26, 2020):** Support for directory-based symlinks. Fixes for macos file replacement. +- **v3.3 (Nov 2, 2019):** `FSWatcher#close()` method became async. That fixes IO race conditions related to close method. +- **v3.2 (Oct 1, 2019):** Improve Linux RAM usage by 50%. Race condition fixes. Windows glob fixes. Improve stability by using tight range of dependency versions. +- **v3.1 (Sep 16, 2019):** dotfiles are no longer filtered out by default. Use `ignored` option if needed. Improve initial Linux scan time by 50%. +- **v3 (Apr 30, 2019):** massive CPU & RAM consumption improvements; reduces deps / package size by a factor of 17x and bumps Node.js requirement to v8.16 and higher. +- **v2 (Dec 29, 2017):** Globs are now posix-style-only; without windows support. Tons of bugfixes. +- **v1 (Apr 7, 2015):** Glob support, symlink support, tons of bugfixes. Node 0.8+ is supported +- **v0.1 (Apr 20, 2012):** Initial release, extracted from [Brunch](https://github.com/brunch/brunch/blob/9847a065aea300da99bd0753f90354cde9de1261/src/helpers.coffee#L66) + +## Also + +Why was chokidar named this way? What's the meaning behind it? + +>Chowkidar is a transliteration of a Hindi word meaning 'watchman, gatekeeper', चौकीदार. This ultimately comes from Sanskrit _ चतुष्क_ (crossway, quadrangle, consisting-of-four). + +## License + +MIT (c) Paul Miller (), see [LICENSE](LICENSE) file. diff --git a/node_modules/chokidar/index.js b/node_modules/chokidar/index.js new file mode 100644 index 0000000..ed4b6d5 --- /dev/null +++ b/node_modules/chokidar/index.js @@ -0,0 +1,973 @@ +'use strict'; + +const { EventEmitter } = require('events'); +const fs = require('fs'); +const sysPath = require('path'); +const { promisify } = require('util'); +const readdirp = require('readdirp'); +const anymatch = require('anymatch').default; +const globParent = require('glob-parent'); +const isGlob = require('is-glob'); +const braces = require('braces'); +const normalizePath = require('normalize-path'); + +const NodeFsHandler = require('./lib/nodefs-handler'); +const FsEventsHandler = require('./lib/fsevents-handler'); +const { + EV_ALL, + EV_READY, + EV_ADD, + EV_CHANGE, + EV_UNLINK, + EV_ADD_DIR, + EV_UNLINK_DIR, + EV_RAW, + EV_ERROR, + + STR_CLOSE, + STR_END, + + BACK_SLASH_RE, + DOUBLE_SLASH_RE, + SLASH_OR_BACK_SLASH_RE, + DOT_RE, + REPLACER_RE, + + SLASH, + SLASH_SLASH, + BRACE_START, + BANG, + ONE_DOT, + TWO_DOTS, + GLOBSTAR, + SLASH_GLOBSTAR, + ANYMATCH_OPTS, + STRING_TYPE, + FUNCTION_TYPE, + EMPTY_STR, + EMPTY_FN, + + isWindows, + isMacos, + isIBMi +} = require('./lib/constants'); + +const stat = promisify(fs.stat); +const readdir = promisify(fs.readdir); + +/** + * @typedef {String} Path + * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName + * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType + */ + +/** + * + * @typedef {Object} WatchHelpers + * @property {Boolean} followSymlinks + * @property {'stat'|'lstat'} statMethod + * @property {Path} path + * @property {Path} watchPath + * @property {Function} entryPath + * @property {Boolean} hasGlob + * @property {Object} globFilter + * @property {Function} filterPath + * @property {Function} filterDir + */ + +const arrify = (value = []) => Array.isArray(value) ? value : [value]; +const flatten = (list, result = []) => { + list.forEach(item => { + if (Array.isArray(item)) { + flatten(item, result); + } else { + result.push(item); + } + }); + return result; +}; + +const unifyPaths = (paths_) => { + /** + * @type {Array} + */ + const paths = flatten(arrify(paths_)); + if (!paths.every(p => typeof p === STRING_TYPE)) { + throw new TypeError(`Non-string provided as watch path: ${paths}`); + } + return paths.map(normalizePathToUnix); +}; + +// If SLASH_SLASH occurs at the beginning of path, it is not replaced +// because "//StoragePC/DrivePool/Movies" is a valid network path +const toUnix = (string) => { + let str = string.replace(BACK_SLASH_RE, SLASH); + let prepend = false; + if (str.startsWith(SLASH_SLASH)) { + prepend = true; + } + while (str.match(DOUBLE_SLASH_RE)) { + str = str.replace(DOUBLE_SLASH_RE, SLASH); + } + if (prepend) { + str = SLASH + str; + } + return str; +}; + +// Our version of upath.normalize +// TODO: this is not equal to path-normalize module - investigate why +const normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path))); + +const normalizeIgnored = (cwd = EMPTY_STR) => (path) => { + if (typeof path !== STRING_TYPE) return path; + return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path)); +}; + +const getAbsolutePath = (path, cwd) => { + if (sysPath.isAbsolute(path)) { + return path; + } + if (path.startsWith(BANG)) { + return BANG + sysPath.join(cwd, path.slice(1)); + } + return sysPath.join(cwd, path); +}; + +const undef = (opts, key) => opts[key] === undefined; + +/** + * Directory entry. + * @property {Path} path + * @property {Set} items + */ +class DirEntry { + /** + * @param {Path} dir + * @param {Function} removeWatcher + */ + constructor(dir, removeWatcher) { + this.path = dir; + this._removeWatcher = removeWatcher; + /** @type {Set} */ + this.items = new Set(); + } + + add(item) { + const {items} = this; + if (!items) return; + if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item); + } + + async remove(item) { + const {items} = this; + if (!items) return; + items.delete(item); + if (items.size > 0) return; + + const dir = this.path; + try { + await readdir(dir); + } catch (err) { + if (this._removeWatcher) { + this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir)); + } + } + } + + has(item) { + const {items} = this; + if (!items) return; + return items.has(item); + } + + /** + * @returns {Array} + */ + getChildren() { + const {items} = this; + if (!items) return; + return [...items.values()]; + } + + dispose() { + this.items.clear(); + delete this.path; + delete this._removeWatcher; + delete this.items; + Object.freeze(this); + } +} + +const STAT_METHOD_F = 'stat'; +const STAT_METHOD_L = 'lstat'; +class WatchHelper { + constructor(path, watchPath, follow, fsw) { + this.fsw = fsw; + this.path = path = path.replace(REPLACER_RE, EMPTY_STR); + this.watchPath = watchPath; + this.fullWatchPath = sysPath.resolve(watchPath); + this.hasGlob = watchPath !== path; + /** @type {object|boolean} */ + if (path === EMPTY_STR) this.hasGlob = false; + this.globSymlink = this.hasGlob && follow ? undefined : false; + this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false; + this.dirParts = this.getDirParts(path); + this.dirParts.forEach((parts) => { + if (parts.length > 1) parts.pop(); + }); + this.followSymlinks = follow; + this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L; + } + + checkGlobSymlink(entry) { + // only need to resolve once + // first entry should always have entry.parentDir === EMPTY_STR + if (this.globSymlink === undefined) { + this.globSymlink = entry.fullParentDir === this.fullWatchPath ? + false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath}; + } + + if (this.globSymlink) { + return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath); + } + + return entry.fullPath; + } + + entryPath(entry) { + return sysPath.join(this.watchPath, + sysPath.relative(this.watchPath, this.checkGlobSymlink(entry)) + ); + } + + filterPath(entry) { + const {stats} = entry; + if (stats && stats.isSymbolicLink()) return this.filterDir(entry); + const resolvedPath = this.entryPath(entry); + const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ? + this.globFilter(resolvedPath) : true; + return matchesGlob && + this.fsw._isntIgnored(resolvedPath, stats) && + this.fsw._hasReadPermissions(stats); + } + + getDirParts(path) { + if (!this.hasGlob) return []; + const parts = []; + const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path]; + expandedPath.forEach((path) => { + parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE)); + }); + return parts; + } + + filterDir(entry) { + if (this.hasGlob) { + const entryParts = this.getDirParts(this.checkGlobSymlink(entry)); + let globstar = false; + this.unmatchedGlob = !this.dirParts.some((parts) => { + return parts.every((part, i) => { + if (part === GLOBSTAR) globstar = true; + return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS); + }); + }); + } + return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats); + } +} + +/** + * Watches files & directories for changes. Emitted events: + * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error` + * + * new FSWatcher() + * .add(directories) + * .on('add', path => log('File', path, 'was added')) + */ +class FSWatcher extends EventEmitter { +// Not indenting methods for history sake; for now. +constructor(_opts) { + super(); + + const opts = {}; + if (_opts) Object.assign(opts, _opts); // for frozen objects + + /** @type {Map} */ + this._watched = new Map(); + /** @type {Map} */ + this._closers = new Map(); + /** @type {Set} */ + this._ignoredPaths = new Set(); + + /** @type {Map} */ + this._throttled = new Map(); + + /** @type {Map} */ + this._symlinkPaths = new Map(); + + this._streams = new Set(); + this.closed = false; + + // Set up default options. + if (undef(opts, 'persistent')) opts.persistent = true; + if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false; + if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false; + if (undef(opts, 'interval')) opts.interval = 100; + if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300; + if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false; + opts.enableBinaryInterval = opts.binaryInterval !== opts.interval; + + // Enable fsevents on OS X when polling isn't explicitly enabled. + if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling; + + // If we can't use fsevents, ensure the options reflect it's disabled. + const canUseFsEvents = FsEventsHandler.canUse(); + if (!canUseFsEvents) opts.useFsEvents = false; + + // Use polling on Mac if not using fsevents. + // Other platforms use non-polling fs_watch. + if (undef(opts, 'usePolling') && !opts.useFsEvents) { + opts.usePolling = isMacos; + } + + // Always default to polling on IBM i because fs.watch() is not available on IBM i. + if(isIBMi) { + opts.usePolling = true; + } + + // Global override (useful for end-developers that need to force polling for all + // instances of chokidar, regardless of usage/dependency depth) + const envPoll = process.env.CHOKIDAR_USEPOLLING; + if (envPoll !== undefined) { + const envLower = envPoll.toLowerCase(); + + if (envLower === 'false' || envLower === '0') { + opts.usePolling = false; + } else if (envLower === 'true' || envLower === '1') { + opts.usePolling = true; + } else { + opts.usePolling = !!envLower; + } + } + const envInterval = process.env.CHOKIDAR_INTERVAL; + if (envInterval) { + opts.interval = Number.parseInt(envInterval, 10); + } + + // Editor atomic write normalization enabled by default with fs.watch + if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents; + if (opts.atomic) this._pendingUnlinks = new Map(); + + if (undef(opts, 'followSymlinks')) opts.followSymlinks = true; + + if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false; + if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {}; + const awf = opts.awaitWriteFinish; + if (awf) { + if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000; + if (!awf.pollInterval) awf.pollInterval = 100; + this._pendingWrites = new Map(); + } + if (opts.ignored) opts.ignored = arrify(opts.ignored); + + let readyCalls = 0; + this._emitReady = () => { + readyCalls++; + if (readyCalls >= this._readyCount) { + this._emitReady = EMPTY_FN; + this._readyEmitted = true; + // use process.nextTick to allow time for listener to be bound + process.nextTick(() => this.emit(EV_READY)); + } + }; + this._emitRaw = (...args) => this.emit(EV_RAW, ...args); + this._readyEmitted = false; + this.options = opts; + + // Initialize with proper watcher. + if (opts.useFsEvents) { + this._fsEventsHandler = new FsEventsHandler(this); + } else { + this._nodeFsHandler = new NodeFsHandler(this); + } + + // You’re frozen when your heart’s not open. + Object.freeze(opts); +} + +// Public methods + +/** + * Adds paths to be watched on an existing FSWatcher instance + * @param {Path|Array} paths_ + * @param {String=} _origAdd private; for handling non-existent paths to be watched + * @param {Boolean=} _internal private; indicates a non-user add + * @returns {FSWatcher} for chaining + */ +add(paths_, _origAdd, _internal) { + const {cwd, disableGlobbing} = this.options; + this.closed = false; + let paths = unifyPaths(paths_); + if (cwd) { + paths = paths.map((path) => { + const absPath = getAbsolutePath(path, cwd); + + // Check `path` instead of `absPath` because the cwd portion can't be a glob + if (disableGlobbing || !isGlob(path)) { + return absPath; + } + return normalizePath(absPath); + }); + } + + // set aside negated glob strings + paths = paths.filter((path) => { + if (path.startsWith(BANG)) { + this._ignoredPaths.add(path.slice(1)); + return false; + } + + // if a path is being added that was previously ignored, stop ignoring it + this._ignoredPaths.delete(path); + this._ignoredPaths.delete(path + SLASH_GLOBSTAR); + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + + return true; + }); + + if (this.options.useFsEvents && this._fsEventsHandler) { + if (!this._readyCount) this._readyCount = paths.length; + if (this.options.persistent) this._readyCount *= 2; + paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path)); + } else { + if (!this._readyCount) this._readyCount = 0; + this._readyCount += paths.length; + Promise.all( + paths.map(async path => { + const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd); + if (res) this._emitReady(); + return res; + }) + ).then(results => { + if (this.closed) return; + results.filter(item => item).forEach(item => { + this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item)); + }); + }); + } + + return this; +} + +/** + * Close watchers or start ignoring events from specified paths. + * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs + * @returns {FSWatcher} for chaining +*/ +unwatch(paths_) { + if (this.closed) return this; + const paths = unifyPaths(paths_); + const {cwd} = this.options; + + paths.forEach((path) => { + // convert to absolute path unless relative path already matches + if (!sysPath.isAbsolute(path) && !this._closers.has(path)) { + if (cwd) path = sysPath.join(cwd, path); + path = sysPath.resolve(path); + } + + this._closePath(path); + + this._ignoredPaths.add(path); + if (this._watched.has(path)) { + this._ignoredPaths.add(path + SLASH_GLOBSTAR); + } + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + }); + + return this; +} + +/** + * Close watchers and remove all listeners from watched paths. + * @returns {Promise}. +*/ +close() { + if (this.closed) return this._closePromise; + this.closed = true; + + // Memory management. + this.removeAllListeners(); + const closers = []; + this._closers.forEach(closerList => closerList.forEach(closer => { + const promise = closer(); + if (promise instanceof Promise) closers.push(promise); + })); + this._streams.forEach(stream => stream.destroy()); + this._userIgnored = undefined; + this._readyCount = 0; + this._readyEmitted = false; + this._watched.forEach(dirent => dirent.dispose()); + ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => { + this[`_${key}`].clear(); + }); + + this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve(); + return this._closePromise; +} + +/** + * Expose list of watched paths + * @returns {Object} for chaining +*/ +getWatched() { + const watchList = {}; + this._watched.forEach((entry, dir) => { + const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir; + watchList[key || ONE_DOT] = entry.getChildren().sort(); + }); + return watchList; +} + +emitWithAll(event, args) { + this.emit(...args); + if (event !== EV_ERROR) this.emit(EV_ALL, ...args); +} + +// Common helpers +// -------------- + +/** + * Normalize and emit events. + * Calling _emit DOES NOT MEAN emit() would be called! + * @param {EventName} event Type of event + * @param {Path} path File or directory path + * @param {*=} val1 arguments to be passed with event + * @param {*=} val2 + * @param {*=} val3 + * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +async _emit(event, path, val1, val2, val3) { + if (this.closed) return; + + const opts = this.options; + if (isWindows) path = sysPath.normalize(path); + if (opts.cwd) path = sysPath.relative(opts.cwd, path); + /** @type Array */ + const args = [event, path]; + if (val3 !== undefined) args.push(val1, val2, val3); + else if (val2 !== undefined) args.push(val1, val2); + else if (val1 !== undefined) args.push(val1); + + const awf = opts.awaitWriteFinish; + let pw; + if (awf && (pw = this._pendingWrites.get(path))) { + pw.lastChange = new Date(); + return this; + } + + if (opts.atomic) { + if (event === EV_UNLINK) { + this._pendingUnlinks.set(path, args); + setTimeout(() => { + this._pendingUnlinks.forEach((entry, path) => { + this.emit(...entry); + this.emit(EV_ALL, ...entry); + this._pendingUnlinks.delete(path); + }); + }, typeof opts.atomic === 'number' ? opts.atomic : 100); + return this; + } + if (event === EV_ADD && this._pendingUnlinks.has(path)) { + event = args[0] = EV_CHANGE; + this._pendingUnlinks.delete(path); + } + } + + if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) { + const awfEmit = (err, stats) => { + if (err) { + event = args[0] = EV_ERROR; + args[1] = err; + this.emitWithAll(event, args); + } else if (stats) { + // if stats doesn't exist the file must have been deleted + if (args.length > 2) { + args[2] = stats; + } else { + args.push(stats); + } + this.emitWithAll(event, args); + } + }; + + this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit); + return this; + } + + if (event === EV_CHANGE) { + const isThrottled = !this._throttle(EV_CHANGE, path, 50); + if (isThrottled) return this; + } + + if (opts.alwaysStat && val1 === undefined && + (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE) + ) { + const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path; + let stats; + try { + stats = await stat(fullPath); + } catch (err) {} + // Suppress event when fs_stat fails, to avoid sending undefined 'stat' + if (!stats || this.closed) return; + args.push(stats); + } + this.emitWithAll(event, args); + + return this; +} + +/** + * Common handler for errors + * @param {Error} error + * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +_handleError(error) { + const code = error && error.code; + if (error && code !== 'ENOENT' && code !== 'ENOTDIR' && + (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES')) + ) { + this.emit(EV_ERROR, error); + } + return error || this.closed; +} + +/** + * Helper utility for throttling + * @param {ThrottleType} actionType type being throttled + * @param {Path} path being acted upon + * @param {Number} timeout duration of time to suppress duplicate actions + * @returns {Object|false} tracking object or false if action should be suppressed + */ +_throttle(actionType, path, timeout) { + if (!this._throttled.has(actionType)) { + this._throttled.set(actionType, new Map()); + } + + /** @type {Map} */ + const action = this._throttled.get(actionType); + /** @type {Object} */ + const actionPath = action.get(path); + + if (actionPath) { + actionPath.count++; + return false; + } + + let timeoutObject; + const clear = () => { + const item = action.get(path); + const count = item ? item.count : 0; + action.delete(path); + clearTimeout(timeoutObject); + if (item) clearTimeout(item.timeoutObject); + return count; + }; + timeoutObject = setTimeout(clear, timeout); + const thr = {timeoutObject, clear, count: 0}; + action.set(path, thr); + return thr; +} + +_incrReadyCount() { + return this._readyCount++; +} + +/** + * Awaits write operation to finish. + * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback. + * @param {Path} path being acted upon + * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished + * @param {EventName} event + * @param {Function} awfEmit Callback to be called when ready for event to be emitted. + */ +_awaitWriteFinish(path, threshold, event, awfEmit) { + let timeoutHandler; + + let fullPath = path; + if (this.options.cwd && !sysPath.isAbsolute(path)) { + fullPath = sysPath.join(this.options.cwd, path); + } + + const now = new Date(); + + const awaitWriteFinish = (prevStat) => { + fs.stat(fullPath, (err, curStat) => { + if (err || !this._pendingWrites.has(path)) { + if (err && err.code !== 'ENOENT') awfEmit(err); + return; + } + + const now = Number(new Date()); + + if (prevStat && curStat.size !== prevStat.size) { + this._pendingWrites.get(path).lastChange = now; + } + const pw = this._pendingWrites.get(path); + const df = now - pw.lastChange; + + if (df >= threshold) { + this._pendingWrites.delete(path); + awfEmit(undefined, curStat); + } else { + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval, + curStat + ); + } + }); + }; + + if (!this._pendingWrites.has(path)) { + this._pendingWrites.set(path, { + lastChange: now, + cancelWait: () => { + this._pendingWrites.delete(path); + clearTimeout(timeoutHandler); + return event; + } + }); + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval + ); + } +} + +_getGlobIgnored() { + return [...this._ignoredPaths.values()]; +} + +/** + * Determines whether user has asked to ignore this path. + * @param {Path} path filepath or dir + * @param {fs.Stats=} stats result of fs.stat + * @returns {Boolean} + */ +_isIgnored(path, stats) { + if (this.options.atomic && DOT_RE.test(path)) return true; + if (!this._userIgnored) { + const {cwd} = this.options; + const ign = this.options.ignored; + + const ignored = ign && ign.map(normalizeIgnored(cwd)); + const paths = arrify(ignored) + .filter((path) => typeof path === STRING_TYPE && !isGlob(path)) + .map((path) => path + SLASH_GLOBSTAR); + const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths); + this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS); + } + + return this._userIgnored([path, stats]); +} + +_isntIgnored(path, stat) { + return !this._isIgnored(path, stat); +} + +/** + * Provides a set of common helpers and properties relating to symlink and glob handling. + * @param {Path} path file, directory, or glob pattern being watched + * @param {Number=} depth at any depth > 0, this isn't a glob + * @returns {WatchHelper} object containing helpers for this path + */ +_getWatchHelpers(path, depth) { + const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path); + const follow = this.options.followSymlinks; + + return new WatchHelper(path, watchPath, follow, this); +} + +// Directory helpers +// ----------------- + +/** + * Provides directory tracking objects + * @param {String} directory path of the directory + * @returns {DirEntry} the directory's tracking object + */ +_getWatchedDir(directory) { + if (!this._boundRemove) this._boundRemove = this._remove.bind(this); + const dir = sysPath.resolve(directory); + if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove)); + return this._watched.get(dir); +} + +// File helpers +// ------------ + +/** + * Check for read permissions. + * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405 + * @param {fs.Stats} stats - object, result of fs_stat + * @returns {Boolean} indicates whether the file can be read +*/ +_hasReadPermissions(stats) { + if (this.options.ignorePermissionErrors) return true; + + // stats.mode may be bigint + const md = stats && Number.parseInt(stats.mode, 10); + const st = md & 0o777; + const it = Number.parseInt(st.toString(8)[0], 10); + return Boolean(4 & it); +} + +/** + * Handles emitting unlink events for + * files and directories, and via recursion, for + * files and directories within directories that are unlinked + * @param {String} directory within which the following item is located + * @param {String} item base path of item/directory + * @returns {void} +*/ +_remove(directory, item, isDirectory) { + // if what is being deleted is a directory, get that directory's paths + // for recursive deleting and cleaning of watched object + // if it is not a directory, nestedDirectoryChildren will be empty array + const path = sysPath.join(directory, item); + const fullPath = sysPath.resolve(path); + isDirectory = isDirectory != null + ? isDirectory + : this._watched.has(path) || this._watched.has(fullPath); + + // prevent duplicate handling in case of arriving here nearly simultaneously + // via multiple paths (such as _handleFile and _handleDir) + if (!this._throttle('remove', path, 100)) return; + + // if the only watched file is removed, watch for its return + if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) { + this.add(directory, item, true); + } + + // This will create a new entry in the watched object in either case + // so we got to do the directory check beforehand + const wp = this._getWatchedDir(path); + const nestedDirectoryChildren = wp.getChildren(); + + // Recursively remove children directories / files. + nestedDirectoryChildren.forEach(nested => this._remove(path, nested)); + + // Check if item was on the watched list and remove it + const parent = this._getWatchedDir(directory); + const wasTracked = parent.has(item); + parent.remove(item); + + // Fixes issue #1042 -> Relative paths were detected and added as symlinks + // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612), + // but never removed from the map in case the path was deleted. + // This leads to an incorrect state if the path was recreated: + // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553 + if (this._symlinkPaths.has(fullPath)) { + this._symlinkPaths.delete(fullPath); + } + + // If we wait for this file to be fully written, cancel the wait. + let relPath = path; + if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path); + if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { + const event = this._pendingWrites.get(relPath).cancelWait(); + if (event === EV_ADD) return; + } + + // The Entry will either be a directory that just got removed + // or a bogus entry to a file, in either case we have to remove it + this._watched.delete(path); + this._watched.delete(fullPath); + const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK; + if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path); + + // Avoid conflicts if we later create another file with the same name + if (!this.options.useFsEvents) { + this._closePath(path); + } +} + +/** + * Closes all watchers for a path + * @param {Path} path + */ +_closePath(path) { + this._closeFile(path) + const dir = sysPath.dirname(path); + this._getWatchedDir(dir).remove(sysPath.basename(path)); +} + +/** + * Closes only file-specific watchers + * @param {Path} path + */ +_closeFile(path) { + const closers = this._closers.get(path); + if (!closers) return; + closers.forEach(closer => closer()); + this._closers.delete(path); +} + +/** + * + * @param {Path} path + * @param {Function} closer + */ +_addPathCloser(path, closer) { + if (!closer) return; + let list = this._closers.get(path); + if (!list) { + list = []; + this._closers.set(path, list); + } + list.push(closer); +} + +_readdirp(root, opts) { + if (this.closed) return; + const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts}; + let stream = readdirp(root, options); + this._streams.add(stream); + stream.once(STR_CLOSE, () => { + stream = undefined; + }); + stream.once(STR_END, () => { + if (stream) { + this._streams.delete(stream); + stream = undefined; + } + }); + return stream; +} + +} + +// Export FSWatcher class +exports.FSWatcher = FSWatcher; + +/** + * Instantiates watcher with paths to be tracked. + * @param {String|Array} paths file/directory paths and/or globs + * @param {Object=} options chokidar opts + * @returns an instance of FSWatcher for chaining. + */ +const watch = (paths, options) => { + const watcher = new FSWatcher(options); + watcher.add(paths); + return watcher; +}; + +exports.watch = watch; diff --git a/node_modules/chokidar/lib/constants.js b/node_modules/chokidar/lib/constants.js new file mode 100644 index 0000000..1454f85 --- /dev/null +++ b/node_modules/chokidar/lib/constants.js @@ -0,0 +1,65 @@ +'use strict'; + +const {sep} = require('path'); +const {platform} = process; +const os = require('os'); + +exports.EV_ALL = 'all'; +exports.EV_READY = 'ready'; +exports.EV_ADD = 'add'; +exports.EV_CHANGE = 'change'; +exports.EV_ADD_DIR = 'addDir'; +exports.EV_UNLINK = 'unlink'; +exports.EV_UNLINK_DIR = 'unlinkDir'; +exports.EV_RAW = 'raw'; +exports.EV_ERROR = 'error'; + +exports.STR_DATA = 'data'; +exports.STR_END = 'end'; +exports.STR_CLOSE = 'close'; + +exports.FSEVENT_CREATED = 'created'; +exports.FSEVENT_MODIFIED = 'modified'; +exports.FSEVENT_DELETED = 'deleted'; +exports.FSEVENT_MOVED = 'moved'; +exports.FSEVENT_CLONED = 'cloned'; +exports.FSEVENT_UNKNOWN = 'unknown'; +exports.FSEVENT_TYPE_FILE = 'file'; +exports.FSEVENT_TYPE_DIRECTORY = 'directory'; +exports.FSEVENT_TYPE_SYMLINK = 'symlink'; + +exports.KEY_LISTENERS = 'listeners'; +exports.KEY_ERR = 'errHandlers'; +exports.KEY_RAW = 'rawEmitters'; +exports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW]; + +exports.DOT_SLASH = `.${sep}`; + +exports.BACK_SLASH_RE = /\\/g; +exports.DOUBLE_SLASH_RE = /\/\//; +exports.SLASH_OR_BACK_SLASH_RE = /[/\\]/; +exports.DOT_RE = /\..*\.(sw[px])$|~$|\.subl.*\.tmp/; +exports.REPLACER_RE = /^\.[/\\]/; + +exports.SLASH = '/'; +exports.SLASH_SLASH = '//'; +exports.BRACE_START = '{'; +exports.BANG = '!'; +exports.ONE_DOT = '.'; +exports.TWO_DOTS = '..'; +exports.STAR = '*'; +exports.GLOBSTAR = '**'; +exports.ROOT_GLOBSTAR = '/**/*'; +exports.SLASH_GLOBSTAR = '/**'; +exports.DIR_SUFFIX = 'Dir'; +exports.ANYMATCH_OPTS = {dot: true}; +exports.STRING_TYPE = 'string'; +exports.FUNCTION_TYPE = 'function'; +exports.EMPTY_STR = ''; +exports.EMPTY_FN = () => {}; +exports.IDENTITY_FN = val => val; + +exports.isWindows = platform === 'win32'; +exports.isMacos = platform === 'darwin'; +exports.isLinux = platform === 'linux'; +exports.isIBMi = os.type() === 'OS400'; diff --git a/node_modules/chokidar/lib/fsevents-handler.js b/node_modules/chokidar/lib/fsevents-handler.js new file mode 100644 index 0000000..0f7f2cb --- /dev/null +++ b/node_modules/chokidar/lib/fsevents-handler.js @@ -0,0 +1,524 @@ +'use strict'; + +const fs = require('fs'); +const sysPath = require('path'); +const { promisify } = require('util'); + +let fsevents; +try { + fsevents = require('fsevents'); +} catch (error) { + if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error); +} + +if (fsevents) { + // TODO: real check + const mtch = process.version.match(/v(\d+)\.(\d+)/); + if (mtch && mtch[1] && mtch[2]) { + const maj = Number.parseInt(mtch[1], 10); + const min = Number.parseInt(mtch[2], 10); + if (maj === 8 && min < 16) { + fsevents = undefined; + } + } +} + +const { + EV_ADD, + EV_CHANGE, + EV_ADD_DIR, + EV_UNLINK, + EV_ERROR, + STR_DATA, + STR_END, + FSEVENT_CREATED, + FSEVENT_MODIFIED, + FSEVENT_DELETED, + FSEVENT_MOVED, + // FSEVENT_CLONED, + FSEVENT_UNKNOWN, + FSEVENT_TYPE_FILE, + FSEVENT_TYPE_DIRECTORY, + FSEVENT_TYPE_SYMLINK, + + ROOT_GLOBSTAR, + DIR_SUFFIX, + DOT_SLASH, + FUNCTION_TYPE, + EMPTY_FN, + IDENTITY_FN +} = require('./constants'); + +const Depth = (value) => isNaN(value) ? {} : {depth: value}; + +const stat = promisify(fs.stat); +const lstat = promisify(fs.lstat); +const realpath = promisify(fs.realpath); + +const statMethods = { stat, lstat }; + +/** + * @typedef {String} Path + */ + +/** + * @typedef {Object} FsEventsWatchContainer + * @property {Set} listeners + * @property {Function} rawEmitter + * @property {{stop: Function}} watcher + */ + +// fsevents instance helper functions +/** + * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances) + * @type {Map} + */ +const FSEventsWatchers = new Map(); + +// Threshold of duplicate path prefixes at which to start +// consolidating going forward +const consolidateThreshhold = 10; + +const wrongEventFlags = new Set([ + 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912 +]); + +/** + * Instantiates the fsevents interface + * @param {Path} path path to be watched + * @param {Function} callback called when fsevents is bound and ready + * @returns {{stop: Function}} new fsevents instance + */ +const createFSEventsInstance = (path, callback) => { + const stop = fsevents.watch(path, callback); + return {stop}; +}; + +/** + * Instantiates the fsevents interface or binds listeners to an existing one covering + * the same file tree. + * @param {Path} path - to be watched + * @param {Path} realPath - real path for symlinks + * @param {Function} listener - called when fsevents emits events + * @param {Function} rawEmitter - passes data to listeners of the 'raw' event + * @returns {Function} closer + */ +function setFSEventsListener(path, realPath, listener, rawEmitter) { + let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath; + + const parentPath = sysPath.dirname(watchPath); + let cont = FSEventsWatchers.get(watchPath); + + // If we've accumulated a substantial number of paths that + // could have been consolidated by watching one directory + // above the current one, create a watcher on the parent + // path instead, so that we do consolidate going forward. + if (couldConsolidate(parentPath)) { + watchPath = parentPath; + } + + const resolvedPath = sysPath.resolve(path); + const hasSymlink = resolvedPath !== realPath; + + const filteredListener = (fullPath, flags, info) => { + if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath); + if ( + fullPath === resolvedPath || + !fullPath.indexOf(resolvedPath + sysPath.sep) + ) listener(fullPath, flags, info); + }; + + // check if there is already a watcher on a parent path + // modifies `watchPath` to the parent path when it finds a match + let watchedParent = false; + for (const watchedPath of FSEventsWatchers.keys()) { + if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) { + watchPath = watchedPath; + cont = FSEventsWatchers.get(watchPath); + watchedParent = true; + break; + } + } + + if (cont || watchedParent) { + cont.listeners.add(filteredListener); + } else { + cont = { + listeners: new Set([filteredListener]), + rawEmitter, + watcher: createFSEventsInstance(watchPath, (fullPath, flags) => { + if (!cont.listeners.size) return; + const info = fsevents.getInfo(fullPath, flags); + cont.listeners.forEach(list => { + list(fullPath, flags, info); + }); + + cont.rawEmitter(info.event, fullPath, info); + }) + }; + FSEventsWatchers.set(watchPath, cont); + } + + // removes this instance's listeners and closes the underlying fsevents + // instance if there are no more listeners left + return () => { + const lst = cont.listeners; + + lst.delete(filteredListener); + if (!lst.size) { + FSEventsWatchers.delete(watchPath); + if (cont.watcher) return cont.watcher.stop().then(() => { + cont.rawEmitter = cont.watcher = undefined; + Object.freeze(cont); + }); + } + }; +} + +// Decide whether or not we should start a new higher-level +// parent watcher +const couldConsolidate = (path) => { + let count = 0; + for (const watchPath of FSEventsWatchers.keys()) { + if (watchPath.indexOf(path) === 0) { + count++; + if (count >= consolidateThreshhold) { + return true; + } + } + } + + return false; +}; + +// returns boolean indicating whether fsevents can be used +const canUse = () => fsevents && FSEventsWatchers.size < 128; + +// determines subdirectory traversal levels from root to path +const calcDepth = (path, root) => { + let i = 0; + while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++; + return i; +}; + +// returns boolean indicating whether the fsevents' event info has the same type +// as the one returned by fs.stat +const sameTypes = (info, stats) => ( + info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() || + info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() || + info.type === FSEVENT_TYPE_FILE && stats.isFile() +) + +/** + * @mixin + */ +class FsEventsHandler { + +/** + * @param {import('../index').FSWatcher} fsw + */ +constructor(fsw) { + this.fsw = fsw; +} +checkIgnored(path, stats) { + const ipaths = this.fsw._ignoredPaths; + if (this.fsw._isIgnored(path, stats)) { + ipaths.add(path); + if (stats && stats.isDirectory()) { + ipaths.add(path + ROOT_GLOBSTAR); + } + return true; + } + + ipaths.delete(path); + ipaths.delete(path + ROOT_GLOBSTAR); +} + +addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) { + const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD; + this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts); +} + +async checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) { + try { + const stats = await stat(path) + if (this.fsw.closed) return; + if (sameTypes(info, stats)) { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } catch (error) { + if (error.code === 'EACCES') { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } +} + +handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) { + if (this.fsw.closed || this.checkIgnored(path)) return; + + if (event === EV_UNLINK) { + const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY + // suppress unlink events on never before seen files + if (isDirectory || watchedDir.has(item)) { + this.fsw._remove(parent, item, isDirectory); + } + } else { + if (event === EV_ADD) { + // track new directories + if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path); + + if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) { + // push symlinks back to the top of the stack to get handled + const curDepth = opts.depth === undefined ? + undefined : calcDepth(fullPath, realPath) + 1; + return this._addToFsEvents(path, false, true, curDepth); + } + + // track new paths + // (other than symlinks being followed, which will be tracked soon) + this.fsw._getWatchedDir(parent).add(item); + } + /** + * @type {'add'|'addDir'|'unlink'|'unlinkDir'} + */ + const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event; + this.fsw._emit(eventName, path); + if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true); + } +} + +/** + * Handle symlinks encountered during directory scan + * @param {String} watchPath - file/dir path to be watched with fsevents + * @param {String} realPath - real path (in case of symlinks) + * @param {Function} transform - path transformer + * @param {Function} globFilter - path filter in case a glob pattern was provided + * @returns {Function} closer for the watcher instance +*/ +_watchWithFsEvents(watchPath, realPath, transform, globFilter) { + if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return; + const opts = this.fsw.options; + const watchCallback = async (fullPath, flags, info) => { + if (this.fsw.closed) return; + if ( + opts.depth !== undefined && + calcDepth(fullPath, realPath) > opts.depth + ) return; + const path = transform(sysPath.join( + watchPath, sysPath.relative(watchPath, fullPath) + )); + if (globFilter && !globFilter(path)) return; + // ensure directories are tracked + const parent = sysPath.dirname(path); + const item = sysPath.basename(path); + const watchedDir = this.fsw._getWatchedDir( + info.type === FSEVENT_TYPE_DIRECTORY ? path : parent + ); + + // correct for wrong events emitted + if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) { + if (typeof opts.ignored === FUNCTION_TYPE) { + let stats; + try { + stats = await stat(path); + } catch (error) {} + if (this.fsw.closed) return; + if (this.checkIgnored(path, stats)) return; + if (sameTypes(info, stats)) { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } else { + this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } else { + switch (info.event) { + case FSEVENT_CREATED: + case FSEVENT_MODIFIED: + return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + case FSEVENT_DELETED: + case FSEVENT_MOVED: + return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } + }; + + const closer = setFSEventsListener( + watchPath, + realPath, + watchCallback, + this.fsw._emitRaw + ); + + this.fsw._emitReady(); + return closer; +} + +/** + * Handle symlinks encountered during directory scan + * @param {String} linkPath path to symlink + * @param {String} fullPath absolute path to the symlink + * @param {Function} transform pre-existing path transformer + * @param {Number} curDepth level of subdirectories traversed to where symlink is + * @returns {Promise} + */ +async _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) { + // don't follow the same symlink more than once + if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return; + + this.fsw._symlinkPaths.set(fullPath, true); + this.fsw._incrReadyCount(); + + try { + const linkTarget = await realpath(linkPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(linkTarget)) { + return this.fsw._emitReady(); + } + + this.fsw._incrReadyCount(); + + // add the linkTarget for watching with a wrapper for transform + // that causes emitted paths to incorporate the link's path + this._addToFsEvents(linkTarget || linkPath, (path) => { + let aliasedPath = linkPath; + if (linkTarget && linkTarget !== DOT_SLASH) { + aliasedPath = path.replace(linkTarget, linkPath); + } else if (path !== DOT_SLASH) { + aliasedPath = sysPath.join(linkPath, path); + } + return transform(aliasedPath); + }, false, curDepth); + } catch(error) { + if (this.fsw._handleError(error)) { + return this.fsw._emitReady(); + } + } +} + +/** + * + * @param {Path} newPath + * @param {fs.Stats} stats + */ +emitAdd(newPath, stats, processPath, opts, forceAdd) { + const pp = processPath(newPath); + const isDir = stats.isDirectory(); + const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp)); + const base = sysPath.basename(pp); + + // ensure empty dirs get tracked + if (isDir) this.fsw._getWatchedDir(pp); + if (dirObj.has(base)) return; + dirObj.add(base); + + if (!opts.ignoreInitial || forceAdd === true) { + this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats); + } +} + +initWatch(realPath, path, wh, processPath) { + if (this.fsw.closed) return; + const closer = this._watchWithFsEvents( + wh.watchPath, + sysPath.resolve(realPath || wh.watchPath), + processPath, + wh.globFilter + ); + this.fsw._addPathCloser(path, closer); +} + +/** + * Handle added path with fsevents + * @param {String} path file/dir path or glob pattern + * @param {Function|Boolean=} transform converts working path to what the user expects + * @param {Boolean=} forceAdd ensure add is emitted + * @param {Number=} priorDepth Level of subdirectories already traversed. + * @returns {Promise} + */ +async _addToFsEvents(path, transform, forceAdd, priorDepth) { + if (this.fsw.closed) { + return; + } + const opts = this.fsw.options; + const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN; + + const wh = this.fsw._getWatchHelpers(path); + + // evaluate what is at the path we're being asked to watch + try { + const stats = await statMethods[wh.statMethod](wh.watchPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(wh.watchPath, stats)) { + throw null; + } + if (stats.isDirectory()) { + // emit addDir unless this is a glob parent + if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd); + + // don't recurse further if it would exceed depth setting + if (priorDepth && priorDepth > opts.depth) return; + + // scan the contents of the dir + this.fsw._readdirp(wh.watchPath, { + fileFilter: entry => wh.filterPath(entry), + directoryFilter: entry => wh.filterDir(entry), + ...Depth(opts.depth - (priorDepth || 0)) + }).on(STR_DATA, (entry) => { + // need to check filterPath on dirs b/c filterDir is less restrictive + if (this.fsw.closed) { + return; + } + if (entry.stats.isDirectory() && !wh.filterPath(entry)) return; + + const joinedPath = sysPath.join(wh.watchPath, entry.path); + const {fullPath} = entry; + + if (wh.followSymlinks && entry.stats.isSymbolicLink()) { + // preserve the current depth here since it can't be derived from + // real paths past the symlink + const curDepth = opts.depth === undefined ? + undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1; + + this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth); + } else { + this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd); + } + }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => { + this.fsw._emitReady(); + }); + } else { + this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd); + this.fsw._emitReady(); + } + } catch (error) { + if (!error || this.fsw._handleError(error)) { + // TODO: Strange thing: "should not choke on an ignored watch path" will be failed without 2 ready calls -__- + this.fsw._emitReady(); + this.fsw._emitReady(); + } + } + + if (opts.persistent && forceAdd !== true) { + if (typeof transform === FUNCTION_TYPE) { + // realpath has already been resolved + this.initWatch(undefined, path, wh, processPath); + } else { + let realPath; + try { + realPath = await realpath(wh.watchPath); + } catch (e) {} + this.initWatch(realPath, path, wh, processPath); + } + } +} + +} + +module.exports = FsEventsHandler; +module.exports.canUse = canUse; diff --git a/node_modules/chokidar/lib/nodefs-handler.js b/node_modules/chokidar/lib/nodefs-handler.js new file mode 100644 index 0000000..199cfe9 --- /dev/null +++ b/node_modules/chokidar/lib/nodefs-handler.js @@ -0,0 +1,654 @@ +'use strict'; + +const fs = require('fs'); +const sysPath = require('path'); +const { promisify } = require('util'); +const isBinaryPath = require('is-binary-path'); +const { + isWindows, + isLinux, + EMPTY_FN, + EMPTY_STR, + KEY_LISTENERS, + KEY_ERR, + KEY_RAW, + HANDLER_KEYS, + EV_CHANGE, + EV_ADD, + EV_ADD_DIR, + EV_ERROR, + STR_DATA, + STR_END, + BRACE_START, + STAR +} = require('./constants'); + +const THROTTLE_MODE_WATCH = 'watch'; + +const open = promisify(fs.open); +const stat = promisify(fs.stat); +const lstat = promisify(fs.lstat); +const close = promisify(fs.close); +const fsrealpath = promisify(fs.realpath); + +const statMethods = { lstat, stat }; + +// TODO: emit errors properly. Example: EMFILE on Macos. +const foreach = (val, fn) => { + if (val instanceof Set) { + val.forEach(fn); + } else { + fn(val); + } +}; + +const addAndConvert = (main, prop, item) => { + let container = main[prop]; + if (!(container instanceof Set)) { + main[prop] = container = new Set([container]); + } + container.add(item); +}; + +const clearItem = cont => key => { + const set = cont[key]; + if (set instanceof Set) { + set.clear(); + } else { + delete cont[key]; + } +}; + +const delFromSet = (main, prop, item) => { + const container = main[prop]; + if (container instanceof Set) { + container.delete(item); + } else if (container === item) { + delete main[prop]; + } +}; + +const isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val; + +/** + * @typedef {String} Path + */ + +// fs_watch helpers + +// object to hold per-process fs_watch instances +// (may be shared across chokidar FSWatcher instances) + +/** + * @typedef {Object} FsWatchContainer + * @property {Set} listeners + * @property {Set} errHandlers + * @property {Set} rawEmitters + * @property {fs.FSWatcher=} watcher + * @property {Boolean=} watcherUnusable + */ + +/** + * @type {Map} + */ +const FsWatchInstances = new Map(); + +/** + * Instantiates the fs_watch interface + * @param {String} path to be watched + * @param {Object} options to be passed to fs_watch + * @param {Function} listener main event handler + * @param {Function} errHandler emits info about errors + * @param {Function} emitRaw emits raw event data + * @returns {fs.FSWatcher} new fsevents instance + */ +function createFsWatchInstance(path, options, listener, errHandler, emitRaw) { + const handleEvent = (rawEvent, evPath) => { + listener(path); + emitRaw(rawEvent, evPath, {watchedPath: path}); + + // emit based on events occurring for files from a directory's watcher in + // case the file's watcher misses it (and rely on throttling to de-dupe) + if (evPath && path !== evPath) { + fsWatchBroadcast( + sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath) + ); + } + }; + try { + return fs.watch(path, options, handleEvent); + } catch (error) { + errHandler(error); + } +} + +/** + * Helper for passing fs_watch event data to a collection of listeners + * @param {Path} fullPath absolute path bound to fs_watch instance + * @param {String} type listener type + * @param {*=} val1 arguments to be passed to listeners + * @param {*=} val2 + * @param {*=} val3 + */ +const fsWatchBroadcast = (fullPath, type, val1, val2, val3) => { + const cont = FsWatchInstances.get(fullPath); + if (!cont) return; + foreach(cont[type], (listener) => { + listener(val1, val2, val3); + }); +}; + +/** + * Instantiates the fs_watch interface or binds listeners + * to an existing one covering the same file system entry + * @param {String} path + * @param {String} fullPath absolute path + * @param {Object} options to be passed to fs_watch + * @param {Object} handlers container for event listener functions + */ +const setFsWatchListener = (path, fullPath, options, handlers) => { + const {listener, errHandler, rawEmitter} = handlers; + let cont = FsWatchInstances.get(fullPath); + + /** @type {fs.FSWatcher=} */ + let watcher; + if (!options.persistent) { + watcher = createFsWatchInstance( + path, options, listener, errHandler, rawEmitter + ); + return watcher.close.bind(watcher); + } + if (cont) { + addAndConvert(cont, KEY_LISTENERS, listener); + addAndConvert(cont, KEY_ERR, errHandler); + addAndConvert(cont, KEY_RAW, rawEmitter); + } else { + watcher = createFsWatchInstance( + path, + options, + fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), + errHandler, // no need to use broadcast here + fsWatchBroadcast.bind(null, fullPath, KEY_RAW) + ); + if (!watcher) return; + watcher.on(EV_ERROR, async (error) => { + const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR); + cont.watcherUnusable = true; // documented since Node 10.4.1 + // Workaround for https://github.com/joyent/node/issues/4337 + if (isWindows && error.code === 'EPERM') { + try { + const fd = await open(path, 'r'); + await close(fd); + broadcastErr(error); + } catch (err) {} + } else { + broadcastErr(error); + } + }); + cont = { + listeners: listener, + errHandlers: errHandler, + rawEmitters: rawEmitter, + watcher + }; + FsWatchInstances.set(fullPath, cont); + } + // const index = cont.listeners.indexOf(listener); + + // removes this instance's listeners and closes the underlying fs_watch + // instance if there are no more listeners left + return () => { + delFromSet(cont, KEY_LISTENERS, listener); + delFromSet(cont, KEY_ERR, errHandler); + delFromSet(cont, KEY_RAW, rawEmitter); + if (isEmptySet(cont.listeners)) { + // Check to protect against issue gh-730. + // if (cont.watcherUnusable) { + cont.watcher.close(); + // } + FsWatchInstances.delete(fullPath); + HANDLER_KEYS.forEach(clearItem(cont)); + cont.watcher = undefined; + Object.freeze(cont); + } + }; +}; + +// fs_watchFile helpers + +// object to hold per-process fs_watchFile instances +// (may be shared across chokidar FSWatcher instances) +const FsWatchFileInstances = new Map(); + +/** + * Instantiates the fs_watchFile interface or binds listeners + * to an existing one covering the same file system entry + * @param {String} path to be watched + * @param {String} fullPath absolute path + * @param {Object} options options to be passed to fs_watchFile + * @param {Object} handlers container for event listener functions + * @returns {Function} closer + */ +const setFsWatchFileListener = (path, fullPath, options, handlers) => { + const {listener, rawEmitter} = handlers; + let cont = FsWatchFileInstances.get(fullPath); + + /* eslint-disable no-unused-vars, prefer-destructuring */ + let listeners = new Set(); + let rawEmitters = new Set(); + + const copts = cont && cont.options; + if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) { + // "Upgrade" the watcher to persistence or a quicker interval. + // This creates some unlikely edge case issues if the user mixes + // settings in a very weird way, but solving for those cases + // doesn't seem worthwhile for the added complexity. + listeners = cont.listeners; + rawEmitters = cont.rawEmitters; + fs.unwatchFile(fullPath); + cont = undefined; + } + + /* eslint-enable no-unused-vars, prefer-destructuring */ + + if (cont) { + addAndConvert(cont, KEY_LISTENERS, listener); + addAndConvert(cont, KEY_RAW, rawEmitter); + } else { + // TODO + // listeners.add(listener); + // rawEmitters.add(rawEmitter); + cont = { + listeners: listener, + rawEmitters: rawEmitter, + options, + watcher: fs.watchFile(fullPath, options, (curr, prev) => { + foreach(cont.rawEmitters, (rawEmitter) => { + rawEmitter(EV_CHANGE, fullPath, {curr, prev}); + }); + const currmtime = curr.mtimeMs; + if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) { + foreach(cont.listeners, (listener) => listener(path, curr)); + } + }) + }; + FsWatchFileInstances.set(fullPath, cont); + } + // const index = cont.listeners.indexOf(listener); + + // Removes this instance's listeners and closes the underlying fs_watchFile + // instance if there are no more listeners left. + return () => { + delFromSet(cont, KEY_LISTENERS, listener); + delFromSet(cont, KEY_RAW, rawEmitter); + if (isEmptySet(cont.listeners)) { + FsWatchFileInstances.delete(fullPath); + fs.unwatchFile(fullPath); + cont.options = cont.watcher = undefined; + Object.freeze(cont); + } + }; +}; + +/** + * @mixin + */ +class NodeFsHandler { + +/** + * @param {import("../index").FSWatcher} fsW + */ +constructor(fsW) { + this.fsw = fsW; + this._boundHandleError = (error) => fsW._handleError(error); +} + +/** + * Watch file for changes with fs_watchFile or fs_watch. + * @param {String} path to file or dir + * @param {Function} listener on fs change + * @returns {Function} closer for the watcher instance + */ +_watchWithNodeFs(path, listener) { + const opts = this.fsw.options; + const directory = sysPath.dirname(path); + const basename = sysPath.basename(path); + const parent = this.fsw._getWatchedDir(directory); + parent.add(basename); + const absolutePath = sysPath.resolve(path); + const options = {persistent: opts.persistent}; + if (!listener) listener = EMPTY_FN; + + let closer; + if (opts.usePolling) { + options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ? + opts.binaryInterval : opts.interval; + closer = setFsWatchFileListener(path, absolutePath, options, { + listener, + rawEmitter: this.fsw._emitRaw + }); + } else { + closer = setFsWatchListener(path, absolutePath, options, { + listener, + errHandler: this._boundHandleError, + rawEmitter: this.fsw._emitRaw + }); + } + return closer; +} + +/** + * Watch a file and emit add event if warranted. + * @param {Path} file Path + * @param {fs.Stats} stats result of fs_stat + * @param {Boolean} initialAdd was the file added at watch instantiation? + * @returns {Function} closer for the watcher instance + */ +_handleFile(file, stats, initialAdd) { + if (this.fsw.closed) { + return; + } + const dirname = sysPath.dirname(file); + const basename = sysPath.basename(file); + const parent = this.fsw._getWatchedDir(dirname); + // stats is always present + let prevStats = stats; + + // if the file is already being watched, do nothing + if (parent.has(basename)) return; + + const listener = async (path, newStats) => { + if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return; + if (!newStats || newStats.mtimeMs === 0) { + try { + const newStats = await stat(file); + if (this.fsw.closed) return; + // Check that change event was not fired because of changed only accessTime. + const at = newStats.atimeMs; + const mt = newStats.mtimeMs; + if (!at || at <= mt || mt !== prevStats.mtimeMs) { + this.fsw._emit(EV_CHANGE, file, newStats); + } + if (isLinux && prevStats.ino !== newStats.ino) { + this.fsw._closeFile(path) + prevStats = newStats; + this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener)); + } else { + prevStats = newStats; + } + } catch (error) { + // Fix issues where mtime is null but file is still present + this.fsw._remove(dirname, basename); + } + // add is about to be emitted if file not already tracked in parent + } else if (parent.has(basename)) { + // Check that change event was not fired because of changed only accessTime. + const at = newStats.atimeMs; + const mt = newStats.mtimeMs; + if (!at || at <= mt || mt !== prevStats.mtimeMs) { + this.fsw._emit(EV_CHANGE, file, newStats); + } + prevStats = newStats; + } + } + // kick off the watcher + const closer = this._watchWithNodeFs(file, listener); + + // emit an add event if we're supposed to + if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) { + if (!this.fsw._throttle(EV_ADD, file, 0)) return; + this.fsw._emit(EV_ADD, file, stats); + } + + return closer; +} + +/** + * Handle symlinks encountered while reading a dir. + * @param {Object} entry returned by readdirp + * @param {String} directory path of dir being read + * @param {String} path of this item + * @param {String} item basename of this item + * @returns {Promise} true if no more processing is needed for this entry. + */ +async _handleSymlink(entry, directory, path, item) { + if (this.fsw.closed) { + return; + } + const full = entry.fullPath; + const dir = this.fsw._getWatchedDir(directory); + + if (!this.fsw.options.followSymlinks) { + // watch symlink directly (don't follow) and detect changes + this.fsw._incrReadyCount(); + + let linkPath; + try { + linkPath = await fsrealpath(path); + } catch (e) { + this.fsw._emitReady(); + return true; + } + + if (this.fsw.closed) return; + if (dir.has(item)) { + if (this.fsw._symlinkPaths.get(full) !== linkPath) { + this.fsw._symlinkPaths.set(full, linkPath); + this.fsw._emit(EV_CHANGE, path, entry.stats); + } + } else { + dir.add(item); + this.fsw._symlinkPaths.set(full, linkPath); + this.fsw._emit(EV_ADD, path, entry.stats); + } + this.fsw._emitReady(); + return true; + } + + // don't follow the same symlink more than once + if (this.fsw._symlinkPaths.has(full)) { + return true; + } + + this.fsw._symlinkPaths.set(full, true); +} + +_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) { + // Normalize the directory name on Windows + directory = sysPath.join(directory, EMPTY_STR); + + if (!wh.hasGlob) { + throttler = this.fsw._throttle('readdir', directory, 1000); + if (!throttler) return; + } + + const previous = this.fsw._getWatchedDir(wh.path); + const current = new Set(); + + let stream = this.fsw._readdirp(directory, { + fileFilter: entry => wh.filterPath(entry), + directoryFilter: entry => wh.filterDir(entry), + depth: 0 + }).on(STR_DATA, async (entry) => { + if (this.fsw.closed) { + stream = undefined; + return; + } + const item = entry.path; + let path = sysPath.join(directory, item); + current.add(item); + + if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) { + return; + } + + if (this.fsw.closed) { + stream = undefined; + return; + } + // Files that present in current directory snapshot + // but absent in previous are added to watch list and + // emit `add` event. + if (item === target || !target && !previous.has(item)) { + this.fsw._incrReadyCount(); + + // ensure relativeness of path is preserved in case of watcher reuse + path = sysPath.join(dir, sysPath.relative(dir, path)); + + this._addToNodeFs(path, initialAdd, wh, depth + 1); + } + }).on(EV_ERROR, this._boundHandleError); + + return new Promise(resolve => + stream.once(STR_END, () => { + if (this.fsw.closed) { + stream = undefined; + return; + } + const wasThrottled = throttler ? throttler.clear() : false; + + resolve(); + + // Files that absent in current directory snapshot + // but present in previous emit `remove` event + // and are removed from @watched[directory]. + previous.getChildren().filter((item) => { + return item !== directory && + !current.has(item) && + // in case of intersecting globs; + // a path may have been filtered out of this readdir, but + // shouldn't be removed because it matches a different glob + (!wh.hasGlob || wh.filterPath({ + fullPath: sysPath.resolve(directory, item) + })); + }).forEach((item) => { + this.fsw._remove(directory, item); + }); + + stream = undefined; + + // one more time for any missed in case changes came in extremely quickly + if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler); + }) + ); +} + +/** + * Read directory to add / remove files from `@watched` list and re-read it on change. + * @param {String} dir fs path + * @param {fs.Stats} stats + * @param {Boolean} initialAdd + * @param {Number} depth relative to user-supplied path + * @param {String} target child path targeted for watch + * @param {Object} wh Common watch helpers for this path + * @param {String} realpath + * @returns {Promise} closer for the watcher instance. + */ +async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) { + const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir)); + const tracked = parentDir.has(sysPath.basename(dir)); + if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) { + if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats); + } + + // ensure dir is tracked (harmless if redundant) + parentDir.add(sysPath.basename(dir)); + this.fsw._getWatchedDir(dir); + let throttler; + let closer; + + const oDepth = this.fsw.options.depth; + if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) { + if (!target) { + await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler); + if (this.fsw.closed) return; + } + + closer = this._watchWithNodeFs(dir, (dirPath, stats) => { + // if current directory is removed, do nothing + if (stats && stats.mtimeMs === 0) return; + + this._handleRead(dirPath, false, wh, target, dir, depth, throttler); + }); + } + return closer; +} + +/** + * Handle added file, directory, or glob pattern. + * Delegates call to _handleFile / _handleDir after checks. + * @param {String} path to file or ir + * @param {Boolean} initialAdd was the file added at watch instantiation? + * @param {Object} priorWh depth relative to user-supplied path + * @param {Number} depth Child path actually targeted for watch + * @param {String=} target Child path actually targeted for watch + * @returns {Promise} + */ +async _addToNodeFs(path, initialAdd, priorWh, depth, target) { + const ready = this.fsw._emitReady; + if (this.fsw._isIgnored(path) || this.fsw.closed) { + ready(); + return false; + } + + const wh = this.fsw._getWatchHelpers(path, depth); + if (!wh.hasGlob && priorWh) { + wh.hasGlob = priorWh.hasGlob; + wh.globFilter = priorWh.globFilter; + wh.filterPath = entry => priorWh.filterPath(entry); + wh.filterDir = entry => priorWh.filterDir(entry); + } + + // evaluate what is at the path we're being asked to watch + try { + const stats = await statMethods[wh.statMethod](wh.watchPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(wh.watchPath, stats)) { + ready(); + return false; + } + + const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START); + let closer; + if (stats.isDirectory()) { + const absPath = sysPath.resolve(path); + const targetPath = follow ? await fsrealpath(path) : path; + if (this.fsw.closed) return; + closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath); + if (this.fsw.closed) return; + // preserve this symlink's target path + if (absPath !== targetPath && targetPath !== undefined) { + this.fsw._symlinkPaths.set(absPath, targetPath); + } + } else if (stats.isSymbolicLink()) { + const targetPath = follow ? await fsrealpath(path) : path; + if (this.fsw.closed) return; + const parent = sysPath.dirname(wh.watchPath); + this.fsw._getWatchedDir(parent).add(wh.watchPath); + this.fsw._emit(EV_ADD, wh.watchPath, stats); + closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath); + if (this.fsw.closed) return; + + // preserve this symlink's target path + if (targetPath !== undefined) { + this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath); + } + } else { + closer = this._handleFile(wh.watchPath, stats, initialAdd); + } + ready(); + + this.fsw._addPathCloser(path, closer); + return false; + + } catch (error) { + if (this.fsw._handleError(error)) { + ready(); + return path; + } + } +} + +} + +module.exports = NodeFsHandler; diff --git a/node_modules/chokidar/package.json b/node_modules/chokidar/package.json new file mode 100644 index 0000000..6c3cd27 --- /dev/null +++ b/node_modules/chokidar/package.json @@ -0,0 +1,85 @@ +{ + "name": "chokidar", + "description": "Minimal and efficient cross-platform file watching library", + "version": "3.5.3", + "homepage": "https://github.com/paulmillr/chokidar", + "author": "Paul Miller (https://paulmillr.com)", + "contributors": [ + "Paul Miller (https://paulmillr.com)", + "Elan Shanker" + ], + "engines": { + "node": ">= 8.10.0" + }, + "main": "index.js", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "devDependencies": { + "@types/node": "^14", + "chai": "^4.3", + "dtslint": "^3.3.0", + "eslint": "^7.0.0", + "mocha": "^7.0.0", + "nyc": "^15.0.0", + "rimraf": "^3.0.0", + "sinon": "^9.0.1", + "sinon-chai": "^3.3.0", + "typescript": "~4.4.3", + "upath": "^1.2.0" + }, + "files": [ + "index.js", + "lib/*.js", + "types/index.d.ts" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/paulmillr/chokidar.git" + }, + "bugs": { + "url": "https://github.com/paulmillr/chokidar/issues" + }, + "license": "MIT", + "scripts": { + "dtslint": "dtslint types", + "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .", + "mocha": "mocha --exit --timeout 90000", + "test": "npm run lint && npm run mocha" + }, + "keywords": [ + "fs", + "watch", + "watchFile", + "watcher", + "watching", + "file", + "fsevents" + ], + "types": "./types/index.d.ts", + "nyc": { + "include": [ + "index.js", + "lib/*.js" + ], + "reporter": [ + "html", + "text" + ] + }, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] +} diff --git a/node_modules/chokidar/types/index.d.ts b/node_modules/chokidar/types/index.d.ts new file mode 100644 index 0000000..aab8e33 --- /dev/null +++ b/node_modules/chokidar/types/index.d.ts @@ -0,0 +1,188 @@ +// TypeScript Version: 3.0 + +/// + +import * as fs from "fs"; +import { EventEmitter } from "events"; +import { Matcher } from 'anymatch'; + +export class FSWatcher extends EventEmitter implements fs.FSWatcher { + options: WatchOptions; + + /** + * Constructs a new FSWatcher instance with optional WatchOptions parameter. + */ + constructor(options?: WatchOptions); + + /** + * Add files, directories, or glob patterns for tracking. Takes an array of strings or just one + * string. + */ + add(paths: string | ReadonlyArray): this; + + /** + * Stop watching files, directories, or glob patterns. Takes an array of strings or just one + * string. + */ + unwatch(paths: string | ReadonlyArray): this; + + /** + * Returns an object representing all the paths on the file system being watched by this + * `FSWatcher` instance. The object's keys are all the directories (using absolute paths unless + * the `cwd` option was used), and the values are arrays of the names of the items contained in + * each directory. + */ + getWatched(): { + [directory: string]: string[]; + }; + + /** + * Removes all listeners from watched files. + */ + close(): Promise; + + on(event: 'add'|'addDir'|'change', listener: (path: string, stats?: fs.Stats) => void): this; + + on(event: 'all', listener: (eventName: 'add'|'addDir'|'change'|'unlink'|'unlinkDir', path: string, stats?: fs.Stats) => void): this; + + /** + * Error occurred + */ + on(event: 'error', listener: (error: Error) => void): this; + + /** + * Exposes the native Node `fs.FSWatcher events` + */ + on(event: 'raw', listener: (eventName: string, path: string, details: any) => void): this; + + /** + * Fires when the initial scan is complete + */ + on(event: 'ready', listener: () => void): this; + + on(event: 'unlink'|'unlinkDir', listener: (path: string) => void): this; + + on(event: string, listener: (...args: any[]) => void): this; +} + +export interface WatchOptions { + /** + * Indicates whether the process should continue to run as long as files are being watched. If + * set to `false` when using `fsevents` to watch, no more events will be emitted after `ready`, + * even if the process continues to run. + */ + persistent?: boolean; + + /** + * ([anymatch](https://github.com/micromatch/anymatch)-compatible definition) Defines files/paths to + * be ignored. The whole relative or absolute path is tested, not just filename. If a function + * with two arguments is provided, it gets called twice per path - once with a single argument + * (the path), second time with two arguments (the path and the + * [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object of that path). + */ + ignored?: Matcher; + + /** + * If set to `false` then `add`/`addDir` events are also emitted for matching paths while + * instantiating the watching as chokidar discovers these file paths (before the `ready` event). + */ + ignoreInitial?: boolean; + + /** + * When `false`, only the symlinks themselves will be watched for changes instead of following + * the link references and bubbling events through the link's path. + */ + followSymlinks?: boolean; + + /** + * The base directory from which watch `paths` are to be derived. Paths emitted with events will + * be relative to this. + */ + cwd?: string; + + /** + * If set to true then the strings passed to .watch() and .add() are treated as literal path + * names, even if they look like globs. Default: false. + */ + disableGlobbing?: boolean; + + /** + * Whether to use fs.watchFile (backed by polling), or fs.watch. If polling leads to high CPU + * utilization, consider setting this to `false`. It is typically necessary to **set this to + * `true` to successfully watch files over a network**, and it may be necessary to successfully + * watch files in other non-standard situations. Setting to `true` explicitly on OS X overrides + * the `useFsEvents` default. + */ + usePolling?: boolean; + + /** + * Whether to use the `fsevents` watching interface if available. When set to `true` explicitly + * and `fsevents` is available this supercedes the `usePolling` setting. When set to `false` on + * OS X, `usePolling: true` becomes the default. + */ + useFsEvents?: boolean; + + /** + * If relying upon the [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object that + * may get passed with `add`, `addDir`, and `change` events, set this to `true` to ensure it is + * provided even in cases where it wasn't already available from the underlying watch events. + */ + alwaysStat?: boolean; + + /** + * If set, limits how many levels of subdirectories will be traversed. + */ + depth?: number; + + /** + * Interval of file system polling. + */ + interval?: number; + + /** + * Interval of file system polling for binary files. ([see list of binary extensions](https://gi + * thub.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json)) + */ + binaryInterval?: number; + + /** + * Indicates whether to watch files that don't have read permissions if possible. If watching + * fails due to `EPERM` or `EACCES` with this set to `true`, the errors will be suppressed + * silently. + */ + ignorePermissionErrors?: boolean; + + /** + * `true` if `useFsEvents` and `usePolling` are `false`). Automatically filters out artifacts + * that occur when using editors that use "atomic writes" instead of writing directly to the + * source file. If a file is re-added within 100 ms of being deleted, Chokidar emits a `change` + * event rather than `unlink` then `add`. If the default of 100 ms does not work well for you, + * you can override it by setting `atomic` to a custom value, in milliseconds. + */ + atomic?: boolean | number; + + /** + * can be set to an object in order to adjust timing params: + */ + awaitWriteFinish?: AwaitWriteFinishOptions | boolean; +} + +export interface AwaitWriteFinishOptions { + /** + * Amount of time in milliseconds for a file size to remain constant before emitting its event. + */ + stabilityThreshold?: number; + + /** + * File size polling interval. + */ + pollInterval?: number; +} + +/** + * produces an instance of `FSWatcher`. + */ +export function watch( + paths: string | ReadonlyArray, + options?: WatchOptions +): FSWatcher; diff --git a/node_modules/chroma-js/.eslintrc.cjs b/node_modules/chroma-js/.eslintrc.cjs new file mode 100644 index 0000000..80cdb73 --- /dev/null +++ b/node_modules/chroma-js/.eslintrc.cjs @@ -0,0 +1,15 @@ +module.exports = { + env: { + browser: true, + commonjs: true, + }, + parser: "@babel/eslint-parser", + parserOptions: { + requireConfigFile: false, + }, + extends: "eslint:recommended", + globals: {}, + rules: { + "no-sequences": "error", + }, +}; diff --git a/node_modules/chroma-js/CHANGELOG.md b/node_modules/chroma-js/CHANGELOG.md new file mode 100644 index 0000000..d6f1f0f --- /dev/null +++ b/node_modules/chroma-js/CHANGELOG.md @@ -0,0 +1,80 @@ +## Changelog + +### 2.0.3 +* hsl2rgb will, like other x2rgb conversions now set the default alpha to 1 + +### 2.0.2 +* use a more mangle-safe check for Color class constructor to fix issues with uglifyjs and terser + +### 2.0.1 +* added `chroma.valid()` for checking if a color can be parsed by chroma.js + +### 2.0.0 +* chroma.js has been ported from CoffeeScript to ES6! This means you can now import parts of chroma in your projects! +* changed HCG input space from [0..360,0..100,0..100] to [0..360,0..1,0..1] (to be in line with HSL) +* added new object unpacking (e.g. `hsl2rgb({h,s,l})`) +* changed default interpolation to `lrgb` in mix/interpolate and average. +* if colors can't be parsed correctly, chroma will now throw Errors instead of silently failing with console.errors + +### 1.4.1 +* chroma.scale() now interprets `null` as NaN and returns the fallback color. Before it had interpreted `null` as `0` +* added `scale.nodata()` to allow customizing the previously hard-coded fallback (aka "no data") color #cccccc + + +### 1.4.0 +* color.hex() now automatically sets the mode to 'rgba' if the colors alpha channel is < 1. so `chroma('rgba(255,0,0,.5)').hex()` will now return `"#ff000080"` instead of `"#ff0000"`. if this is not what you want, you must explicitly set the mode to `rgb` using `.hex("rgb")`. +* bugfix in chroma.average in LRGB mode ([#187](https://github.com/gka/chroma.js/issues/187)) +* chroma.scale now also works with just one color ([#180](https://github.com/gka/chroma.js/issues/180)) + + +### 1.3.5 +* added LRGB interpolation + +### 1.3.4 +* passing *null* as mode in scale.colors will return chroma objects + +### 1.3.3 + +* added [color.clipped](https://gka.github.io/chroma.js/#color-clipped) +* added [chroma.distance](https://gka.github.io/chroma.js/#chroma-distance) +* added [chroma.deltaE](https://gka.github.io/chroma.js/#chroma-deltae) +* [color.set](https://gka.github.io/chroma.js/#color-set) now returns a new chroma instance +* chroma.scale now allows [disabling of internal cache](https://gka.github.io/chroma.js/#scale-cache) +* [chroma.average](https://gka.github.io/chroma.js/#chroma-average) now works with any color mode +* added unit tests for color conversions +* use hex colors as default string representation +* RGB channels are now stored as floats internally for higher precision +* bugfix with cubehelix and constant lightness +* bugfix in chroma.limits quantiles +* bugfix when running scale.colors(1) +* bugfix in hsi2rgb color conversion + +### 1.2.2 + +* scale.colors() now returns the original colors instead of just min/max range + +### 1.2.0 + +* added chroma.average for averaging colors + +### 1.1.0 + +* refactored chroma.scale +* changed behaviour of scale.domain +* added scale.classes +* added scale.padding + +### 1.0.2 + +* standardized alpha channel construction +* chroma.bezier automatically returns chroma.scale + +### 1.0.1 + +* added simple color output to chroma.scale().colors() + +### 1.0.0 + +* numeric interpolation does what it should +* refactored and modularized code base +* changed argument order of Color::interpolate diff --git a/node_modules/chroma-js/LICENSE b/node_modules/chroma-js/LICENSE new file mode 100644 index 0000000..cb2499d --- /dev/null +++ b/node_modules/chroma-js/LICENSE @@ -0,0 +1,54 @@ +chroma.js - JavaScript library for color conversions + +Copyright (c) 2011-2019, Gregor Aisch +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. The name Gregor Aisch may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------- + +chroma.js includes colors from colorbrewer2.org, which are released under +the following license: + +Copyright (c) 2002 Cynthia Brewer, Mark Harrower, +and The Pennsylvania State University. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the License for the specific +language governing permissions and limitations under the License. + +------------------------------------------------------ + +Named colors are taken from X11 Color Names. +http://www.w3.org/TR/css3-color/#svg-color + +@preserve diff --git a/node_modules/chroma-js/chroma-light.js b/node_modules/chroma-js/chroma-light.js new file mode 100644 index 0000000..38e9149 --- /dev/null +++ b/node_modules/chroma-js/chroma-light.js @@ -0,0 +1,1169 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory()); +})(this, (function () { 'use strict'; + + var limit$1 = function (x, min, max) { + if ( min === void 0 ) min=0; + if ( max === void 0 ) max=1; + + return x < min ? min : x > max ? max : x; + }; + + var limit = limit$1; + + var clip_rgb$1 = function (rgb) { + rgb._clipped = false; + rgb._unclipped = rgb.slice(0); + for (var i=0; i<=3; i++) { + if (i < 3) { + if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } + rgb[i] = limit(rgb[i], 0, 255); + } else if (i === 3) { + rgb[i] = limit(rgb[i], 0, 1); + } + } + return rgb; + }; + + // ported from jQuery's $.type + var classToType = {}; + for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) { + var name = list[i]; + + classToType[("[object " + name + "]")] = name.toLowerCase(); + } + var type$c = function(obj) { + return classToType[Object.prototype.toString.call(obj)] || "object"; + }; + + var type$b = type$c; + + var unpack$d = function (args, keyOrder) { + if ( keyOrder === void 0 ) keyOrder=null; + + // if called with more than 3 arguments, we return the arguments + if (args.length >= 3) { return Array.prototype.slice.call(args); } + // with less than 3 args we check if first arg is object + // and use the keyOrder string to extract and sort properties + if (type$b(args[0]) == 'object' && keyOrder) { + return keyOrder.split('') + .filter(function (k) { return args[0][k] !== undefined; }) + .map(function (k) { return args[0][k]; }); + } + // otherwise we just return the first argument + // (which we suppose is an array of args) + return args[0]; + }; + + var type$a = type$c; + + var last$4 = function (args) { + if (args.length < 2) { return null; } + var l = args.length-1; + if (type$a(args[l]) == 'string') { return args[l].toLowerCase(); } + return null; + }; + + var PI = Math.PI; + + var utils = { + clip_rgb: clip_rgb$1, + limit: limit$1, + type: type$c, + unpack: unpack$d, + last: last$4, + PI: PI, + TWOPI: PI*2, + PITHIRD: PI/3, + DEG2RAD: PI / 180, + RAD2DEG: 180 / PI + }; + + var input$6 = { + format: {}, + autodetect: [] + }; + + var last$3 = utils.last; + var clip_rgb = utils.clip_rgb; + var type$9 = utils.type; + var _input = input$6; + + var Color$f = function Color() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var me = this; + if (type$9(args[0]) === 'object' && + args[0].constructor && + args[0].constructor === this.constructor) { + // the argument is already a Color instance + return args[0]; + } + + // last argument could be the mode + var mode = last$3(args); + var autodetect = false; + + if (!mode) { + autodetect = true; + if (!_input.sorted) { + _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; }); + _input.sorted = true; + } + // auto-detect format + for (var i = 0, list = _input.autodetect; i < list.length; i += 1) { + var chk = list[i]; + + mode = chk.test.apply(chk, args); + if (mode) { break; } + } + } + + if (_input.format[mode]) { + var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1)); + me._rgb = clip_rgb(rgb); + } else { + throw new Error('unknown format: '+args); + } + + // add alpha channel + if (me._rgb.length === 3) { me._rgb.push(1); } + }; + + Color$f.prototype.toString = function toString () { + if (type$9(this.hex) == 'function') { return this.hex(); } + return ("[" + (this._rgb.join(',')) + "]"); + }; + + var Color_1 = Color$f; + + var chroma$7 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( chroma$7.Color, [ null ].concat( args) )); + }; + + chroma$7.Color = Color_1; + chroma$7.version = '2.4.2'; + + var chroma_1 = chroma$7; + + var unpack$c = utils.unpack; + var last$2 = utils.last; + var rnd = function (a) { return Math.round(a*100)/100; }; + + /* + * supported arguments: + * - hsl2css(h,s,l) + * - hsl2css(h,s,l,a) + * - hsl2css([h,s,l], mode) + * - hsl2css([h,s,l,a], mode) + * - hsl2css({h,s,l,a}, mode) + */ + var hsl2css$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hsla = unpack$c(args, 'hsla'); + var mode = last$2(args) || 'lsa'; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1]*100) + '%'; + hsla[2] = rnd(hsla[2]*100) + '%'; + if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = 'hsla'; + } else { + hsla.length = 3; + } + return (mode + "(" + (hsla.join(',')) + ")"); + }; + + var hsl2css_1 = hsl2css$1; + + var unpack$b = utils.unpack; + + /* + * supported arguments: + * - rgb2hsl(r,g,b) + * - rgb2hsl(r,g,b,a) + * - rgb2hsl([r,g,b]) + * - rgb2hsl([r,g,b,a]) + * - rgb2hsl({r,g,b,a}) + */ + var rgb2hsl$2 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$b(args, 'rgba'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + + r /= 255; + g /= 255; + b /= 255; + + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + + var l = (max + min) / 2; + var s, h; + + if (max === min){ + s = 0; + h = Number.NaN; + } else { + s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min); + } + + if (r == max) { h = (g - b) / (max - min); } + else if (g == max) { h = 2 + (b - r) / (max - min); } + else if (b == max) { h = 4 + (r - g) / (max - min); } + + h *= 60; + if (h < 0) { h += 360; } + if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; } + return [h,s,l]; + }; + + var rgb2hsl_1 = rgb2hsl$2; + + var unpack$a = utils.unpack; + var last$1 = utils.last; + var hsl2css = hsl2css_1; + var rgb2hsl$1 = rgb2hsl_1; + var round$4 = Math.round; + + /* + * supported arguments: + * - rgb2css(r,g,b) + * - rgb2css(r,g,b,a) + * - rgb2css([r,g,b], mode) + * - rgb2css([r,g,b,a], mode) + * - rgb2css({r,g,b,a}, mode) + */ + var rgb2css$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack$a(args, 'rgba'); + var mode = last$1(args) || 'rgb'; + if (mode.substr(0,3) == 'hsl') { + return hsl2css(rgb2hsl$1(rgba), mode); + } + rgba[0] = round$4(rgba[0]); + rgba[1] = round$4(rgba[1]); + rgba[2] = round$4(rgba[2]); + if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = 'rgba'; + } + return (mode + "(" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + ")"); + }; + + var rgb2css_1 = rgb2css$1; + + var unpack$9 = utils.unpack; + var round$3 = Math.round; + + var hsl2rgb$1 = function () { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$9(args, 'hsl'); + var h = args[0]; + var s = args[1]; + var l = args[2]; + var r,g,b; + if (s === 0) { + r = g = b = l*255; + } else { + var t3 = [0,0,0]; + var c = [0,0,0]; + var t2 = l < 0.5 ? l * (1+s) : l+s-l*s; + var t1 = 2 * l - t2; + var h_ = h / 360; + t3[0] = h_ + 1/3; + t3[1] = h_; + t3[2] = h_ - 1/3; + for (var i=0; i<3; i++) { + if (t3[i] < 0) { t3[i] += 1; } + if (t3[i] > 1) { t3[i] -= 1; } + if (6 * t3[i] < 1) + { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } + else if (2 * t3[i] < 1) + { c[i] = t2; } + else if (3 * t3[i] < 2) + { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; } + else + { c[i] = t1; } + } + (assign = [round$3(c[0]*255),round$3(c[1]*255),round$3(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]); + } + if (args.length > 3) { + // keep alpha channel + return [r,g,b,args[3]]; + } + return [r,g,b,1]; + }; + + var hsl2rgb_1 = hsl2rgb$1; + + var hsl2rgb = hsl2rgb_1; + + var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; + var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + + var round$2 = Math.round; + + var css2rgb$1 = function (css) { + css = css.toLowerCase().trim(); + var m; + + // rgb(250,20,0) + if ((m = css.match(RE_RGB))) { + var rgb = m.slice(1,4); + for (var i=0; i<3; i++) { + rgb[i] = +rgb[i]; + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(250,20,0,0.4) + if ((m = css.match(RE_RGBA))) { + var rgb$1 = m.slice(1,5); + for (var i$1=0; i$1<4; i$1++) { + rgb$1[i$1] = +rgb$1[i$1]; + } + return rgb$1; + } + + // rgb(100%,0%,0%) + if ((m = css.match(RE_RGB_PCT))) { + var rgb$2 = m.slice(1,4); + for (var i$2=0; i$2<3; i$2++) { + rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55); + } + rgb$2[3] = 1; // default alpha + return rgb$2; + } + + // rgba(100%,0%,0%,0.4) + if ((m = css.match(RE_RGBA_PCT))) { + var rgb$3 = m.slice(1,5); + for (var i$3=0; i$3<3; i$3++) { + rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55); + } + rgb$3[3] = +rgb$3[3]; + return rgb$3; + } + + // hsl(0,100%,50%) + if ((m = css.match(RE_HSL))) { + var hsl = m.slice(1,4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + var rgb$4 = hsl2rgb(hsl); + rgb$4[3] = 1; + return rgb$4; + } + + // hsla(0,100%,50%,0.5) + if ((m = css.match(RE_HSLA))) { + var hsl$1 = m.slice(1,4); + hsl$1[1] *= 0.01; + hsl$1[2] *= 0.01; + var rgb$5 = hsl2rgb(hsl$1); + rgb$5[3] = +m[4]; // default alpha = 1 + return rgb$5; + } + }; + + css2rgb$1.test = function (s) { + return RE_RGB.test(s) || + RE_RGBA.test(s) || + RE_RGB_PCT.test(s) || + RE_RGBA_PCT.test(s) || + RE_HSL.test(s) || + RE_HSLA.test(s); + }; + + var css2rgb_1 = css2rgb$1; + + var chroma$6 = chroma_1; + var Color$e = Color_1; + var input$5 = input$6; + var type$8 = utils.type; + + var rgb2css = rgb2css_1; + var css2rgb = css2rgb_1; + + Color$e.prototype.css = function(mode) { + return rgb2css(this._rgb, mode); + }; + + chroma$6.css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$e, [ null ].concat( args, ['css']) )); + }; + + input$5.format.css = css2rgb; + + input$5.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$8(h) === 'string' && css2rgb.test(h)) { + return 'css'; + } + } + }); + + var unpack$8 = utils.unpack; + var last = utils.last; + var round$1 = Math.round; + + var rgb2hex$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$8(args, 'rgba'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var a = ref[3]; + var mode = last(args) || 'auto'; + if (a === undefined) { a = 1; } + if (mode === 'auto') { + mode = a < 1 ? 'rgba' : 'rgb'; + } + r = round$1(r); + g = round$1(g); + b = round$1(b); + var u = r << 16 | g << 8 | b; + var str = "000000" + u.toString(16); //#.toUpperCase(); + str = str.substr(str.length - 6); + var hxa = '0' + round$1(a * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case 'rgba': return ("#" + str + hxa); + case 'argb': return ("#" + hxa + str); + default: return ("#" + str); + } + }; + + var rgb2hex_1 = rgb2hex$1; + + var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; + var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; + + var hex2rgb = function (hex) { + if (hex.match(RE_HEX)) { + // remove optional leading # + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + // expand short-notation to full six-digit + if (hex.length === 3) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; + } + var u = parseInt(hex, 16); + var r = u >> 16; + var g = u >> 8 & 0xFF; + var b = u & 0xFF; + return [r,g,b,1]; + } + + // match rgba hex format, eg #FF000077 + if (hex.match(RE_HEXA)) { + if (hex.length === 5 || hex.length === 9) { + // remove optional leading # + hex = hex.substr(1); + } + // expand short-notation to full eight-digit + if (hex.length === 4) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3]; + } + var u$1 = parseInt(hex, 16); + var r$1 = u$1 >> 24 & 0xFF; + var g$1 = u$1 >> 16 & 0xFF; + var b$1 = u$1 >> 8 & 0xFF; + var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100; + return [r$1,g$1,b$1,a]; + } + + // we used to check for css colors here + // if _input.css? and rgb = _input.css hex + // return rgb + + throw new Error(("unknown hex color: " + hex)); + }; + + var hex2rgb_1 = hex2rgb; + + var chroma$5 = chroma_1; + var Color$d = Color_1; + var type$7 = utils.type; + var input$4 = input$6; + + var rgb2hex = rgb2hex_1; + + Color$d.prototype.hex = function(mode) { + return rgb2hex(this._rgb, mode); + }; + + chroma$5.hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$d, [ null ].concat( args, ['hex']) )); + }; + + input$4.format.hex = hex2rgb_1; + input$4.autodetect.push({ + p: 4, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$7(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) { + return 'hex'; + } + } + }); + + var unpack$7 = utils.unpack; + var type$6 = utils.type; + var chroma$4 = chroma_1; + var Color$c = Color_1; + var input$3 = input$6; + + var rgb2hsl = rgb2hsl_1; + + Color$c.prototype.hsl = function() { + return rgb2hsl(this._rgb); + }; + + chroma$4.hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$c, [ null ].concat( args, ['hsl']) )); + }; + + input$3.format.hsl = hsl2rgb_1; + + input$3.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$7(args, 'hsl'); + if (type$6(args) === 'array' && args.length === 3) { + return 'hsl'; + } + } + }); + + var labConstants = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + + // D65 standard referent + Xn: 0.950470, + Yn: 1, + Zn: 1.088830, + + t0: 0.137931034, // 4 / 29 + t1: 0.206896552, // 6 / 29 + t2: 0.12841855, // 3 * t1 * t1 + t3: 0.008856452, // t1 * t1 * t1 + }; + + var LAB_CONSTANTS$2 = labConstants; + var unpack$6 = utils.unpack; + var pow$4 = Math.pow; + + var rgb2lab$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$6(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2xyz(r,g,b); + var x = ref$1[0]; + var y = ref$1[1]; + var z = ref$1[2]; + var l = 116 * y - 16; + return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; + }; + + var rgb_xyz = function (r) { + if ((r /= 255) <= 0.04045) { return r / 12.92; } + return pow$4((r + 0.055) / 1.055, 2.4); + }; + + var xyz_lab = function (t) { + if (t > LAB_CONSTANTS$2.t3) { return pow$4(t, 1 / 3); } + return t / LAB_CONSTANTS$2.t2 + LAB_CONSTANTS$2.t0; + }; + + var rgb2xyz = function (r,g,b) { + r = rgb_xyz(r); + g = rgb_xyz(g); + b = rgb_xyz(b); + var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$2.Xn); + var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$2.Yn); + var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$2.Zn); + return [x,y,z]; + }; + + var rgb2lab_1 = rgb2lab$1; + + var LAB_CONSTANTS$1 = labConstants; + var unpack$5 = utils.unpack; + var pow$3 = Math.pow; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var lab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$5(args, 'lab'); + var l = args[0]; + var a = args[1]; + var b = args[2]; + var x,y,z, r,g,b_; + + y = (l + 16) / 116; + x = isNaN(a) ? y : y + a / 500; + z = isNaN(b) ? y : y - b / 200; + + y = LAB_CONSTANTS$1.Yn * lab_xyz(y); + x = LAB_CONSTANTS$1.Xn * lab_xyz(x); + z = LAB_CONSTANTS$1.Zn * lab_xyz(z); + + r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB + g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z); + b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); + + return [r,g,b_,args.length > 3 ? args[3] : 1]; + }; + + var xyz_rgb = function (r) { + return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$3(r, 1 / 2.4) - 0.055) + }; + + var lab_xyz = function (t) { + return t > LAB_CONSTANTS$1.t1 ? t * t * t : LAB_CONSTANTS$1.t2 * (t - LAB_CONSTANTS$1.t0) + }; + + var lab2rgb_1 = lab2rgb; + + var unpack$4 = utils.unpack; + var type$5 = utils.type; + var chroma$3 = chroma_1; + var Color$b = Color_1; + var input$2 = input$6; + + var rgb2lab = rgb2lab_1; + + Color$b.prototype.lab = function() { + return rgb2lab(this._rgb); + }; + + chroma$3.lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$b, [ null ].concat( args, ['lab']) )); + }; + + input$2.format.lab = lab2rgb_1; + + input$2.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$4(args, 'lab'); + if (type$5(args) === 'array' && args.length === 3) { + return 'lab'; + } + } + }); + + var unpack$3 = utils.unpack; + var cbrt = Math.cbrt; + var pow$2 = Math.pow; + var sign$1 = Math.sign; + + var rgb2oklab$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + // OKLab color space implementation taken from + // https://bottosson.github.io/posts/oklab/ + var ref = unpack$3(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)]; + var lr = ref$1[0]; + var lg = ref$1[1]; + var lb = ref$1[2]; + var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); + var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); + var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); + + return [ + 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, + 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, + 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s + ]; + }; + + var rgb2oklab_1 = rgb2oklab$1; + + function rgb2lrgb(c) { + var abs = Math.abs(c); + if (abs < 0.04045) { + return c / 12.92; + } + return (sign$1(c) || 1) * pow$2((abs + 0.055) / 1.055, 2.4); + } + + var unpack$2 = utils.unpack; + var pow$1 = Math.pow; + var sign = Math.sign; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var oklab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$2(args, 'lab'); + var L = args[0]; + var a = args[1]; + var b = args[2]; + + var l = pow$1(L + 0.3963377774 * a + 0.2158037573 * b, 3); + var m = pow$1(L - 0.1055613458 * a - 0.0638541728 * b, 3); + var s = pow$1(L - 0.0894841775 * a - 1.291485548 * b, 3); + + return [ + 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), + 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), + 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), + args.length > 3 ? args[3] : 1 + ]; + }; + + var oklab2rgb_1 = oklab2rgb; + + function lrgb2rgb(c) { + var abs = Math.abs(c); + if (abs > 0.0031308) { + return (sign(c) || 1) * (1.055 * pow$1(abs, 1 / 2.4) - 0.055); + } + return c * 12.92; + } + + var unpack$1 = utils.unpack; + var type$4 = utils.type; + var chroma$2 = chroma_1; + var Color$a = Color_1; + var input$1 = input$6; + + var rgb2oklab = rgb2oklab_1; + + Color$a.prototype.oklab = function () { + return rgb2oklab(this._rgb); + }; + + chroma$2.oklab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$a, [ null ].concat( args, ['oklab']) )); + }; + + input$1.format.oklab = oklab2rgb_1; + + input$1.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$1(args, 'oklab'); + if (type$4(args) === 'array' && args.length === 3) { + return 'oklab'; + } + } + }); + + var chroma$1 = chroma_1; + var Color$9 = Color_1; + var input = input$6; + var unpack = utils.unpack; + var type$3 = utils.type; + var round = Math.round; + + Color$9.prototype.rgb = function(rnd) { + if ( rnd === void 0 ) rnd=true; + + if (rnd === false) { return this._rgb.slice(0,3); } + return this._rgb.slice(0,3).map(round); + }; + + Color$9.prototype.rgba = function(rnd) { + if ( rnd === void 0 ) rnd=true; + + return this._rgb.slice(0,4).map(function (v,i) { + return i<3 ? (rnd === false ? v : round(v)) : v; + }); + }; + + chroma$1.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$9, [ null ].concat( args, ['rgb']) )); + }; + + input.format.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack(args, 'rgba'); + if (rgba[3] === undefined) { rgba[3] = 1; } + return rgba; + }; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'rgba'); + if (type$3(args) === 'array' && (args.length === 3 || + args.length === 4 && type$3(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) { + return 'rgb'; + } + } + }); + + var Color$8 = Color_1; + var type$2 = utils.type; + + Color$8.prototype.alpha = function(a, mutate) { + if ( mutate === void 0 ) mutate=false; + + if (a !== undefined && type$2(a) === 'number') { + if (mutate) { + this._rgb[3] = a; + return this; + } + return new Color$8([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); + } + return this._rgb[3]; + }; + + var Color$7 = Color_1; + var LAB_CONSTANTS = labConstants; + + Color$7.prototype.darken = function(amount) { + if ( amount === void 0 ) amount=1; + + var me = this; + var lab = me.lab(); + lab[0] -= LAB_CONSTANTS.Kn * amount; + return new Color$7(lab, 'lab').alpha(me.alpha(), true); + }; + + Color$7.prototype.brighten = function(amount) { + if ( amount === void 0 ) amount=1; + + return this.darken(-amount); + }; + + Color$7.prototype.darker = Color$7.prototype.darken; + Color$7.prototype.brighter = Color$7.prototype.brighten; + + var Color$6 = Color_1; + + Color$6.prototype.get = function (mc) { + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { return src[i]; } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var interpolator$1 = {}; + + var Color$5 = Color_1; + var type$1 = utils.type; + var interpolator = interpolator$1; + + var mix$1 = function (col1, col2, f) { + if ( f === void 0 ) f=0.5; + var rest = [], len = arguments.length - 3; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; + + var mode = rest[0] || 'lrgb'; + if (!interpolator[mode] && !rest.length) { + // fall back to the first supported mode + mode = Object.keys(interpolator)[0]; + } + if (!interpolator[mode]) { + throw new Error(("interpolation mode " + mode + " is not defined")); + } + if (type$1(col1) !== 'object') { col1 = new Color$5(col1); } + if (type$1(col2) !== 'object') { col2 = new Color$5(col2); } + return interpolator[mode](col1, col2, f) + .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha())); + }; + + var Color$4 = Color_1; + var mix = mix$1; + + Color$4.prototype.mix = + Color$4.prototype.interpolate = function(col2, f) { + if ( f === void 0 ) f=0.5; + var rest = [], len = arguments.length - 2; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; + + return mix.apply(void 0, [ this, col2, f ].concat( rest )); + }; + + var Color$3 = Color_1; + var type = utils.type; + + Color$3.prototype.set = function (mc, value, mutate) { + if ( mutate === void 0 ) mutate = false; + + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { + if (type(value) == 'string') { + switch (value.charAt(0)) { + case '+': + src[i] += +value; + break; + case '-': + src[i] += +value; + break; + case '*': + src[i] *= +value.substr(1); + break; + case '/': + src[i] /= +value.substr(1); + break; + default: + src[i] = +value; + } + } else if (type(value) === 'number') { + src[i] = value; + } else { + throw new Error("unsupported value for Color.set"); + } + var out = new Color$3(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var Color$2 = Color_1; + var sqrt = Math.sqrt; + var pow = Math.pow; + + var lrgb = function (col1, col2, f) { + var ref = col1._rgb; + var x1 = ref[0]; + var y1 = ref[1]; + var z1 = ref[2]; + var ref$1 = col2._rgb; + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + return new Color$2( + sqrt(pow(x1,2) * (1-f) + pow(x2,2) * f), + sqrt(pow(y1,2) * (1-f) + pow(y2,2) * f), + sqrt(pow(z1,2) * (1-f) + pow(z2,2) * f), + 'rgb' + ) + }; + + // register interpolator + interpolator$1.lrgb = lrgb; + + var Color$1 = Color_1; + + var oklab = function (col1, col2, f) { + var xyz0 = col1.oklab(); + var xyz1 = col2.oklab(); + return new Color$1( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'oklab' + ); + }; + + // register interpolator + interpolator$1.oklab = oklab; + + var Color = Color_1; + + var valid = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + new (Function.prototype.bind.apply( Color, [ null ].concat( args) )); + return true; + } catch (e) { + return false; + } + }; + + var chroma = chroma_1; + + // feel free to comment out anything to rollup + // a smaller chroma.js built + + // io --> convert colors + + + + + + + + // operators --> modify existing Colors + + + + + + + // interpolators + + + + // generators -- > create new colors + chroma.mix = chroma.interpolate = mix$1; + + // other utility methods + chroma.valid = valid; + + var indexLight = chroma; + + return indexLight; + +})); diff --git a/node_modules/chroma-js/chroma-light.min.js b/node_modules/chroma-js/chroma-light.min.js new file mode 100644 index 0000000..2e4181d --- /dev/null +++ b/node_modules/chroma-js/chroma-light.min.js @@ -0,0 +1,58 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t="undefined"!=typeof globalThis?globalThis:t||self).chroma=r()}(this,(function(){"use strict";for(var t=function(t,r,n){return void 0===r&&(r=0),void 0===n&&(n=1),tn?n:t},r=t,n={},e=0,o=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];e255)&&(t._clipped=!0),t[n]=r(t[n],0,255)):3===n&&(t[n]=r(t[n],0,1));return t}),h=i,c=function(t,r){return void 0===r&&(r=null),t.length>=3?Array.prototype.slice.call(t):"object"==u(t[0])&&r?r.split("").filter((function(r){return void 0!==t[0][r]})).map((function(r){return t[0][r]})):t[0]},f=function(t){if(t.length<2)return null;var r=t.length-1;return"string"==s(t[r])?t[r].toLowerCase():null},p={format:{},autodetect:[]},g=f,b=l,v=h,d=p,y=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=this;if("object"===v(t[0])&&t[0].constructor&&t[0].constructor===this.constructor)return t[0];var e=g(t),o=!1;if(!e){o=!0,d.sorted||(d.autodetect=d.autodetect.sort((function(t,r){return r.p-t.p})),d.sorted=!0);for(var a=0,i=d.autodetect;a3&&n[3]<1?(n[3]=n.length>3?n[3]:1,e="hsla"):n.length=3,e+"("+n.join(",")+")"},j=c,N=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=(t=j(t,"rgba"))[0],e=t[1],o=t[2];n/=255,e/=255,o/=255;var a,i,u=Math.min(n,e,o),s=Math.max(n,e,o),l=(s+u)/2;return s===u?(a=0,i=Number.NaN):a=l<.5?(s-u)/(s+u):(s-u)/(2-s-u),n==s?i=(e-o)/(s-u):e==s?i=2+(o-n)/(s-u):o==s&&(i=4+(n-e)/(s-u)),(i*=60)<0&&(i+=360),t.length>3&&void 0!==t[3]?[i,a,l,t[3]]:[i,a,l]},$=c,A=f,C=F,E=N,O=Math.round,S=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=$(t,"rgba"),e=A(t)||"rgb";return"hsl"==e.substr(0,3)?C(E(n),e):(n[0]=O(n[0]),n[1]=O(n[1]),n[2]=O(n[2]),("rgba"===e||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,e="rgba"),e+"("+n.slice(0,"rgb"===e?3:4).join(",")+")")},L=c,I=Math.round,X=function(){for(var t,r=[],n=arguments.length;n--;)r[n]=arguments[n];var e,o,a,i=(r=L(r,"hsl"))[0],u=r[1],s=r[2];if(0===u)e=o=a=255*s;else{var l=[0,0,0],h=[0,0,0],c=s<.5?s*(1+u):s+u-s*u,f=2*s-c,p=i/360;l[0]=p+1/3,l[1]=p,l[2]=p-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?h[g]=f+6*(c-f)*l[g]:2*l[g]<1?h[g]=c:3*l[g]<2?h[g]=f+(c-f)*(2/3-l[g])*6:h[g]=f;e=(t=[I(255*h[0]),I(255*h[1]),I(255*h[2])])[0],o=t[1],a=t[2]}return r.length>3?[e,o,a,r[3]]:[e,o,a,1]},Y=X,Z=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,K=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,T=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,q=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,B=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,D=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,P=Math.round,R=function(t){var r;if(r=(t=t.toLowerCase().trim()).match(Z)){for(var n=r.slice(1,4),e=0;e<3;e++)n[e]=+n[e];return n[3]=1,n}if(r=t.match(K)){for(var o=r.slice(1,5),a=0;a<4;a++)o[a]=+o[a];return o}if(r=t.match(T)){for(var i=r.slice(1,4),u=0;u<3;u++)i[u]=P(2.55*i[u]);return i[3]=1,i}if(r=t.match(q)){for(var s=r.slice(1,5),l=0;l<3;l++)s[l]=P(2.55*s[l]);return s[3]=+s[3],s}if(r=t.match(B)){var h=r.slice(1,4);h[1]*=.01,h[2]*=.01;var c=Y(h);return c[3]=1,c}if(r=t.match(D)){var f=r.slice(1,4);f[1]*=.01,f[2]*=.01;var p=Y(f);return p[3]=+r[4],p}};R.test=function(t){return Z.test(t)||K.test(t)||T.test(t)||q.test(t)||B.test(t)||D.test(t)};var U=k,z=w,G=p,H=h,J=S,Q=R;z.prototype.css=function(t){return J(this._rgb,t)},U.css=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(z,[null].concat(t,["css"])))},G.format.css=Q,G.autodetect.push({p:5,test:function(t){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];if(!r.length&&"string"===H(t)&&Q.test(t))return"css"}});var V=c,W=f,tt=Math.round,rt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=V(t,"rgba"),e=n[0],o=n[1],a=n[2],i=n[3],u=W(t)||"auto";void 0===i&&(i=1),"auto"===u&&(u=i<1?"rgba":"rgb");var s=(e=tt(e))<<16|(o=tt(o))<<8|(a=tt(a)),l="000000"+s.toString(16);l=l.substr(l.length-6);var h="0"+tt(255*i).toString(16);switch(h=h.substr(h.length-2),u.toLowerCase()){case"rgba":return"#"+l+h;case"argb":return"#"+h+l;default:return"#"+l}},nt=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,et=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,ot=function(t){if(t.match(nt)){4!==t.length&&7!==t.length||(t=t.substr(1)),3===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]);var r=parseInt(t,16);return[r>>16,r>>8&255,255&r,1]}if(t.match(et)){5!==t.length&&9!==t.length||(t=t.substr(1)),4===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]);var n=parseInt(t,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+t)},at=k,it=w,ut=h,st=p,lt=rt;it.prototype.hex=function(t){return lt(this._rgb,t)},at.hex=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(it,[null].concat(t,["hex"])))},st.format.hex=ot,st.autodetect.push({p:4,test:function(t){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];if(!r.length&&"string"===ut(t)&&[3,4,5,6,7,8,9].indexOf(t.length)>=0)return"hex"}});var ht=c,ct=h,ft=k,pt=w,gt=p,bt=N;pt.prototype.hsl=function(){return bt(this._rgb)},ft.hsl=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(pt,[null].concat(t,["hsl"])))},gt.format.hsl=X,gt.autodetect.push({p:2,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if(t=ht(t,"hsl"),"array"===ct(t)&&3===t.length)return"hsl"}});var vt={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},dt=vt,yt=c,wt=Math.pow,mt=function(t){return(t/=255)<=.04045?t/12.92:wt((t+.055)/1.055,2.4)},kt=function(t){return t>dt.t3?wt(t,1/3):t/dt.t2+dt.t0},_t=function(t,r,n){return t=mt(t),r=mt(r),n=mt(n),[kt((.4124564*t+.3575761*r+.1804375*n)/dt.Xn),kt((.2126729*t+.7151522*r+.072175*n)/dt.Yn),kt((.0193339*t+.119192*r+.9503041*n)/dt.Zn)]},Mt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=yt(t,"rgb"),e=n[0],o=n[1],a=n[2],i=_t(e,o,a),u=i[0],s=i[1],l=i[2],h=116*s-16;return[h<0?0:h,500*(u-s),200*(s-l)]},xt=vt,Ft=c,jt=Math.pow,Nt=function(t){return 255*(t<=.00304?12.92*t:1.055*jt(t,1/2.4)-.055)},$t=function(t){return t>xt.t1?t*t*t:xt.t2*(t-xt.t0)},At=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n,e,o,a=(t=Ft(t,"lab"))[0],i=t[1],u=t[2];return e=(a+16)/116,n=isNaN(i)?e:e+i/500,o=isNaN(u)?e:e-u/200,e=xt.Yn*$t(e),n=xt.Xn*$t(n),o=xt.Zn*$t(o),[Nt(3.2404542*n-1.5371385*e-.4985314*o),Nt(-.969266*n+1.8760108*e+.041556*o),Nt(.0556434*n-.2040259*e+1.0572252*o),t.length>3?t[3]:1]},Ct=c,Et=h,Ot=k,St=w,Lt=p,It=Mt;St.prototype.lab=function(){return It(this._rgb)},Ot.lab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(St,[null].concat(t,["lab"])))},Lt.format.lab=At,Lt.autodetect.push({p:2,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if(t=Ct(t,"lab"),"array"===Et(t)&&3===t.length)return"lab"}});var Xt=c,Yt=Math.cbrt,Zt=Math.pow,Kt=Math.sign,Tt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=Xt(t,"rgb"),e=n[0],o=n[1],a=n[2],i=[qt(e/255),qt(o/255),qt(a/255)],u=i[0],s=i[1],l=i[2],h=Yt(.4122214708*u+.5363325363*s+.0514459929*l),c=Yt(.2119034982*u+.6806995451*s+.1073969566*l),f=Yt(.0883024619*u+.2817188376*s+.6299787005*l);return[.2104542553*h+.793617785*c-.0040720468*f,1.9779984951*h-2.428592205*c+.4505937099*f,.0259040371*h+.7827717662*c-.808675766*f]};function qt(t){var r=Math.abs(t);return r<.04045?t/12.92:(Kt(t)||1)*Zt((r+.055)/1.055,2.4)}var Bt=c,Dt=Math.pow,Pt=Math.sign,Rt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=(t=Bt(t,"lab"))[0],e=t[1],o=t[2],a=Dt(n+.3963377774*e+.2158037573*o,3),i=Dt(n-.1055613458*e-.0638541728*o,3),u=Dt(n-.0894841775*e-1.291485548*o,3);return[255*Ut(4.0767416621*a-3.3077115913*i+.2309699292*u),255*Ut(-1.2684380046*a+2.6097574011*i-.3413193965*u),255*Ut(-.0041960863*a-.7034186147*i+1.707614701*u),t.length>3?t[3]:1]};function Ut(t){var r=Math.abs(t);return r>.0031308?(Pt(t)||1)*(1.055*Dt(r,1/2.4)-.055):12.92*t}var zt=c,Gt=h,Ht=k,Jt=w,Qt=p,Vt=Tt;Jt.prototype.oklab=function(){return Vt(this._rgb)},Ht.oklab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(Jt,[null].concat(t,["oklab"])))},Qt.format.oklab=Rt,Qt.autodetect.push({p:3,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if(t=zt(t,"oklab"),"array"===Gt(t)&&3===t.length)return"oklab"}});var Wt=k,tr=w,rr=p,nr=c,er=h,or=Math.round;tr.prototype.rgb=function(t){return void 0===t&&(t=!0),!1===t?this._rgb.slice(0,3):this._rgb.slice(0,3).map(or)},tr.prototype.rgba=function(t){return void 0===t&&(t=!0),this._rgb.slice(0,4).map((function(r,n){return n<3?!1===t?r:or(r):r}))},Wt.rgb=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(tr,[null].concat(t,["rgb"])))},rr.format.rgb=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=nr(t,"rgba");return void 0===n[3]&&(n[3]=1),n},rr.autodetect.push({p:3,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if(t=nr(t,"rgba"),"array"===er(t)&&(3===t.length||4===t.length&&"number"==er(t[3])&&t[3]>=0&&t[3]<=1))return"rgb"}});var ar=w,ir=h;ar.prototype.alpha=function(t,r){return void 0===r&&(r=!1),void 0!==t&&"number"===ir(t)?r?(this._rgb[3]=t,this):new ar([this._rgb[0],this._rgb[1],this._rgb[2],t],"rgb"):this._rgb[3]};var ur=w,sr=vt;ur.prototype.darken=function(t){void 0===t&&(t=1);var r=this.lab();return r[0]-=sr.Kn*t,new ur(r,"lab").alpha(this.alpha(),!0)},ur.prototype.brighten=function(t){return void 0===t&&(t=1),this.darken(-t)},ur.prototype.darker=ur.prototype.darken,ur.prototype.brighter=ur.prototype.brighten,w.prototype.get=function(t){var r=t.split("."),n=r[0],e=r[1],o=this[n]();if(e){var a=n.indexOf(e)-("ok"===n.substr(0,2)?2:0);if(a>-1)return o[a];throw new Error("unknown channel "+e+" in mode "+n)}return o};var lr={},hr=w,cr=h,fr=lr,pr=function(t,r,n){void 0===n&&(n=.5);for(var e=[],o=arguments.length-3;o-- >0;)e[o]=arguments[o+3];var a=e[0]||"lrgb";if(fr[a]||e.length||(a=Object.keys(fr)[0]),!fr[a])throw new Error("interpolation mode "+a+" is not defined");return"object"!==cr(t)&&(t=new hr(t)),"object"!==cr(r)&&(r=new hr(r)),fr[a](t,r,n).alpha(t.alpha()+n*(r.alpha()-t.alpha()))},gr=w,br=pr;gr.prototype.mix=gr.prototype.interpolate=function(t,r){void 0===r&&(r=.5);for(var n=[],e=arguments.length-2;e-- >0;)n[e]=arguments[e+2];return br.apply(void 0,[this,t,r].concat(n))};var vr=w,dr=h;vr.prototype.set=function(t,r,n){void 0===n&&(n=!1);var e=t.split("."),o=e[0],a=e[1],i=this[o]();if(a){var u=o.indexOf(a)-("ok"===o.substr(0,2)?2:0);if(u>-1){if("string"==dr(r))switch(r.charAt(0)){case"+":case"-":i[u]+=+r;break;case"*":i[u]*=+r.substr(1);break;case"/":i[u]/=+r.substr(1);break;default:i[u]=+r}else{if("number"!==dr(r))throw new Error("unsupported value for Color.set");i[u]=r}var s=new vr(i,o);return n?(this._rgb=s._rgb,this):s}throw new Error("unknown channel "+a+" in mode "+o)}return i};var yr=w,wr=Math.sqrt,mr=Math.pow;lr.lrgb=function(t,r,n){var e=t._rgb,o=e[0],a=e[1],i=e[2],u=r._rgb,s=u[0],l=u[1],h=u[2];return new yr(wr(mr(o,2)*(1-n)+mr(s,2)*n),wr(mr(a,2)*(1-n)+mr(l,2)*n),wr(mr(i,2)*(1-n)+mr(h,2)*n),"rgb")};var kr=w;lr.oklab=function(t,r,n){var e=t.oklab(),o=r.oklab();return new kr(e[0]+n*(o[0]-e[0]),e[1]+n*(o[1]-e[1]),e[2]+n*(o[2]-e[2]),"oklab")};var _r=w,Mr=k;return Mr.mix=Mr.interpolate=pr,Mr.valid=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{return new(Function.prototype.bind.apply(_r,[null].concat(t))),!0}catch(t){return!1}},Mr})); diff --git a/node_modules/chroma-js/chroma.js b/node_modules/chroma-js/chroma.js new file mode 100644 index 0000000..f203e1d --- /dev/null +++ b/node_modules/chroma-js/chroma.js @@ -0,0 +1,3583 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory()); +})(this, (function () { 'use strict'; + + var limit$2 = function (x, min, max) { + if ( min === void 0 ) min=0; + if ( max === void 0 ) max=1; + + return x < min ? min : x > max ? max : x; + }; + + var limit$1 = limit$2; + + var clip_rgb$3 = function (rgb) { + rgb._clipped = false; + rgb._unclipped = rgb.slice(0); + for (var i=0; i<=3; i++) { + if (i < 3) { + if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } + rgb[i] = limit$1(rgb[i], 0, 255); + } else if (i === 3) { + rgb[i] = limit$1(rgb[i], 0, 1); + } + } + return rgb; + }; + + // ported from jQuery's $.type + var classToType = {}; + for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) { + var name = list$1[i$1]; + + classToType[("[object " + name + "]")] = name.toLowerCase(); + } + var type$p = function(obj) { + return classToType[Object.prototype.toString.call(obj)] || "object"; + }; + + var type$o = type$p; + + var unpack$B = function (args, keyOrder) { + if ( keyOrder === void 0 ) keyOrder=null; + + // if called with more than 3 arguments, we return the arguments + if (args.length >= 3) { return Array.prototype.slice.call(args); } + // with less than 3 args we check if first arg is object + // and use the keyOrder string to extract and sort properties + if (type$o(args[0]) == 'object' && keyOrder) { + return keyOrder.split('') + .filter(function (k) { return args[0][k] !== undefined; }) + .map(function (k) { return args[0][k]; }); + } + // otherwise we just return the first argument + // (which we suppose is an array of args) + return args[0]; + }; + + var type$n = type$p; + + var last$4 = function (args) { + if (args.length < 2) { return null; } + var l = args.length-1; + if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); } + return null; + }; + + var PI$2 = Math.PI; + + var utils = { + clip_rgb: clip_rgb$3, + limit: limit$2, + type: type$p, + unpack: unpack$B, + last: last$4, + PI: PI$2, + TWOPI: PI$2*2, + PITHIRD: PI$2/3, + DEG2RAD: PI$2 / 180, + RAD2DEG: 180 / PI$2 + }; + + var input$h = { + format: {}, + autodetect: [] + }; + + var last$3 = utils.last; + var clip_rgb$2 = utils.clip_rgb; + var type$m = utils.type; + var _input = input$h; + + var Color$D = function Color() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var me = this; + if (type$m(args[0]) === 'object' && + args[0].constructor && + args[0].constructor === this.constructor) { + // the argument is already a Color instance + return args[0]; + } + + // last argument could be the mode + var mode = last$3(args); + var autodetect = false; + + if (!mode) { + autodetect = true; + if (!_input.sorted) { + _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; }); + _input.sorted = true; + } + // auto-detect format + for (var i = 0, list = _input.autodetect; i < list.length; i += 1) { + var chk = list[i]; + + mode = chk.test.apply(chk, args); + if (mode) { break; } + } + } + + if (_input.format[mode]) { + var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1)); + me._rgb = clip_rgb$2(rgb); + } else { + throw new Error('unknown format: '+args); + } + + // add alpha channel + if (me._rgb.length === 3) { me._rgb.push(1); } + }; + + Color$D.prototype.toString = function toString () { + if (type$m(this.hex) == 'function') { return this.hex(); } + return ("[" + (this._rgb.join(',')) + "]"); + }; + + var Color_1 = Color$D; + + var chroma$k = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) )); + }; + + chroma$k.Color = Color_1; + chroma$k.version = '2.4.2'; + + var chroma_1 = chroma$k; + + var unpack$A = utils.unpack; + var max$2 = Math.max; + + var rgb2cmyk$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$A(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + r = r / 255; + g = g / 255; + b = b / 255; + var k = 1 - max$2(r,max$2(g,b)); + var f = k < 1 ? 1 / (1-k) : 0; + var c = (1-r-k) * f; + var m = (1-g-k) * f; + var y = (1-b-k) * f; + return [c,m,y,k]; + }; + + var rgb2cmyk_1 = rgb2cmyk$1; + + var unpack$z = utils.unpack; + + var cmyk2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$z(args, 'cmyk'); + var c = args[0]; + var m = args[1]; + var y = args[2]; + var k = args[3]; + var alpha = args.length > 4 ? args[4] : 1; + if (k === 1) { return [0,0,0,alpha]; } + return [ + c >= 1 ? 0 : 255 * (1-c) * (1-k), // r + m >= 1 ? 0 : 255 * (1-m) * (1-k), // g + y >= 1 ? 0 : 255 * (1-y) * (1-k), // b + alpha + ]; + }; + + var cmyk2rgb_1 = cmyk2rgb; + + var chroma$j = chroma_1; + var Color$C = Color_1; + var input$g = input$h; + var unpack$y = utils.unpack; + var type$l = utils.type; + + var rgb2cmyk = rgb2cmyk_1; + + Color$C.prototype.cmyk = function() { + return rgb2cmyk(this._rgb); + }; + + chroma$j.cmyk = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) )); + }; + + input$g.format.cmyk = cmyk2rgb_1; + + input$g.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$y(args, 'cmyk'); + if (type$l(args) === 'array' && args.length === 4) { + return 'cmyk'; + } + } + }); + + var unpack$x = utils.unpack; + var last$2 = utils.last; + var rnd = function (a) { return Math.round(a*100)/100; }; + + /* + * supported arguments: + * - hsl2css(h,s,l) + * - hsl2css(h,s,l,a) + * - hsl2css([h,s,l], mode) + * - hsl2css([h,s,l,a], mode) + * - hsl2css({h,s,l,a}, mode) + */ + var hsl2css$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hsla = unpack$x(args, 'hsla'); + var mode = last$2(args) || 'lsa'; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1]*100) + '%'; + hsla[2] = rnd(hsla[2]*100) + '%'; + if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = 'hsla'; + } else { + hsla.length = 3; + } + return (mode + "(" + (hsla.join(',')) + ")"); + }; + + var hsl2css_1 = hsl2css$1; + + var unpack$w = utils.unpack; + + /* + * supported arguments: + * - rgb2hsl(r,g,b) + * - rgb2hsl(r,g,b,a) + * - rgb2hsl([r,g,b]) + * - rgb2hsl([r,g,b,a]) + * - rgb2hsl({r,g,b,a}) + */ + var rgb2hsl$3 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$w(args, 'rgba'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + + r /= 255; + g /= 255; + b /= 255; + + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + + var l = (max + min) / 2; + var s, h; + + if (max === min){ + s = 0; + h = Number.NaN; + } else { + s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min); + } + + if (r == max) { h = (g - b) / (max - min); } + else if (g == max) { h = 2 + (b - r) / (max - min); } + else if (b == max) { h = 4 + (r - g) / (max - min); } + + h *= 60; + if (h < 0) { h += 360; } + if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; } + return [h,s,l]; + }; + + var rgb2hsl_1 = rgb2hsl$3; + + var unpack$v = utils.unpack; + var last$1 = utils.last; + var hsl2css = hsl2css_1; + var rgb2hsl$2 = rgb2hsl_1; + var round$6 = Math.round; + + /* + * supported arguments: + * - rgb2css(r,g,b) + * - rgb2css(r,g,b,a) + * - rgb2css([r,g,b], mode) + * - rgb2css([r,g,b,a], mode) + * - rgb2css({r,g,b,a}, mode) + */ + var rgb2css$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack$v(args, 'rgba'); + var mode = last$1(args) || 'rgb'; + if (mode.substr(0,3) == 'hsl') { + return hsl2css(rgb2hsl$2(rgba), mode); + } + rgba[0] = round$6(rgba[0]); + rgba[1] = round$6(rgba[1]); + rgba[2] = round$6(rgba[2]); + if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = 'rgba'; + } + return (mode + "(" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + ")"); + }; + + var rgb2css_1 = rgb2css$1; + + var unpack$u = utils.unpack; + var round$5 = Math.round; + + var hsl2rgb$1 = function () { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$u(args, 'hsl'); + var h = args[0]; + var s = args[1]; + var l = args[2]; + var r,g,b; + if (s === 0) { + r = g = b = l*255; + } else { + var t3 = [0,0,0]; + var c = [0,0,0]; + var t2 = l < 0.5 ? l * (1+s) : l+s-l*s; + var t1 = 2 * l - t2; + var h_ = h / 360; + t3[0] = h_ + 1/3; + t3[1] = h_; + t3[2] = h_ - 1/3; + for (var i=0; i<3; i++) { + if (t3[i] < 0) { t3[i] += 1; } + if (t3[i] > 1) { t3[i] -= 1; } + if (6 * t3[i] < 1) + { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } + else if (2 * t3[i] < 1) + { c[i] = t2; } + else if (3 * t3[i] < 2) + { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; } + else + { c[i] = t1; } + } + (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]); + } + if (args.length > 3) { + // keep alpha channel + return [r,g,b,args[3]]; + } + return [r,g,b,1]; + }; + + var hsl2rgb_1 = hsl2rgb$1; + + var hsl2rgb = hsl2rgb_1; + var input$f = input$h; + + var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; + var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + + var round$4 = Math.round; + + var css2rgb$1 = function (css) { + css = css.toLowerCase().trim(); + var m; + + if (input$f.format.named) { + try { + return input$f.format.named(css); + } catch (e) { + // eslint-disable-next-line + } + } + + // rgb(250,20,0) + if ((m = css.match(RE_RGB))) { + var rgb = m.slice(1,4); + for (var i=0; i<3; i++) { + rgb[i] = +rgb[i]; + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(250,20,0,0.4) + if ((m = css.match(RE_RGBA))) { + var rgb$1 = m.slice(1,5); + for (var i$1=0; i$1<4; i$1++) { + rgb$1[i$1] = +rgb$1[i$1]; + } + return rgb$1; + } + + // rgb(100%,0%,0%) + if ((m = css.match(RE_RGB_PCT))) { + var rgb$2 = m.slice(1,4); + for (var i$2=0; i$2<3; i$2++) { + rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55); + } + rgb$2[3] = 1; // default alpha + return rgb$2; + } + + // rgba(100%,0%,0%,0.4) + if ((m = css.match(RE_RGBA_PCT))) { + var rgb$3 = m.slice(1,5); + for (var i$3=0; i$3<3; i$3++) { + rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55); + } + rgb$3[3] = +rgb$3[3]; + return rgb$3; + } + + // hsl(0,100%,50%) + if ((m = css.match(RE_HSL))) { + var hsl = m.slice(1,4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + var rgb$4 = hsl2rgb(hsl); + rgb$4[3] = 1; + return rgb$4; + } + + // hsla(0,100%,50%,0.5) + if ((m = css.match(RE_HSLA))) { + var hsl$1 = m.slice(1,4); + hsl$1[1] *= 0.01; + hsl$1[2] *= 0.01; + var rgb$5 = hsl2rgb(hsl$1); + rgb$5[3] = +m[4]; // default alpha = 1 + return rgb$5; + } + }; + + css2rgb$1.test = function (s) { + return RE_RGB.test(s) || + RE_RGBA.test(s) || + RE_RGB_PCT.test(s) || + RE_RGBA_PCT.test(s) || + RE_HSL.test(s) || + RE_HSLA.test(s); + }; + + var css2rgb_1 = css2rgb$1; + + var chroma$i = chroma_1; + var Color$B = Color_1; + var input$e = input$h; + var type$k = utils.type; + + var rgb2css = rgb2css_1; + var css2rgb = css2rgb_1; + + Color$B.prototype.css = function(mode) { + return rgb2css(this._rgb, mode); + }; + + chroma$i.css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) )); + }; + + input$e.format.css = css2rgb; + + input$e.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) { + return 'css'; + } + } + }); + + var Color$A = Color_1; + var chroma$h = chroma_1; + var input$d = input$h; + var unpack$t = utils.unpack; + + input$d.format.gl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgb = unpack$t(args, 'rgba'); + rgb[0] *= 255; + rgb[1] *= 255; + rgb[2] *= 255; + return rgb; + }; + + chroma$h.gl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) )); + }; + + Color$A.prototype.gl = function() { + var rgb = this._rgb; + return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]]; + }; + + var unpack$s = utils.unpack; + + var rgb2hcg$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$s(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var c = delta * 100 / 255; + var _g = min / (255 - delta) * 100; + var h; + if (delta === 0) { + h = Number.NaN; + } else { + if (r === max) { h = (g - b) / delta; } + if (g === max) { h = 2+(b - r) / delta; } + if (b === max) { h = 4+(r - g) / delta; } + h *= 60; + if (h < 0) { h += 360; } + } + return [h, c, _g]; + }; + + var rgb2hcg_1 = rgb2hcg$1; + + var unpack$r = utils.unpack; + var floor$3 = Math.floor; + + /* + * this is basically just HSV with some minor tweaks + * + * hue.. [0..360] + * chroma .. [0..1] + * grayness .. [0..1] + */ + + var hcg2rgb = function () { + var assign, assign$1, assign$2, assign$3, assign$4, assign$5; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$r(args, 'hcg'); + var h = args[0]; + var c = args[1]; + var _g = args[2]; + var r,g,b; + _g = _g * 255; + var _c = c * 255; + if (c === 0) { + r = g = b = _g; + } else { + if (h === 360) { h = 0; } + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 60; + var i = floor$3(h); + var f = h - i; + var p = _g * (1 - c); + var q = p + _c * (1 - f); + var t = p + _c * f; + var v = p + _c; + switch (i) { + case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break + case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break + case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break + case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break + case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break + case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break + } + } + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var hcg2rgb_1 = hcg2rgb; + + var unpack$q = utils.unpack; + var type$j = utils.type; + var chroma$g = chroma_1; + var Color$z = Color_1; + var input$c = input$h; + + var rgb2hcg = rgb2hcg_1; + + Color$z.prototype.hcg = function() { + return rgb2hcg(this._rgb); + }; + + chroma$g.hcg = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) )); + }; + + input$c.format.hcg = hcg2rgb_1; + + input$c.autodetect.push({ + p: 1, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$q(args, 'hcg'); + if (type$j(args) === 'array' && args.length === 3) { + return 'hcg'; + } + } + }); + + var unpack$p = utils.unpack; + var last = utils.last; + var round$3 = Math.round; + + var rgb2hex$2 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$p(args, 'rgba'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var a = ref[3]; + var mode = last(args) || 'auto'; + if (a === undefined) { a = 1; } + if (mode === 'auto') { + mode = a < 1 ? 'rgba' : 'rgb'; + } + r = round$3(r); + g = round$3(g); + b = round$3(b); + var u = r << 16 | g << 8 | b; + var str = "000000" + u.toString(16); //#.toUpperCase(); + str = str.substr(str.length - 6); + var hxa = '0' + round$3(a * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case 'rgba': return ("#" + str + hxa); + case 'argb': return ("#" + hxa + str); + default: return ("#" + str); + } + }; + + var rgb2hex_1 = rgb2hex$2; + + var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; + var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; + + var hex2rgb$1 = function (hex) { + if (hex.match(RE_HEX)) { + // remove optional leading # + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + // expand short-notation to full six-digit + if (hex.length === 3) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; + } + var u = parseInt(hex, 16); + var r = u >> 16; + var g = u >> 8 & 0xFF; + var b = u & 0xFF; + return [r,g,b,1]; + } + + // match rgba hex format, eg #FF000077 + if (hex.match(RE_HEXA)) { + if (hex.length === 5 || hex.length === 9) { + // remove optional leading # + hex = hex.substr(1); + } + // expand short-notation to full eight-digit + if (hex.length === 4) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3]; + } + var u$1 = parseInt(hex, 16); + var r$1 = u$1 >> 24 & 0xFF; + var g$1 = u$1 >> 16 & 0xFF; + var b$1 = u$1 >> 8 & 0xFF; + var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100; + return [r$1,g$1,b$1,a]; + } + + // we used to check for css colors here + // if _input.css? and rgb = _input.css hex + // return rgb + + throw new Error(("unknown hex color: " + hex)); + }; + + var hex2rgb_1 = hex2rgb$1; + + var chroma$f = chroma_1; + var Color$y = Color_1; + var type$i = utils.type; + var input$b = input$h; + + var rgb2hex$1 = rgb2hex_1; + + Color$y.prototype.hex = function(mode) { + return rgb2hex$1(this._rgb, mode); + }; + + chroma$f.hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) )); + }; + + input$b.format.hex = hex2rgb_1; + input$b.autodetect.push({ + p: 4, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) { + return 'hex'; + } + } + }); + + var unpack$o = utils.unpack; + var TWOPI$2 = utils.TWOPI; + var min$2 = Math.min; + var sqrt$4 = Math.sqrt; + var acos = Math.acos; + + var rgb2hsi$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp + */ + var ref = unpack$o(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + r /= 255; + g /= 255; + b /= 255; + var h; + var min_ = min$2(r,g,b); + var i = (r+g+b) / 3; + var s = i > 0 ? 1 - min_/i : 0; + if (s === 0) { + h = NaN; + } else { + h = ((r-g)+(r-b)) / 2; + h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b)); + h = acos(h); + if (b > g) { + h = TWOPI$2 - h; + } + h /= TWOPI$2; + } + return [h*360,s,i]; + }; + + var rgb2hsi_1 = rgb2hsi$1; + + var unpack$n = utils.unpack; + var limit = utils.limit; + var TWOPI$1 = utils.TWOPI; + var PITHIRD = utils.PITHIRD; + var cos$4 = Math.cos; + + /* + * hue [0..360] + * saturation [0..1] + * intensity [0..1] + */ + var hsi2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp + */ + args = unpack$n(args, 'hsi'); + var h = args[0]; + var s = args[1]; + var i = args[2]; + var r,g,b; + + if (isNaN(h)) { h = 0; } + if (isNaN(s)) { s = 0; } + // normalize hue + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 360; + if (h < 1/3) { + b = (1-s)/3; + r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3; + g = 1 - (b+r); + } else if (h < 2/3) { + h -= 1/3; + r = (1-s)/3; + g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3; + b = 1 - (r+g); + } else { + h -= 2/3; + g = (1-s)/3; + b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3; + r = 1 - (g+b); + } + r = limit(i*r*3); + g = limit(i*g*3); + b = limit(i*b*3); + return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1]; + }; + + var hsi2rgb_1 = hsi2rgb; + + var unpack$m = utils.unpack; + var type$h = utils.type; + var chroma$e = chroma_1; + var Color$x = Color_1; + var input$a = input$h; + + var rgb2hsi = rgb2hsi_1; + + Color$x.prototype.hsi = function() { + return rgb2hsi(this._rgb); + }; + + chroma$e.hsi = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) )); + }; + + input$a.format.hsi = hsi2rgb_1; + + input$a.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$m(args, 'hsi'); + if (type$h(args) === 'array' && args.length === 3) { + return 'hsi'; + } + } + }); + + var unpack$l = utils.unpack; + var type$g = utils.type; + var chroma$d = chroma_1; + var Color$w = Color_1; + var input$9 = input$h; + + var rgb2hsl$1 = rgb2hsl_1; + + Color$w.prototype.hsl = function() { + return rgb2hsl$1(this._rgb); + }; + + chroma$d.hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) )); + }; + + input$9.format.hsl = hsl2rgb_1; + + input$9.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$l(args, 'hsl'); + if (type$g(args) === 'array' && args.length === 3) { + return 'hsl'; + } + } + }); + + var unpack$k = utils.unpack; + var min$1 = Math.min; + var max$1 = Math.max; + + /* + * supported arguments: + * - rgb2hsv(r,g,b) + * - rgb2hsv([r,g,b]) + * - rgb2hsv({r,g,b}) + */ + var rgb2hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$k(args, 'rgb'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + var min_ = min$1(r, g, b); + var max_ = max$1(r, g, b); + var delta = max_ - min_; + var h,s,v; + v = max_ / 255.0; + if (max_ === 0) { + h = Number.NaN; + s = 0; + } else { + s = delta / max_; + if (r === max_) { h = (g - b) / delta; } + if (g === max_) { h = 2+(b - r) / delta; } + if (b === max_) { h = 4+(r - g) / delta; } + h *= 60; + if (h < 0) { h += 360; } + } + return [h, s, v] + }; + + var rgb2hsv$1 = rgb2hsl; + + var unpack$j = utils.unpack; + var floor$2 = Math.floor; + + var hsv2rgb = function () { + var assign, assign$1, assign$2, assign$3, assign$4, assign$5; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$j(args, 'hsv'); + var h = args[0]; + var s = args[1]; + var v = args[2]; + var r,g,b; + v *= 255; + if (s === 0) { + r = g = b = v; + } else { + if (h === 360) { h = 0; } + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 60; + + var i = floor$2(h); + var f = h - i; + var p = v * (1 - s); + var q = v * (1 - s * f); + var t = v * (1 - s * (1 - f)); + + switch (i) { + case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break + case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break + case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break + case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break + case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break + case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break + } + } + return [r,g,b,args.length > 3?args[3]:1]; + }; + + var hsv2rgb_1 = hsv2rgb; + + var unpack$i = utils.unpack; + var type$f = utils.type; + var chroma$c = chroma_1; + var Color$v = Color_1; + var input$8 = input$h; + + var rgb2hsv = rgb2hsv$1; + + Color$v.prototype.hsv = function() { + return rgb2hsv(this._rgb); + }; + + chroma$c.hsv = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) )); + }; + + input$8.format.hsv = hsv2rgb_1; + + input$8.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$i(args, 'hsv'); + if (type$f(args) === 'array' && args.length === 3) { + return 'hsv'; + } + } + }); + + var labConstants = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + + // D65 standard referent + Xn: 0.950470, + Yn: 1, + Zn: 1.088830, + + t0: 0.137931034, // 4 / 29 + t1: 0.206896552, // 6 / 29 + t2: 0.12841855, // 3 * t1 * t1 + t3: 0.008856452, // t1 * t1 * t1 + }; + + var LAB_CONSTANTS$3 = labConstants; + var unpack$h = utils.unpack; + var pow$a = Math.pow; + + var rgb2lab$2 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$h(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2xyz(r,g,b); + var x = ref$1[0]; + var y = ref$1[1]; + var z = ref$1[2]; + var l = 116 * y - 16; + return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; + }; + + var rgb_xyz = function (r) { + if ((r /= 255) <= 0.04045) { return r / 12.92; } + return pow$a((r + 0.055) / 1.055, 2.4); + }; + + var xyz_lab = function (t) { + if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); } + return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0; + }; + + var rgb2xyz = function (r,g,b) { + r = rgb_xyz(r); + g = rgb_xyz(g); + b = rgb_xyz(b); + var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn); + var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn); + var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn); + return [x,y,z]; + }; + + var rgb2lab_1 = rgb2lab$2; + + var LAB_CONSTANTS$2 = labConstants; + var unpack$g = utils.unpack; + var pow$9 = Math.pow; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var lab2rgb$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$g(args, 'lab'); + var l = args[0]; + var a = args[1]; + var b = args[2]; + var x,y,z, r,g,b_; + + y = (l + 16) / 116; + x = isNaN(a) ? y : y + a / 500; + z = isNaN(b) ? y : y - b / 200; + + y = LAB_CONSTANTS$2.Yn * lab_xyz(y); + x = LAB_CONSTANTS$2.Xn * lab_xyz(x); + z = LAB_CONSTANTS$2.Zn * lab_xyz(z); + + r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB + g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z); + b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); + + return [r,g,b_,args.length > 3 ? args[3] : 1]; + }; + + var xyz_rgb = function (r) { + return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055) + }; + + var lab_xyz = function (t) { + return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0) + }; + + var lab2rgb_1 = lab2rgb$1; + + var unpack$f = utils.unpack; + var type$e = utils.type; + var chroma$b = chroma_1; + var Color$u = Color_1; + var input$7 = input$h; + + var rgb2lab$1 = rgb2lab_1; + + Color$u.prototype.lab = function() { + return rgb2lab$1(this._rgb); + }; + + chroma$b.lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) )); + }; + + input$7.format.lab = lab2rgb_1; + + input$7.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$f(args, 'lab'); + if (type$e(args) === 'array' && args.length === 3) { + return 'lab'; + } + } + }); + + var unpack$e = utils.unpack; + var RAD2DEG = utils.RAD2DEG; + var sqrt$3 = Math.sqrt; + var atan2$2 = Math.atan2; + var round$2 = Math.round; + + var lab2lch$2 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$e(args, 'lab'); + var l = ref[0]; + var a = ref[1]; + var b = ref[2]; + var c = sqrt$3(a * a + b * b); + var h = (atan2$2(b, a) * RAD2DEG + 360) % 360; + if (round$2(c*10000) === 0) { h = Number.NaN; } + return [l, c, h]; + }; + + var lab2lch_1 = lab2lch$2; + + var unpack$d = utils.unpack; + var rgb2lab = rgb2lab_1; + var lab2lch$1 = lab2lch_1; + + var rgb2lch$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$d(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2lab(r,g,b); + var l = ref$1[0]; + var a = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch$1(l,a,b_); + }; + + var rgb2lch_1 = rgb2lch$1; + + var unpack$c = utils.unpack; + var DEG2RAD = utils.DEG2RAD; + var sin$3 = Math.sin; + var cos$3 = Math.cos; + + var lch2lab$2 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel. + These formulas were invented by David Dalrymple to obtain maximum contrast without going + out of gamut if the parameters are in the range 0-1. + + A saturation multiplier was added by Gregor Aisch + */ + var ref = unpack$c(args, 'lch'); + var l = ref[0]; + var c = ref[1]; + var h = ref[2]; + if (isNaN(h)) { h = 0; } + h = h * DEG2RAD; + return [l, cos$3(h) * c, sin$3(h) * c] + }; + + var lch2lab_1 = lch2lab$2; + + var unpack$b = utils.unpack; + var lch2lab$1 = lch2lab_1; + var lab2rgb = lab2rgb_1; + + var lch2rgb$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$b(args, 'lch'); + var l = args[0]; + var c = args[1]; + var h = args[2]; + var ref = lch2lab$1 (l,c,h); + var L = ref[0]; + var a = ref[1]; + var b_ = ref[2]; + var ref$1 = lab2rgb (L,a,b_); + var r = ref$1[0]; + var g = ref$1[1]; + var b = ref$1[2]; + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var lch2rgb_1 = lch2rgb$1; + + var unpack$a = utils.unpack; + var lch2rgb = lch2rgb_1; + + var hcl2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hcl = unpack$a(args, 'hcl').reverse(); + return lch2rgb.apply(void 0, hcl); + }; + + var hcl2rgb_1 = hcl2rgb; + + var unpack$9 = utils.unpack; + var type$d = utils.type; + var chroma$a = chroma_1; + var Color$t = Color_1; + var input$6 = input$h; + + var rgb2lch = rgb2lch_1; + + Color$t.prototype.lch = function() { return rgb2lch(this._rgb); }; + Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); }; + + chroma$a.lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) )); + }; + chroma$a.hcl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) )); + }; + + input$6.format.lch = lch2rgb_1; + input$6.format.hcl = hcl2rgb_1; + + ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$9(args, m); + if (type$d(args) === 'array' && args.length === 3) { + return m; + } + } + }); }); + + /** + X11 color names + + http://www.w3.org/TR/css3-color/#svg-color + */ + + var w3cx11$1 = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflower: '#6495ed', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + laserlemon: '#ffff54', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrod: '#fafad2', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + maroon2: '#7f0000', + maroon3: '#b03060', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + purple2: '#7f007f', + purple3: '#a020f0', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32' + }; + + var w3cx11_1 = w3cx11$1; + + var Color$s = Color_1; + var input$5 = input$h; + var type$c = utils.type; + + var w3cx11 = w3cx11_1; + var hex2rgb = hex2rgb_1; + var rgb2hex = rgb2hex_1; + + Color$s.prototype.name = function() { + var hex = rgb2hex(this._rgb, 'rgb'); + for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) { + var n = list[i]; + + if (w3cx11[n] === hex) { return n.toLowerCase(); } + } + return hex; + }; + + input$5.format.named = function (name) { + name = name.toLowerCase(); + if (w3cx11[name]) { return hex2rgb(w3cx11[name]); } + throw new Error('unknown color name: '+name); + }; + + input$5.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) { + return 'named'; + } + } + }); + + var unpack$8 = utils.unpack; + + var rgb2num$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$8(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + return (r << 16) + (g << 8) + b; + }; + + var rgb2num_1 = rgb2num$1; + + var type$b = utils.type; + + var num2rgb = function (num) { + if (type$b(num) == "number" && num >= 0 && num <= 0xFFFFFF) { + var r = num >> 16; + var g = (num >> 8) & 0xFF; + var b = num & 0xFF; + return [r,g,b,1]; + } + throw new Error("unknown num color: "+num); + }; + + var num2rgb_1 = num2rgb; + + var chroma$9 = chroma_1; + var Color$r = Color_1; + var input$4 = input$h; + var type$a = utils.type; + + var rgb2num = rgb2num_1; + + Color$r.prototype.num = function() { + return rgb2num(this._rgb); + }; + + chroma$9.num = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) )); + }; + + input$4.format.num = num2rgb_1; + + input$4.autodetect.push({ + p: 5, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) { + return 'num'; + } + } + }); + + var chroma$8 = chroma_1; + var Color$q = Color_1; + var input$3 = input$h; + var unpack$7 = utils.unpack; + var type$9 = utils.type; + var round$1 = Math.round; + + Color$q.prototype.rgb = function(rnd) { + if ( rnd === void 0 ) rnd=true; + + if (rnd === false) { return this._rgb.slice(0,3); } + return this._rgb.slice(0,3).map(round$1); + }; + + Color$q.prototype.rgba = function(rnd) { + if ( rnd === void 0 ) rnd=true; + + return this._rgb.slice(0,4).map(function (v,i) { + return i<3 ? (rnd === false ? v : round$1(v)) : v; + }); + }; + + chroma$8.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) )); + }; + + input$3.format.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack$7(args, 'rgba'); + if (rgba[3] === undefined) { rgba[3] = 1; } + return rgba; + }; + + input$3.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$7(args, 'rgba'); + if (type$9(args) === 'array' && (args.length === 3 || + args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) { + return 'rgb'; + } + } + }); + + /* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + */ + + var log$1 = Math.log; + + var temperature2rgb$1 = function (kelvin) { + var temp = kelvin / 100; + var r,g,b; + if (temp < 66) { + r = 255; + g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g); + b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b); + } else { + r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r); + g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g); + b = 255; + } + return [r,g,b,1]; + }; + + var temperature2rgb_1 = temperature2rgb$1; + + /* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + **/ + + var temperature2rgb = temperature2rgb_1; + var unpack$6 = utils.unpack; + var round = Math.round; + + var rgb2temperature$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgb = unpack$6(args, 'rgb'); + var r = rgb[0], b = rgb[2]; + var minTemp = 1000; + var maxTemp = 40000; + var eps = 0.4; + var temp; + while (maxTemp - minTemp > eps) { + temp = (maxTemp + minTemp) * 0.5; + var rgb$1 = temperature2rgb(temp); + if ((rgb$1[2] / rgb$1[0]) >= (b / r)) { + maxTemp = temp; + } else { + minTemp = temp; + } + } + return round(temp); + }; + + var rgb2temperature_1 = rgb2temperature$1; + + var chroma$7 = chroma_1; + var Color$p = Color_1; + var input$2 = input$h; + + var rgb2temperature = rgb2temperature_1; + + Color$p.prototype.temp = + Color$p.prototype.kelvin = + Color$p.prototype.temperature = function() { + return rgb2temperature(this._rgb); + }; + + chroma$7.temp = + chroma$7.kelvin = + chroma$7.temperature = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) )); + }; + + input$2.format.temp = + input$2.format.kelvin = + input$2.format.temperature = temperature2rgb_1; + + var unpack$5 = utils.unpack; + var cbrt = Math.cbrt; + var pow$8 = Math.pow; + var sign$1 = Math.sign; + + var rgb2oklab$2 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + // OKLab color space implementation taken from + // https://bottosson.github.io/posts/oklab/ + var ref = unpack$5(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)]; + var lr = ref$1[0]; + var lg = ref$1[1]; + var lb = ref$1[2]; + var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); + var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); + var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); + + return [ + 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, + 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, + 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s + ]; + }; + + var rgb2oklab_1 = rgb2oklab$2; + + function rgb2lrgb(c) { + var abs = Math.abs(c); + if (abs < 0.04045) { + return c / 12.92; + } + return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4); + } + + var unpack$4 = utils.unpack; + var pow$7 = Math.pow; + var sign = Math.sign; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var oklab2rgb$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$4(args, 'lab'); + var L = args[0]; + var a = args[1]; + var b = args[2]; + + var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3); + var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3); + var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3); + + return [ + 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), + 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), + 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), + args.length > 3 ? args[3] : 1 + ]; + }; + + var oklab2rgb_1 = oklab2rgb$1; + + function lrgb2rgb(c) { + var abs = Math.abs(c); + if (abs > 0.0031308) { + return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055); + } + return c * 12.92; + } + + var unpack$3 = utils.unpack; + var type$8 = utils.type; + var chroma$6 = chroma_1; + var Color$o = Color_1; + var input$1 = input$h; + + var rgb2oklab$1 = rgb2oklab_1; + + Color$o.prototype.oklab = function () { + return rgb2oklab$1(this._rgb); + }; + + chroma$6.oklab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) )); + }; + + input$1.format.oklab = oklab2rgb_1; + + input$1.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$3(args, 'oklab'); + if (type$8(args) === 'array' && args.length === 3) { + return 'oklab'; + } + } + }); + + var unpack$2 = utils.unpack; + var rgb2oklab = rgb2oklab_1; + var lab2lch = lab2lch_1; + + var rgb2oklch$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$2(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2oklab(r, g, b); + var l = ref$1[0]; + var a = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch(l, a, b_); + }; + + var rgb2oklch_1 = rgb2oklch$1; + + var unpack$1 = utils.unpack; + var lch2lab = lch2lab_1; + var oklab2rgb = oklab2rgb_1; + + var oklch2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$1(args, 'lch'); + var l = args[0]; + var c = args[1]; + var h = args[2]; + var ref = lch2lab(l, c, h); + var L = ref[0]; + var a = ref[1]; + var b_ = ref[2]; + var ref$1 = oklab2rgb(L, a, b_); + var r = ref$1[0]; + var g = ref$1[1]; + var b = ref$1[2]; + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var oklch2rgb_1 = oklch2rgb; + + var unpack = utils.unpack; + var type$7 = utils.type; + var chroma$5 = chroma_1; + var Color$n = Color_1; + var input = input$h; + + var rgb2oklch = rgb2oklch_1; + + Color$n.prototype.oklch = function () { + return rgb2oklch(this._rgb); + }; + + chroma$5.oklch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) )); + }; + + input.format.oklch = oklch2rgb_1; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'oklch'); + if (type$7(args) === 'array' && args.length === 3) { + return 'oklch'; + } + } + }); + + var Color$m = Color_1; + var type$6 = utils.type; + + Color$m.prototype.alpha = function(a, mutate) { + if ( mutate === void 0 ) mutate=false; + + if (a !== undefined && type$6(a) === 'number') { + if (mutate) { + this._rgb[3] = a; + return this; + } + return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); + } + return this._rgb[3]; + }; + + var Color$l = Color_1; + + Color$l.prototype.clipped = function() { + return this._rgb._clipped || false; + }; + + var Color$k = Color_1; + var LAB_CONSTANTS$1 = labConstants; + + Color$k.prototype.darken = function(amount) { + if ( amount === void 0 ) amount=1; + + var me = this; + var lab = me.lab(); + lab[0] -= LAB_CONSTANTS$1.Kn * amount; + return new Color$k(lab, 'lab').alpha(me.alpha(), true); + }; + + Color$k.prototype.brighten = function(amount) { + if ( amount === void 0 ) amount=1; + + return this.darken(-amount); + }; + + Color$k.prototype.darker = Color$k.prototype.darken; + Color$k.prototype.brighter = Color$k.prototype.brighten; + + var Color$j = Color_1; + + Color$j.prototype.get = function (mc) { + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { return src[i]; } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var Color$i = Color_1; + var type$5 = utils.type; + var pow$6 = Math.pow; + + var EPS = 1e-7; + var MAX_ITER = 20; + + Color$i.prototype.luminance = function(lum) { + if (lum !== undefined && type$5(lum) === 'number') { + if (lum === 0) { + // return pure black + return new Color$i([0,0,0,this._rgb[3]], 'rgb'); + } + if (lum === 1) { + // return pure white + return new Color$i([255,255,255,this._rgb[3]], 'rgb'); + } + // compute new color using... + var cur_lum = this.luminance(); + var mode = 'rgb'; + var max_iter = MAX_ITER; + + var test = function (low, high) { + var mid = low.interpolate(high, 0.5, mode); + var lm = mid.luminance(); + if (Math.abs(lum - lm) < EPS || !max_iter--) { + // close enough + return mid; + } + return lm > lum ? test(low, mid) : test(mid, high); + }; + + var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb(); + return new Color$i(rgb.concat( [this._rgb[3]])); + } + return rgb2luminance.apply(void 0, (this._rgb).slice(0,3)); + }; + + + var rgb2luminance = function (r,g,b) { + // relative luminance + // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + r = luminance_x(r); + g = luminance_x(g); + b = luminance_x(b); + return 0.2126 * r + 0.7152 * g + 0.0722 * b; + }; + + var luminance_x = function (x) { + x /= 255; + return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4); + }; + + var interpolator$1 = {}; + + var Color$h = Color_1; + var type$4 = utils.type; + var interpolator = interpolator$1; + + var mix$1 = function (col1, col2, f) { + if ( f === void 0 ) f=0.5; + var rest = [], len = arguments.length - 3; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; + + var mode = rest[0] || 'lrgb'; + if (!interpolator[mode] && !rest.length) { + // fall back to the first supported mode + mode = Object.keys(interpolator)[0]; + } + if (!interpolator[mode]) { + throw new Error(("interpolation mode " + mode + " is not defined")); + } + if (type$4(col1) !== 'object') { col1 = new Color$h(col1); } + if (type$4(col2) !== 'object') { col2 = new Color$h(col2); } + return interpolator[mode](col1, col2, f) + .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha())); + }; + + var Color$g = Color_1; + var mix = mix$1; + + Color$g.prototype.mix = + Color$g.prototype.interpolate = function(col2, f) { + if ( f === void 0 ) f=0.5; + var rest = [], len = arguments.length - 2; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; + + return mix.apply(void 0, [ this, col2, f ].concat( rest )); + }; + + var Color$f = Color_1; + + Color$f.prototype.premultiply = function(mutate) { + if ( mutate === void 0 ) mutate=false; + + var rgb = this._rgb; + var a = rgb[3]; + if (mutate) { + this._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a]; + return this; + } else { + return new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb'); + } + }; + + var Color$e = Color_1; + var LAB_CONSTANTS = labConstants; + + Color$e.prototype.saturate = function(amount) { + if ( amount === void 0 ) amount=1; + + var me = this; + var lch = me.lch(); + lch[1] += LAB_CONSTANTS.Kn * amount; + if (lch[1] < 0) { lch[1] = 0; } + return new Color$e(lch, 'lch').alpha(me.alpha(), true); + }; + + Color$e.prototype.desaturate = function(amount) { + if ( amount === void 0 ) amount=1; + + return this.saturate(-amount); + }; + + var Color$d = Color_1; + var type$3 = utils.type; + + Color$d.prototype.set = function (mc, value, mutate) { + if ( mutate === void 0 ) mutate = false; + + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { + if (type$3(value) == 'string') { + switch (value.charAt(0)) { + case '+': + src[i] += +value; + break; + case '-': + src[i] += +value; + break; + case '*': + src[i] *= +value.substr(1); + break; + case '/': + src[i] /= +value.substr(1); + break; + default: + src[i] = +value; + } + } else if (type$3(value) === 'number') { + src[i] = value; + } else { + throw new Error("unsupported value for Color.set"); + } + var out = new Color$d(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var Color$c = Color_1; + + var rgb = function (col1, col2, f) { + var xyz0 = col1._rgb; + var xyz1 = col2._rgb; + return new Color$c( + xyz0[0] + f * (xyz1[0]-xyz0[0]), + xyz0[1] + f * (xyz1[1]-xyz0[1]), + xyz0[2] + f * (xyz1[2]-xyz0[2]), + 'rgb' + ) + }; + + // register interpolator + interpolator$1.rgb = rgb; + + var Color$b = Color_1; + var sqrt$2 = Math.sqrt; + var pow$5 = Math.pow; + + var lrgb = function (col1, col2, f) { + var ref = col1._rgb; + var x1 = ref[0]; + var y1 = ref[1]; + var z1 = ref[2]; + var ref$1 = col2._rgb; + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + return new Color$b( + sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f), + sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f), + sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f), + 'rgb' + ) + }; + + // register interpolator + interpolator$1.lrgb = lrgb; + + var Color$a = Color_1; + + var lab = function (col1, col2, f) { + var xyz0 = col1.lab(); + var xyz1 = col2.lab(); + return new Color$a( + xyz0[0] + f * (xyz1[0]-xyz0[0]), + xyz0[1] + f * (xyz1[1]-xyz0[1]), + xyz0[2] + f * (xyz1[2]-xyz0[2]), + 'lab' + ) + }; + + // register interpolator + interpolator$1.lab = lab; + + var Color$9 = Color_1; + + var _hsx = function (col1, col2, f, m) { + var assign, assign$1; + + var xyz0, xyz1; + if (m === 'hsl') { + xyz0 = col1.hsl(); + xyz1 = col2.hsl(); + } else if (m === 'hsv') { + xyz0 = col1.hsv(); + xyz1 = col2.hsv(); + } else if (m === 'hcg') { + xyz0 = col1.hcg(); + xyz1 = col2.hcg(); + } else if (m === 'hsi') { + xyz0 = col1.hsi(); + xyz1 = col2.hsi(); + } else if (m === 'lch' || m === 'hcl') { + m = 'hcl'; + xyz0 = col1.hcl(); + xyz1 = col2.hcl(); + } else if (m === 'oklch') { + xyz0 = col1.oklch().reverse(); + xyz1 = col2.oklch().reverse(); + } + + var hue0, hue1, sat0, sat1, lbv0, lbv1; + if (m.substr(0, 1) === 'h' || m === 'oklch') { + (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]); + (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]); + } + + var sat, hue, lbv, dh; + + if (!isNaN(hue0) && !isNaN(hue1)) { + // both colors have hue + if (hue1 > hue0 && hue1 - hue0 > 180) { + dh = hue1 - (hue0 + 360); + } else if (hue1 < hue0 && hue0 - hue1 > 180) { + dh = hue1 + 360 - hue0; + } else { + dh = hue1 - hue0; + } + hue = hue0 + f * dh; + } else if (!isNaN(hue0)) { + hue = hue0; + if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; } + } else if (!isNaN(hue1)) { + hue = hue1; + if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; } + } else { + hue = Number.NaN; + } + + if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); } + lbv = lbv0 + f * (lbv1 - lbv0); + return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m); + }; + + var interpolate_hsx$5 = _hsx; + + var lch = function (col1, col2, f) { + return interpolate_hsx$5(col1, col2, f, 'lch'); + }; + + // register interpolator + interpolator$1.lch = lch; + interpolator$1.hcl = lch; + + var Color$8 = Color_1; + + var num = function (col1, col2, f) { + var c1 = col1.num(); + var c2 = col2.num(); + return new Color$8(c1 + f * (c2-c1), 'num') + }; + + // register interpolator + interpolator$1.num = num; + + var interpolate_hsx$4 = _hsx; + + var hcg = function (col1, col2, f) { + return interpolate_hsx$4(col1, col2, f, 'hcg'); + }; + + // register interpolator + interpolator$1.hcg = hcg; + + var interpolate_hsx$3 = _hsx; + + var hsi = function (col1, col2, f) { + return interpolate_hsx$3(col1, col2, f, 'hsi'); + }; + + // register interpolator + interpolator$1.hsi = hsi; + + var interpolate_hsx$2 = _hsx; + + var hsl = function (col1, col2, f) { + return interpolate_hsx$2(col1, col2, f, 'hsl'); + }; + + // register interpolator + interpolator$1.hsl = hsl; + + var interpolate_hsx$1 = _hsx; + + var hsv = function (col1, col2, f) { + return interpolate_hsx$1(col1, col2, f, 'hsv'); + }; + + // register interpolator + interpolator$1.hsv = hsv; + + var Color$7 = Color_1; + + var oklab = function (col1, col2, f) { + var xyz0 = col1.oklab(); + var xyz1 = col2.oklab(); + return new Color$7( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'oklab' + ); + }; + + // register interpolator + interpolator$1.oklab = oklab; + + var interpolate_hsx = _hsx; + + var oklch = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'oklch'); + }; + + // register interpolator + interpolator$1.oklch = oklch; + + var Color$6 = Color_1; + var clip_rgb$1 = utils.clip_rgb; + var pow$4 = Math.pow; + var sqrt$1 = Math.sqrt; + var PI$1 = Math.PI; + var cos$2 = Math.cos; + var sin$2 = Math.sin; + var atan2$1 = Math.atan2; + + var average = function (colors, mode, weights) { + if ( mode === void 0 ) mode='lrgb'; + if ( weights === void 0 ) weights=null; + + var l = colors.length; + if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); } + // normalize weights + var k = l / weights.reduce(function(a, b) { return a + b; }); + weights.forEach(function (w,i) { weights[i] *= k; }); + // convert colors to Color objects + colors = colors.map(function (c) { return new Color$6(c); }); + if (mode === 'lrgb') { + return _average_lrgb(colors, weights) + } + var first = colors.shift(); + var xyz = first.get(mode); + var cnt = []; + var dx = 0; + var dy = 0; + // initial color + for (var i=0; i= 360) { A$1 -= 360; } + xyz[i$1] = A$1; + } else { + xyz[i$1] = xyz[i$1]/cnt[i$1]; + } + } + alpha /= l; + return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true); + }; + + + var _average_lrgb = function (colors, weights) { + var l = colors.length; + var xyz = [0,0,0,0]; + for (var i=0; i < colors.length; i++) { + var col = colors[i]; + var f = weights[i] / l; + var rgb = col._rgb; + xyz[0] += pow$4(rgb[0],2) * f; + xyz[1] += pow$4(rgb[1],2) * f; + xyz[2] += pow$4(rgb[2],2) * f; + xyz[3] += rgb[3] * f; + } + xyz[0] = sqrt$1(xyz[0]); + xyz[1] = sqrt$1(xyz[1]); + xyz[2] = sqrt$1(xyz[2]); + if (xyz[3] > 0.9999999) { xyz[3] = 1; } + return new Color$6(clip_rgb$1(xyz)); + }; + + // minimal multi-purpose interface + + // @requires utils color analyze + + var chroma$4 = chroma_1; + var type$2 = utils.type; + + var pow$3 = Math.pow; + + var scale$2 = function(colors) { + + // constructor + var _mode = 'rgb'; + var _nacol = chroma$4('#ccc'); + var _spread = 0; + // const _fixed = false; + var _domain = [0, 1]; + var _pos = []; + var _padding = [0,0]; + var _classes = false; + var _colors = []; + var _out = false; + var _min = 0; + var _max = 1; + var _correctLightness = false; + var _colorCache = {}; + var _useCache = true; + var _gamma = 1; + + // private methods + + var setColors = function(colors) { + colors = colors || ['#fff', '#000']; + if (colors && type$2(colors) === 'string' && chroma$4.brewer && + chroma$4.brewer[colors.toLowerCase()]) { + colors = chroma$4.brewer[colors.toLowerCase()]; + } + if (type$2(colors) === 'array') { + // handle single color + if (colors.length === 1) { + colors = [colors[0], colors[0]]; + } + // make a copy of the colors + colors = colors.slice(0); + // convert to chroma classes + for (var c=0; c= _classes[i]) { + i++; + } + return i-1; + } + return 0; + }; + + var tMapLightness = function (t) { return t; }; + var tMapDomain = function (t) { return t; }; + + // const classifyValue = function(value) { + // let val = value; + // if (_classes.length > 2) { + // const n = _classes.length-1; + // const i = getClass(value); + // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class + // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class + // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min)); + // } + // return val; + // }; + + var getColor = function(val, bypassMap) { + var col, t; + if (bypassMap == null) { bypassMap = false; } + if (isNaN(val) || (val === null)) { return _nacol; } + if (!bypassMap) { + if (_classes && (_classes.length > 2)) { + // find the class + var c = getClass(val); + t = c / (_classes.length-2); + } else if (_max !== _min) { + // just interpolate between min/max + t = (val - _min) / (_max - _min); + } else { + t = 1; + } + } else { + t = val; + } + + // domain map + t = tMapDomain(t); + + if (!bypassMap) { + t = tMapLightness(t); // lightness correction + } + + if (_gamma !== 1) { t = pow$3(t, _gamma); } + + t = _padding[0] + (t * (1 - _padding[0] - _padding[1])); + + t = Math.min(1, Math.max(0, t)); + + var k = Math.floor(t * 10000); + + if (_useCache && _colorCache[k]) { + col = _colorCache[k]; + } else { + if (type$2(_colors) === 'array') { + //for i in [0.._pos.length-1] + for (var i=0; i<_pos.length; i++) { + var p = _pos[i]; + if (t <= p) { + col = _colors[i]; + break; + } + if ((t >= p) && (i === (_pos.length-1))) { + col = _colors[i]; + break; + } + if (t > p && t < _pos[i+1]) { + t = (t-p)/(_pos[i+1]-p); + col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode); + break; + } + } + } else if (type$2(_colors) === 'function') { + col = _colors(t); + } + if (_useCache) { _colorCache[k] = col; } + } + return col; + }; + + var resetCache = function () { return _colorCache = {}; }; + + setColors(colors); + + // public interface + + var f = function(v) { + var c = chroma$4(getColor(v)); + if (_out && c[_out]) { return c[_out](); } else { return c; } + }; + + f.classes = function(classes) { + if (classes != null) { + if (type$2(classes) === 'array') { + _classes = classes; + _domain = [classes[0], classes[classes.length-1]]; + } else { + var d = chroma$4.analyze(_domain); + if (classes === 0) { + _classes = [d.min, d.max]; + } else { + _classes = chroma$4.limits(d, 'e', classes); + } + } + return f; + } + return _classes; + }; + + + f.domain = function(domain) { + if (!arguments.length) { + return _domain; + } + _min = domain[0]; + _max = domain[domain.length-1]; + _pos = []; + var k = _colors.length; + if ((domain.length === k) && (_min !== _max)) { + // update positions + for (var i = 0, list = Array.from(domain); i < list.length; i += 1) { + var d = list[i]; + + _pos.push((d-_min) / (_max-_min)); + } + } else { + for (var c=0; c 2) { + // set domain map + var tOut = domain.map(function (d,i) { return i/(domain.length-1); }); + var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); }); + if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) { + tMapDomain = function (t) { + if (t <= 0 || t >= 1) { return t; } + var i = 0; + while (t >= tBreaks[i+1]) { i++; } + var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]); + var out = tOut[i] + f * (tOut[i+1] - tOut[i]); + return out; + }; + } + + } + } + _domain = [_min, _max]; + return f; + }; + + f.mode = function(_m) { + if (!arguments.length) { + return _mode; + } + _mode = _m; + resetCache(); + return f; + }; + + f.range = function(colors, _pos) { + setColors(colors); + return f; + }; + + f.out = function(_o) { + _out = _o; + return f; + }; + + f.spread = function(val) { + if (!arguments.length) { + return _spread; + } + _spread = val; + return f; + }; + + f.correctLightness = function(v) { + if (v == null) { v = true; } + _correctLightness = v; + resetCache(); + if (_correctLightness) { + tMapLightness = function(t) { + var L0 = getColor(0, true).lab()[0]; + var L1 = getColor(1, true).lab()[0]; + var pol = L0 > L1; + var L_actual = getColor(t, true).lab()[0]; + var L_ideal = L0 + ((L1 - L0) * t); + var L_diff = L_actual - L_ideal; + var t0 = 0; + var t1 = 1; + var max_iter = 20; + while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) { + (function() { + if (pol) { L_diff *= -1; } + if (L_diff < 0) { + t0 = t; + t += (t1 - t) * 0.5; + } else { + t1 = t; + t += (t0 - t) * 0.5; + } + L_actual = getColor(t, true).lab()[0]; + return L_diff = L_actual - L_ideal; + })(); + } + return t; + }; + } else { + tMapLightness = function (t) { return t; }; + } + return f; + }; + + f.padding = function(p) { + if (p != null) { + if (type$2(p) === 'number') { + p = [p,p]; + } + _padding = p; + return f; + } else { + return _padding; + } + }; + + f.colors = function(numColors, out) { + // If no arguments are given, return the original colors that were provided + if (arguments.length < 2) { out = 'hex'; } + var result = []; + + if (arguments.length === 0) { + result = _colors.slice(0); + + } else if (numColors === 1) { + result = [f(0.5)]; + + } else if (numColors > 1) { + var dm = _domain[0]; + var dd = _domain[1] - dm; + result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); }); + + } else { // returns all colors based on the defined classes + colors = []; + var samples = []; + if (_classes && (_classes.length > 2)) { + for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + samples.push((_classes[i-1]+_classes[i])*0.5); + } + } else { + samples = _domain; + } + result = samples.map(function (v) { return f(v); }); + } + + if (chroma$4[out]) { + result = result.map(function (c) { return c[out](); }); + } + return result; + }; + + f.cache = function(c) { + if (c != null) { + _useCache = c; + return f; + } else { + return _useCache; + } + }; + + f.gamma = function(g) { + if (g != null) { + _gamma = g; + return f; + } else { + return _gamma; + } + }; + + f.nodata = function(d) { + if (d != null) { + _nacol = chroma$4(d); + return f; + } else { + return _nacol; + } + }; + + return f; + }; + + function __range__(left, right, inclusive) { + var range = []; + var ascending = left < right; + var end = !inclusive ? right : ascending ? right + 1 : right - 1; + for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { + range.push(i); + } + return range; + } + + // + // interpolates between a set of colors uzing a bezier spline + // + + // @requires utils lab + var Color$5 = Color_1; + + var scale$1 = scale$2; + + // nth row of the pascal triangle + var binom_row = function(n) { + var row = [1, 1]; + for (var i = 1; i < n; i++) { + var newrow = [1]; + for (var j = 1; j <= row.length; j++) { + newrow[j] = (row[j] || 0) + row[j - 1]; + } + row = newrow; + } + return row; + }; + + var bezier = function(colors) { + var assign, assign$1, assign$2; + + var I, lab0, lab1, lab2; + colors = colors.map(function (c) { return new Color$5(c); }); + if (colors.length === 2) { + // linear interpolation + (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]); + I = function(t) { + var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); })); + return new Color$5(lab, 'lab'); + }; + } else if (colors.length === 3) { + // quadratic bezier interpolation + (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]); + I = function(t) { + var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); })); + return new Color$5(lab, 'lab'); + }; + } else if (colors.length === 4) { + // cubic bezier interpolation + var lab3; + (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]); + I = function(t) { + var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); })); + return new Color$5(lab, 'lab'); + }; + } else if (colors.length >= 5) { + // general case (degree n bezier) + var labs, row, n; + labs = colors.map(function (c) { return c.lab(); }); + n = colors.length - 1; + row = binom_row(n); + I = function (t) { + var u = 1 - t; + var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); })); + return new Color$5(lab, 'lab'); + }; + } else { + throw new RangeError("No point in running bezier with only one color.") + } + return I; + }; + + var bezier_1 = function (colors) { + var f = bezier(colors); + f.scale = function () { return scale$1(f); }; + return f; + }; + + /* + * interpolates between a set of colors uzing a bezier spline + * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ + */ + + var chroma$3 = chroma_1; + + var blend = function (bottom, top, mode) { + if (!blend[mode]) { + throw new Error('unknown blend mode ' + mode); + } + return blend[mode](bottom, top); + }; + + var blend_f = function (f) { return function (bottom,top) { + var c0 = chroma$3(top).rgb(); + var c1 = chroma$3(bottom).rgb(); + return chroma$3.rgb(f(c0, c1)); + }; }; + + var each = function (f) { return function (c0, c1) { + var out = []; + out[0] = f(c0[0], c1[0]); + out[1] = f(c0[1], c1[1]); + out[2] = f(c0[2], c1[2]); + return out; + }; }; + + var normal = function (a) { return a; }; + var multiply = function (a,b) { return a * b / 255; }; + var darken = function (a,b) { return a > b ? b : a; }; + var lighten = function (a,b) { return a > b ? a : b; }; + var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); }; + var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); }; + var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); }; + var dodge = function (a,b) { + if (a === 255) { return 255; } + a = 255 * (b / 255) / (1 - a / 255); + return a > 255 ? 255 : a + }; + + // # add = (a,b) -> + // # if (a + b > 255) then 255 else a + b + + blend.normal = blend_f(each(normal)); + blend.multiply = blend_f(each(multiply)); + blend.screen = blend_f(each(screen)); + blend.overlay = blend_f(each(overlay)); + blend.darken = blend_f(each(darken)); + blend.lighten = blend_f(each(lighten)); + blend.dodge = blend_f(each(dodge)); + blend.burn = blend_f(each(burn)); + // blend.add = blend_f(each(add)); + + var blend_1 = blend; + + // cubehelix interpolation + // based on D.A. Green "A colour scheme for the display of astronomical intensity images" + // http://astron-soc.in/bulletin/11June/289392011.pdf + + var type$1 = utils.type; + var clip_rgb = utils.clip_rgb; + var TWOPI = utils.TWOPI; + var pow$2 = Math.pow; + var sin$1 = Math.sin; + var cos$1 = Math.cos; + var chroma$2 = chroma_1; + + var cubehelix = function(start, rotations, hue, gamma, lightness) { + if ( start === void 0 ) start=300; + if ( rotations === void 0 ) rotations=-1.5; + if ( hue === void 0 ) hue=1; + if ( gamma === void 0 ) gamma=1; + if ( lightness === void 0 ) lightness=[0,1]; + + var dh = 0, dl; + if (type$1(lightness) === 'array') { + dl = lightness[1] - lightness[0]; + } else { + dl = 0; + lightness = [lightness, lightness]; + } + + var f = function(fract) { + var a = TWOPI * (((start+120)/360) + (rotations * fract)); + var l = pow$2(lightness[0] + (dl * fract), gamma); + var h = dh !== 0 ? hue[0] + (fract * dh) : hue; + var amp = (h * l * (1-l)) / 2; + var cos_a = cos$1(a); + var sin_a = sin$1(a); + var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a))); + var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a))); + var b = l + (amp * (+1.97294 * cos_a)); + return chroma$2(clip_rgb([r*255,g*255,b*255,1])); + }; + + f.start = function(s) { + if ((s == null)) { return start; } + start = s; + return f; + }; + + f.rotations = function(r) { + if ((r == null)) { return rotations; } + rotations = r; + return f; + }; + + f.gamma = function(g) { + if ((g == null)) { return gamma; } + gamma = g; + return f; + }; + + f.hue = function(h) { + if ((h == null)) { return hue; } + hue = h; + if (type$1(hue) === 'array') { + dh = hue[1] - hue[0]; + if (dh === 0) { hue = hue[1]; } + } else { + dh = 0; + } + return f; + }; + + f.lightness = function(h) { + if ((h == null)) { return lightness; } + if (type$1(h) === 'array') { + lightness = h; + dl = h[1] - h[0]; + } else { + lightness = [h,h]; + dl = 0; + } + return f; + }; + + f.scale = function () { return chroma$2.scale(f); }; + + f.hue(hue); + + return f; + }; + + var Color$4 = Color_1; + var digits = '0123456789abcdef'; + + var floor$1 = Math.floor; + var random = Math.random; + + var random_1 = function () { + var code = '#'; + for (var i=0; i<6; i++) { + code += digits.charAt(floor$1(random() * 16)); + } + return new Color$4(code, 'hex'); + }; + + var type = type$p; + var log = Math.log; + var pow$1 = Math.pow; + var floor = Math.floor; + var abs$1 = Math.abs; + + + var analyze = function (data, key) { + if ( key === void 0 ) key=null; + + var r = { + min: Number.MAX_VALUE, + max: Number.MAX_VALUE*-1, + sum: 0, + values: [], + count: 0 + }; + if (type(data) === 'object') { + data = Object.values(data); + } + data.forEach(function (val) { + if (key && type(val) === 'object') { val = val[key]; } + if (val !== undefined && val !== null && !isNaN(val)) { + r.values.push(val); + r.sum += val; + if (val < r.min) { r.min = val; } + if (val > r.max) { r.max = val; } + r.count += 1; + } + }); + + r.domain = [r.min, r.max]; + + r.limits = function (mode, num) { return limits(r, mode, num); }; + + return r; + }; + + + var limits = function (data, mode, num) { + if ( mode === void 0 ) mode='equal'; + if ( num === void 0 ) num=7; + + if (type(data) == 'array') { + data = analyze(data); + } + var min = data.min; + var max = data.max; + var values = data.values.sort(function (a,b) { return a-b; }); + + if (num === 1) { return [min,max]; } + + var limits = []; + + if (mode.substr(0,1) === 'c') { // continuous + limits.push(min); + limits.push(max); + } + + if (mode.substr(0,1) === 'e') { // equal interval + limits.push(min); + for (var i=1; i 0'); + } + var min_log = Math.LOG10E * log(min); + var max_log = Math.LOG10E * log(max); + limits.push(min); + for (var i$1=1; i$1 pb + var pr = p - pb; + limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr)); + } + } + limits.push(max); + + } + + else if (mode.substr(0,1) === 'k') { // k-means clustering + /* + implementation based on + http://code.google.com/p/figue/source/browse/trunk/figue.js#336 + simplified for 1-d input values + */ + var cluster; + var n = values.length; + var assignments = new Array(n); + var clusterSizes = new Array(num); + var repeat = true; + var nb_iters = 0; + var centroids = null; + + // get seed values + centroids = []; + centroids.push(min); + for (var i$3=1; i$3 200) { + repeat = false; + } + } + + // finished k-means clustering + // the next part is borrowed from gabrielflor.it + var kClusters = {}; + for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); + }; + + var Color$2 = Color_1; + var sqrt = Math.sqrt; + var pow = Math.pow; + var min = Math.min; + var max = Math.max; + var atan2 = Math.atan2; + var abs = Math.abs; + var cos = Math.cos; + var sin = Math.sin; + var exp = Math.exp; + var PI = Math.PI; + + var deltaE = function(a, b, Kl, Kc, Kh) { + if ( Kl === void 0 ) Kl=1; + if ( Kc === void 0 ) Kc=1; + if ( Kh === void 0 ) Kh=1; + + // Delta E (CIE 2000) + // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html + var rad2deg = function(rad) { + return 360 * rad / (2 * PI); + }; + var deg2rad = function(deg) { + return (2 * PI * deg) / 360; + }; + a = new Color$2(a); + b = new Color$2(b); + var ref = Array.from(a.lab()); + var L1 = ref[0]; + var a1 = ref[1]; + var b1 = ref[2]; + var ref$1 = Array.from(b.lab()); + var L2 = ref$1[0]; + var a2 = ref$1[1]; + var b2 = ref$1[2]; + var avgL = (L1 + L2)/2; + var C1 = sqrt(pow(a1, 2) + pow(b1, 2)); + var C2 = sqrt(pow(a2, 2) + pow(b2, 2)); + var avgC = (C1 + C2)/2; + var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7)))); + var a1p = a1*(1+G); + var a2p = a2*(1+G); + var C1p = sqrt(pow(a1p, 2) + pow(b1, 2)); + var C2p = sqrt(pow(a2p, 2) + pow(b2, 2)); + var avgCp = (C1p + C2p)/2; + var arctan1 = rad2deg(atan2(b1, a1p)); + var arctan2 = rad2deg(atan2(b2, a2p)); + var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360; + var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360; + var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2; + var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63)); + var deltaHp = h2p - h1p; + deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360; + deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2); + var deltaL = L2 - L1; + var deltaCp = C2p - C1p; + var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2)); + var sc = 1 + 0.045*avgCp; + var sh = 1 + 0.015*avgCp*T; + var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2)); + var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7))); + var Rt = -Rc*sin(2*deg2rad(deltaTheta)); + var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh))); + return max(0, min(100, result)); + }; + + var Color$1 = Color_1; + + // simple Euclidean distance + var distance = function(a, b, mode) { + if ( mode === void 0 ) mode='lab'; + + // Delta E (CIE 1976) + // see http://www.brucelindbloom.com/index.html?Equations.html + a = new Color$1(a); + b = new Color$1(b); + var l1 = a.get(mode); + var l2 = b.get(mode); + var sum_sq = 0; + for (var i in l1) { + var d = (l1[i] || 0) - (l2[i] || 0); + sum_sq += d*d; + } + return Math.sqrt(sum_sq); + }; + + var Color = Color_1; + + var valid = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + new (Function.prototype.bind.apply( Color, [ null ].concat( args) )); + return true; + } catch (e) { + return false; + } + }; + + // some pre-defined color scales: + var chroma$1 = chroma_1; + + var scale = scale$2; + + var scales = { + cool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) }, + hot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') } + }; + + /** + ColorBrewer colors for chroma.js + + Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The + Pennsylvania State University. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + */ + + var colorbrewer = { + // sequential + OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'], + PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'], + BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'], + Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'], + BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'], + YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'], + YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'], + Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'], + RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'], + Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'], + YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'], + Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'], + GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'], + Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'], + YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'], + PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'], + Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'], + PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'], + Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'], + + // diverging + + Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'], + RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'], + RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'], + PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'], + PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'], + RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'], + BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'], + RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'], + PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'], + + // qualitative + + Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'], + Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'], + Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'], + Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'], + Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'], + Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'], + Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'], + Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'], + }; + + // add lowercase aliases for case-insensitive matches + for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) { + var key = list[i]; + + colorbrewer[key.toLowerCase()] = colorbrewer[key]; + } + + var colorbrewer_1 = colorbrewer; + + var chroma = chroma_1; + + // feel free to comment out anything to rollup + // a smaller chroma.js built + + // io --> convert colors + + + + + + + + + + + + + + + + + + // operators --> modify existing Colors + + + + + + + + + + + // interpolators + + + + + + + + + + + + + // generators -- > create new colors + chroma.average = average; + chroma.bezier = bezier_1; + chroma.blend = blend_1; + chroma.cubehelix = cubehelix; + chroma.mix = chroma.interpolate = mix$1; + chroma.random = random_1; + chroma.scale = scale$2; + + // other utility methods + chroma.analyze = analyze_1.analyze; + chroma.contrast = contrast; + chroma.deltaE = deltaE; + chroma.distance = distance; + chroma.limits = analyze_1.limits; + chroma.valid = valid; + + // scale + chroma.scales = scales; + + // colors + chroma.colors = w3cx11_1; + chroma.brewer = colorbrewer_1; + + var chroma_js = chroma; + + return chroma_js; + +})); diff --git a/node_modules/chroma-js/chroma.min.js b/node_modules/chroma-js/chroma.min.js new file mode 100644 index 0000000..bff9550 --- /dev/null +++ b/node_modules/chroma-js/chroma.min.js @@ -0,0 +1,58 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,(function(){"use strict";for(var r=function(r,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),rn?n:r},e=r,n={},t=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];t255)&&(r._clipped=!0),r[n]=e(r[n],0,255)):3===n&&(r[n]=e(r[n],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==u(r[0])&&e?e.split("").filter((function(e){return void 0!==r[0][e]})).map((function(e){return r[0][e]})):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==c(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},h={format:{},autodetect:[]},s=l.last,d=l.clip_rgb,b=l.type,p=h,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=this;if("object"===b(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=s(r),a=!1;if(!t){a=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(r,e){return e.p-r.p})),p.sorted=!0);for(var f=0,o=p.autodetect;f4?r[4]:1;return 1===f?[0,0,0,o]:[n>=1?0:255*(1-n)*(1-f),t>=1?0:255*(1-t)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},x=y,A=v,E=h,F=l.unpack,P=l.type,O=M;A.prototype.cmyk=function(){return O(this._rgb)},x.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(A,[null].concat(r,["cmyk"])))},E.format.cmyk=_,E.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=F(r,"cmyk"),"array"===P(r)&&4===r.length)return"cmyk"}});var j=l.unpack,G=l.last,R=function(r){return Math.round(100*r)/100},q=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=j(r,"hsla"),t=G(r)||"lsa";return n[0]=R(n[0]||0),n[1]=R(100*n[1])+"%",n[2]=R(100*n[2])+"%","hsla"===t||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,t="hsla"):n.length=3,t+"("+n.join(",")+")"},L=l.unpack,I=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=L(r,"rgba"))[0],t=r[1],a=r[2];n/=255,t/=255,a/=255;var f,o,u=Math.min(n,t,a),c=Math.max(n,t,a),i=(c+u)/2;return c===u?(f=0,o=Number.NaN):f=i<.5?(c-u)/(c+u):(c-u)/(2-c-u),n==c?o=(t-a)/(c-u):t==c?o=2+(a-n)/(c-u):a==c&&(o=4+(n-t)/(c-u)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},B=l.unpack,C=l.last,D=q,Y=I,S=Math.round,T=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=B(r,"rgba"),t=C(r)||"rgb";return"hsl"==t.substr(0,3)?D(Y(n),t):(n[0]=S(n[0]),n[1]=S(n[1]),n[2]=S(n[2]),("rgba"===t||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,t="rgba"),t+"("+n.slice(0,"rgb"===t?3:4).join(",")+")")},$=l.unpack,z=Math.round,X=function(){for(var r,e=[],n=arguments.length;n--;)e[n]=arguments[n];var t,a,f,o=(e=$(e,"hsl"))[0],u=e[1],c=e[2];if(0===u)t=a=f=255*c;else{var i=[0,0,0],l=[0,0,0],h=c<.5?c*(1+u):c+u-c*u,s=2*c-h,d=o/360;i[0]=d+1/3,i[1]=d,i[2]=d-1/3;for(var b=0;b<3;b++)i[b]<0&&(i[b]+=1),i[b]>1&&(i[b]-=1),6*i[b]<1?l[b]=s+6*(h-s)*i[b]:2*i[b]<1?l[b]=h:3*i[b]<2?l[b]=s+(h-s)*(2/3-i[b])*6:l[b]=s;t=(r=[z(255*l[0]),z(255*l[1]),z(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[t,a,f,e[3]]:[t,a,f,1]},U=X,V=h,W=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,K=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,Z=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,H=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Q=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,rr=Math.round,er=function(r){var e;if(r=r.toLowerCase().trim(),V.format.named)try{return V.format.named(r)}catch(r){}if(e=r.match(W)){for(var n=e.slice(1,4),t=0;t<3;t++)n[t]=+n[t];return n[3]=1,n}if(e=r.match(K)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(Z)){for(var o=e.slice(1,4),u=0;u<3;u++)o[u]=rr(2.55*o[u]);return o[3]=1,o}if(e=r.match(H)){for(var c=e.slice(1,5),i=0;i<3;i++)c[i]=rr(2.55*c[i]);return c[3]=+c[3],c}if(e=r.match(J)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var h=U(l);return h[3]=1,h}if(e=r.match(Q)){var s=e.slice(1,4);s[1]*=.01,s[2]*=.01;var d=U(s);return d[3]=+e[4],d}};er.test=function(r){return W.test(r)||K.test(r)||Z.test(r)||H.test(r)||J.test(r)||Q.test(r)};var nr=y,tr=v,ar=h,fr=l.type,or=T,ur=er;tr.prototype.css=function(r){return or(this._rgb,r)},nr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(tr,[null].concat(r,["css"])))},ar.format.css=ur,ar.autodetect.push({p:5,test:function(r){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===fr(r)&&ur.test(r))return"css"}});var cr=v,ir=y,lr=l.unpack;h.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=lr(r,"rgba");return n[0]*=255,n[1]*=255,n[2]*=255,n},ir.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(cr,[null].concat(r,["gl"])))},cr.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var hr=l.unpack,sr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t=hr(r,"rgb"),a=t[0],f=t[1],o=t[2],u=Math.min(a,f,o),c=Math.max(a,f,o),i=c-u,l=100*i/255,h=u/(255-i)*100;return 0===i?n=Number.NaN:(a===c&&(n=(f-o)/i),f===c&&(n=2+(o-a)/i),o===c&&(n=4+(a-f)/i),(n*=60)<0&&(n+=360)),[n,l,h]},dr=l.unpack,br=Math.floor,pr=function(){for(var r,e,n,t,a,f,o=[],u=arguments.length;u--;)o[u]=arguments[u];var c,i,l,h=(o=dr(o,"hcg"))[0],s=o[1],d=o[2];d*=255;var b=255*s;if(0===s)c=i=l=d;else{360===h&&(h=0),h>360&&(h-=360),h<0&&(h+=360);var p=br(h/=60),g=h-p,v=d*(1-s),m=v+b*(1-g),y=v+b*g,k=v+b;switch(p){case 0:c=(r=[k,y,v])[0],i=r[1],l=r[2];break;case 1:c=(e=[m,k,v])[0],i=e[1],l=e[2];break;case 2:c=(n=[v,k,y])[0],i=n[1],l=n[2];break;case 3:c=(t=[v,m,k])[0],i=t[1],l=t[2];break;case 4:c=(a=[y,v,k])[0],i=a[1],l=a[2];break;case 5:c=(f=[k,v,m])[0],i=f[1],l=f[2]}}return[c,i,l,o.length>3?o[3]:1]},gr=l.unpack,vr=l.type,mr=y,yr=v,kr=h,wr=sr;yr.prototype.hcg=function(){return wr(this._rgb)},mr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yr,[null].concat(r,["hcg"])))},kr.format.hcg=pr,kr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=gr(r,"hcg"),"array"===vr(r)&&3===r.length)return"hcg"}});var Mr=l.unpack,Nr=l.last,_r=Math.round,xr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=Mr(r,"rgba"),t=n[0],a=n[1],f=n[2],o=n[3],u=Nr(r)||"auto";void 0===o&&(o=1),"auto"===u&&(u=o<1?"rgba":"rgb");var c=(t=_r(t))<<16|(a=_r(a))<<8|(f=_r(f)),i="000000"+c.toString(16);i=i.substr(i.length-6);var l="0"+_r(255*o).toString(16);switch(l=l.substr(l.length-2),u.toLowerCase()){case"rgba":return"#"+i+l;case"argb":return"#"+l+i;default:return"#"+i}},Ar=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Er=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Fr=function(r){if(r.match(Ar)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Er)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var n=parseInt(r,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+r)},Pr=y,Or=v,jr=l.type,Gr=h,Rr=xr;Or.prototype.hex=function(r){return Rr(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Or,[null].concat(r,["hex"])))},Gr.format.hex=Fr,Gr.autodetect.push({p:4,test:function(r){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===jr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var qr=l.unpack,Lr=l.TWOPI,Ir=Math.min,Br=Math.sqrt,Cr=Math.acos,Dr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t=qr(r,"rgb"),a=t[0],f=t[1],o=t[2],u=Ir(a/=255,f/=255,o/=255),c=(a+f+o)/3,i=c>0?1-u/c:0;return 0===i?n=NaN:(n=(a-f+(a-o))/2,n/=Br((a-f)*(a-f)+(a-o)*(f-o)),n=Cr(n),o>f&&(n=Lr-n),n/=Lr),[360*n,i,c]},Yr=l.unpack,Sr=l.limit,Tr=l.TWOPI,$r=l.PITHIRD,zr=Math.cos,Xr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t,a,f=(r=Yr(r,"hsi"))[0],o=r[1],u=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?t=1-((a=(1-o)/3)+(n=(1+o*zr(Tr*f)/zr($r-Tr*f))/3)):f<2/3?a=1-((n=(1-o)/3)+(t=(1+o*zr(Tr*(f-=1/3))/zr($r-Tr*f))/3)):n=1-((t=(1-o)/3)+(a=(1+o*zr(Tr*(f-=2/3))/zr($r-Tr*f))/3)),[255*(n=Sr(u*n*3)),255*(t=Sr(u*t*3)),255*(a=Sr(u*a*3)),r.length>3?r[3]:1]},Ur=l.unpack,Vr=l.type,Wr=y,Kr=v,Zr=h,Hr=Dr;Kr.prototype.hsi=function(){return Hr(this._rgb)},Wr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Kr,[null].concat(r,["hsi"])))},Zr.format.hsi=Xr,Zr.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsi"),"array"===Vr(r)&&3===r.length)return"hsi"}});var Jr=l.unpack,Qr=l.type,re=y,ee=v,ne=h,te=I;ee.prototype.hsl=function(){return te(this._rgb)},re.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ee,[null].concat(r,["hsl"])))},ne.format.hsl=X,ne.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Jr(r,"hsl"),"array"===Qr(r)&&3===r.length)return"hsl"}});var ae=l.unpack,fe=Math.min,oe=Math.max,ue=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t,a,f=(r=ae(r,"rgb"))[0],o=r[1],u=r[2],c=fe(f,o,u),i=oe(f,o,u),l=i-c;return a=i/255,0===i?(n=Number.NaN,t=0):(t=l/i,f===i&&(n=(o-u)/l),o===i&&(n=2+(u-f)/l),u===i&&(n=4+(f-o)/l),(n*=60)<0&&(n+=360)),[n,t,a]},ce=l.unpack,ie=Math.floor,le=function(){for(var r,e,n,t,a,f,o=[],u=arguments.length;u--;)o[u]=arguments[u];var c,i,l,h=(o=ce(o,"hsv"))[0],s=o[1],d=o[2];if(d*=255,0===s)c=i=l=d;else{360===h&&(h=0),h>360&&(h-=360),h<0&&(h+=360);var b=ie(h/=60),p=h-b,g=d*(1-s),v=d*(1-s*p),m=d*(1-s*(1-p));switch(b){case 0:c=(r=[d,m,g])[0],i=r[1],l=r[2];break;case 1:c=(e=[v,d,g])[0],i=e[1],l=e[2];break;case 2:c=(n=[g,d,m])[0],i=n[1],l=n[2];break;case 3:c=(t=[g,v,d])[0],i=t[1],l=t[2];break;case 4:c=(a=[m,g,d])[0],i=a[1],l=a[2];break;case 5:c=(f=[d,g,v])[0],i=f[1],l=f[2]}}return[c,i,l,o.length>3?o[3]:1]},he=l.unpack,se=l.type,de=y,be=v,pe=h,ge=ue;be.prototype.hsv=function(){return ge(this._rgb)},de.hsv=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(be,[null].concat(r,["hsv"])))},pe.format.hsv=le,pe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=he(r,"hsv"),"array"===se(r)&&3===r.length)return"hsv"}});var ve={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},me=ve,ye=l.unpack,ke=Math.pow,we=function(r){return(r/=255)<=.04045?r/12.92:ke((r+.055)/1.055,2.4)},Me=function(r){return r>me.t3?ke(r,1/3):r/me.t2+me.t0},Ne=function(r,e,n){return r=we(r),e=we(e),n=we(n),[Me((.4124564*r+.3575761*e+.1804375*n)/me.Xn),Me((.2126729*r+.7151522*e+.072175*n)/me.Yn),Me((.0193339*r+.119192*e+.9503041*n)/me.Zn)]},_e=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=ye(r,"rgb"),t=n[0],a=n[1],f=n[2],o=Ne(t,a,f),u=o[0],c=o[1],i=o[2],l=116*c-16;return[l<0?0:l,500*(u-c),200*(c-i)]},xe=ve,Ae=l.unpack,Ee=Math.pow,Fe=function(r){return 255*(r<=.00304?12.92*r:1.055*Ee(r,1/2.4)-.055)},Pe=function(r){return r>xe.t1?r*r*r:xe.t2*(r-xe.t0)},Oe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t,a,f=(r=Ae(r,"lab"))[0],o=r[1],u=r[2];return t=(f+16)/116,n=isNaN(o)?t:t+o/500,a=isNaN(u)?t:t-u/200,t=xe.Yn*Pe(t),n=xe.Xn*Pe(n),a=xe.Zn*Pe(a),[Fe(3.2404542*n-1.5371385*t-.4985314*a),Fe(-.969266*n+1.8760108*t+.041556*a),Fe(.0556434*n-.2040259*t+1.0572252*a),r.length>3?r[3]:1]},je=l.unpack,Ge=l.type,Re=y,qe=v,Le=h,Ie=_e;qe.prototype.lab=function(){return Ie(this._rgb)},Re.lab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(qe,[null].concat(r,["lab"])))},Le.format.lab=Oe,Le.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=je(r,"lab"),"array"===Ge(r)&&3===r.length)return"lab"}});var Be=l.unpack,Ce=l.RAD2DEG,De=Math.sqrt,Ye=Math.atan2,Se=Math.round,Te=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=Be(r,"lab"),t=n[0],a=n[1],f=n[2],o=De(a*a+f*f),u=(Ye(f,a)*Ce+360)%360;return 0===Se(1e4*o)&&(u=Number.NaN),[t,o,u]},$e=l.unpack,ze=_e,Xe=Te,Ue=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=$e(r,"rgb"),t=n[0],a=n[1],f=n[2],o=ze(t,a,f),u=o[0],c=o[1],i=o[2];return Xe(u,c,i)},Ve=l.unpack,We=l.DEG2RAD,Ke=Math.sin,Ze=Math.cos,He=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=Ve(r,"lch"),t=n[0],a=n[1],f=n[2];return isNaN(f)&&(f=0),[t,Ze(f*=We)*a,Ke(f)*a]},Je=l.unpack,Qe=He,rn=Oe,en=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=Je(r,"lch"))[0],t=r[1],a=r[2],f=Qe(n,t,a),o=f[0],u=f[1],c=f[2],i=rn(o,u,c),l=i[0],h=i[1],s=i[2];return[l,h,s,r.length>3?r[3]:1]},nn=l.unpack,tn=en,an=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=nn(r,"hcl").reverse();return tn.apply(void 0,n)},fn=l.unpack,on=l.type,un=y,cn=v,ln=h,hn=Ue;cn.prototype.lch=function(){return hn(this._rgb)},cn.prototype.hcl=function(){return hn(this._rgb).reverse()},un.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(cn,[null].concat(r,["lch"])))},un.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(cn,[null].concat(r,["hcl"])))},ln.format.lch=en,ln.format.hcl=an,["lch","hcl"].forEach((function(r){return ln.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=fn(e,r),"array"===on(e)&&3===e.length)return r}})}));var sn={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},dn=h,bn=l.type,pn=sn,gn=Fr,vn=xr;v.prototype.name=function(){for(var r=vn(this._rgb,"rgb"),e=0,n=Object.keys(pn);e0;)e[n]=arguments[n+1];if(!e.length&&"string"===bn(r)&&pn[r.toLowerCase()])return"named"}});var mn=l.unpack,yn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=mn(r,"rgb"),t=n[0],a=n[1],f=n[2];return(t<<16)+(a<<8)+f},kn=l.type,wn=function(r){if("number"==kn(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},Mn=y,Nn=v,_n=h,xn=l.type,An=yn;Nn.prototype.num=function(){return An(this._rgb)},Mn.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Nn,[null].concat(r,["num"])))},_n.format.num=wn,_n.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===xn(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var En=y,Fn=v,Pn=h,On=l.unpack,jn=l.type,Gn=Math.round;Fn.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Gn)},Fn.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map((function(e,n){return n<3?!1===r?e:Gn(e):e}))},En.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Fn,[null].concat(r,["rgb"])))},Pn.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=On(r,"rgba");return void 0===n[3]&&(n[3]=1),n},Pn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=On(r,"rgba"),"array"===jn(r)&&(3===r.length||4===r.length&&"number"==jn(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rn=Math.log,qn=function(r){var e,n,t,a=r/100;return a<66?(e=255,n=a<6?0:-155.25485562709179-.44596950469579133*(n=a-2)+104.49216199393888*Rn(n),t=a<20?0:.8274096064007395*(t=a-10)-254.76935184120902+115.67994401066147*Rn(t)):(e=351.97690566805693+.114206453784165*(e=a-55)-40.25366309332127*Rn(e),n=325.4494125711974+.07943456536662342*(n=a-50)-28.0852963507957*Rn(n),t=255),[e,n,t,1]},Ln=qn,In=l.unpack,Bn=Math.round,Cn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var n,t=In(r,"rgb"),a=t[0],f=t[2],o=1e3,u=4e4,c=.4;u-o>c;){var i=Ln(n=.5*(u+o));i[2]/i[0]>=f/a?u=n:o=n}return Bn(n)},Dn=y,Yn=v,Sn=h,Tn=Cn;Yn.prototype.temp=Yn.prototype.kelvin=Yn.prototype.temperature=function(){return Tn(this._rgb)},Dn.temp=Dn.kelvin=Dn.temperature=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Yn,[null].concat(r,["temp"])))},Sn.format.temp=Sn.format.kelvin=Sn.format.temperature=qn;var $n=l.unpack,zn=Math.cbrt,Xn=Math.pow,Un=Math.sign,Vn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=$n(r,"rgb"),t=n[0],a=n[1],f=n[2],o=[Wn(t/255),Wn(a/255),Wn(f/255)],u=o[0],c=o[1],i=o[2],l=zn(.4122214708*u+.5363325363*c+.0514459929*i),h=zn(.2119034982*u+.6806995451*c+.1073969566*i),s=zn(.0883024619*u+.2817188376*c+.6299787005*i);return[.2104542553*l+.793617785*h-.0040720468*s,1.9779984951*l-2.428592205*h+.4505937099*s,.0259040371*l+.7827717662*h-.808675766*s]};function Wn(r){var e=Math.abs(r);return e<.04045?r/12.92:(Un(r)||1)*Xn((e+.055)/1.055,2.4)}var Kn=l.unpack,Zn=Math.pow,Hn=Math.sign,Jn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=Kn(r,"lab"))[0],t=r[1],a=r[2],f=Zn(n+.3963377774*t+.2158037573*a,3),o=Zn(n-.1055613458*t-.0638541728*a,3),u=Zn(n-.0894841775*t-1.291485548*a,3);return[255*Qn(4.0767416621*f-3.3077115913*o+.2309699292*u),255*Qn(-1.2684380046*f+2.6097574011*o-.3413193965*u),255*Qn(-.0041960863*f-.7034186147*o+1.707614701*u),r.length>3?r[3]:1]};function Qn(r){var e=Math.abs(r);return e>.0031308?(Hn(r)||1)*(1.055*Zn(e,1/2.4)-.055):12.92*r}var rt=l.unpack,et=l.type,nt=y,tt=v,at=h,ft=Vn;tt.prototype.oklab=function(){return ft(this._rgb)},nt.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(tt,[null].concat(r,["oklab"])))},at.format.oklab=Jn,at.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=rt(r,"oklab"),"array"===et(r)&&3===r.length)return"oklab"}});var ot=l.unpack,ut=Vn,ct=Te,it=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=ot(r,"rgb"),t=n[0],a=n[1],f=n[2],o=ut(t,a,f),u=o[0],c=o[1],i=o[2];return ct(u,c,i)},lt=l.unpack,ht=He,st=Jn,dt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=lt(r,"lch"))[0],t=r[1],a=r[2],f=ht(n,t,a),o=f[0],u=f[1],c=f[2],i=st(o,u,c),l=i[0],h=i[1],s=i[2];return[l,h,s,r.length>3?r[3]:1]},bt=l.unpack,pt=l.type,gt=y,vt=v,mt=h,yt=it;vt.prototype.oklch=function(){return yt(this._rgb)},gt.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vt,[null].concat(r,["oklch"])))},mt.format.oklch=dt,mt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=bt(r,"oklch"),"array"===pt(r)&&3===r.length)return"oklch"}});var kt=v,wt=l.type;kt.prototype.alpha=function(r,e){return void 0===e&&(e=!1),void 0!==r&&"number"===wt(r)?e?(this._rgb[3]=r,this):new kt([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var Mt=v,Nt=ve;Mt.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=Nt.Kn*r,new Mt(e,"lab").alpha(this.alpha(),!0)},Mt.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},Mt.prototype.darker=Mt.prototype.darken,Mt.prototype.brighter=Mt.prototype.brighten,v.prototype.get=function(r){var e=r.split("."),n=e[0],t=e[1],a=this[n]();if(t){var f=n.indexOf(t)-("ok"===n.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+t+" in mode "+n)}return a};var _t=v,xt=l.type,At=Math.pow;_t.prototype.luminance=function(r){if(void 0!==r&&"number"===xt(r)){if(0===r)return new _t([0,0,0,this._rgb[3]],"rgb");if(1===r)return new _t([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),n=20,t=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!n--?f:o>r?t(e,f):t(f,a)},a=(e>r?t(new _t([0,0,0]),this):t(this,new _t([255,255,255]))).rgb();return new _t(a.concat([this._rgb[3]]))}return Et.apply(void 0,this._rgb.slice(0,3))};var Et=function(r,e,n){return.2126*(r=Ft(r))+.7152*(e=Ft(e))+.0722*(n=Ft(n))},Ft=function(r){return(r/=255)<=.03928?r/12.92:At((r+.055)/1.055,2.4)},Pt={},Ot=v,jt=l.type,Gt=Pt,Rt=function(r,e,n){void 0===n&&(n=.5);for(var t=[],a=arguments.length-3;a-- >0;)t[a]=arguments[a+3];var f=t[0]||"lrgb";if(Gt[f]||t.length||(f=Object.keys(Gt)[0]),!Gt[f])throw new Error("interpolation mode "+f+" is not defined");return"object"!==jt(r)&&(r=new Ot(r)),"object"!==jt(e)&&(e=new Ot(e)),Gt[f](r,e,n).alpha(r.alpha()+n*(e.alpha()-r.alpha()))},qt=v,Lt=Rt;qt.prototype.mix=qt.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var n=[],t=arguments.length-2;t-- >0;)n[t]=arguments[t+2];return Lt.apply(void 0,[this,r,e].concat(n))};var It=v;It.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,n=e[3];return r?(this._rgb=[e[0]*n,e[1]*n,e[2]*n,n],this):new It([e[0]*n,e[1]*n,e[2]*n,n],"rgb")};var Bt=v,Ct=ve;Bt.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=Ct.Kn*r,e[1]<0&&(e[1]=0),new Bt(e,"lch").alpha(this.alpha(),!0)},Bt.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var Dt=v,Yt=l.type;Dt.prototype.set=function(r,e,n){void 0===n&&(n=!1);var t=r.split("."),a=t[0],f=t[1],o=this[a]();if(f){var u=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(u>-1){if("string"==Yt(e))switch(e.charAt(0)){case"+":case"-":o[u]+=+e;break;case"*":o[u]*=+e.substr(1);break;case"/":o[u]/=+e.substr(1);break;default:o[u]=+e}else{if("number"!==Yt(e))throw new Error("unsupported value for Color.set");o[u]=e}var c=new Dt(o,a);return n?(this._rgb=c._rgb,this):c}throw new Error("unknown channel "+f+" in mode "+a)}return o};var St=v;Pt.rgb=function(r,e,n){var t=r._rgb,a=e._rgb;return new St(t[0]+n*(a[0]-t[0]),t[1]+n*(a[1]-t[1]),t[2]+n*(a[2]-t[2]),"rgb")};var Tt=v,$t=Math.sqrt,zt=Math.pow;Pt.lrgb=function(r,e,n){var t=r._rgb,a=t[0],f=t[1],o=t[2],u=e._rgb,c=u[0],i=u[1],l=u[2];return new Tt($t(zt(a,2)*(1-n)+zt(c,2)*n),$t(zt(f,2)*(1-n)+zt(i,2)*n),$t(zt(o,2)*(1-n)+zt(l,2)*n),"rgb")};var Xt=v;Pt.lab=function(r,e,n){var t=r.lab(),a=e.lab();return new Xt(t[0]+n*(a[0]-t[0]),t[1]+n*(a[1]-t[1]),t[2]+n*(a[2]-t[2]),"lab")};var Ut=v,Vt=function(r,e,n,t){var a,f,o,u,c,i,l,h,s,d,b,p,g;return"hsl"===t?(o=r.hsl(),u=e.hsl()):"hsv"===t?(o=r.hsv(),u=e.hsv()):"hcg"===t?(o=r.hcg(),u=e.hcg()):"hsi"===t?(o=r.hsi(),u=e.hsi()):"lch"===t||"hcl"===t?(t="hcl",o=r.hcl(),u=e.hcl()):"oklch"===t&&(o=r.oklch().reverse(),u=e.oklch().reverse()),"h"!==t.substr(0,1)&&"oklch"!==t||(c=(a=o)[0],l=a[1],s=a[2],i=(f=u)[0],h=f[1],d=f[2]),isNaN(c)||isNaN(i)?isNaN(c)?isNaN(i)?p=Number.NaN:(p=i,1!=s&&0!=s||"hsv"==t||(b=h)):(p=c,1!=d&&0!=d||"hsv"==t||(b=l)):p=c+n*(i>c&&i-c>180?i-(c+360):i180?i+360-c:i-c),void 0===b&&(b=l+n*(h-l)),g=s+n*(d-s),new Ut("oklch"===t?[g,b,p]:[p,b,g],t)},Wt=Vt,Kt=function(r,e,n){return Wt(r,e,n,"lch")};Pt.lch=Kt,Pt.hcl=Kt;var Zt=v;Pt.num=function(r,e,n){var t=r.num(),a=e.num();return new Zt(t+n*(a-t),"num")};var Ht=Vt;Pt.hcg=function(r,e,n){return Ht(r,e,n,"hcg")};var Jt=Vt;Pt.hsi=function(r,e,n){return Jt(r,e,n,"hsi")};var Qt=Vt;Pt.hsl=function(r,e,n){return Qt(r,e,n,"hsl")};var ra=Vt;Pt.hsv=function(r,e,n){return ra(r,e,n,"hsv")};var ea=v;Pt.oklab=function(r,e,n){var t=r.oklab(),a=e.oklab();return new ea(t[0]+n*(a[0]-t[0]),t[1]+n*(a[1]-t[1]),t[2]+n*(a[2]-t[2]),"oklab")};var na=Vt;Pt.oklch=function(r,e,n){return na(r,e,n,"oklch")};var ta=v,aa=l.clip_rgb,fa=Math.pow,oa=Math.sqrt,ua=Math.PI,ca=Math.cos,ia=Math.sin,la=Math.atan2,ha=function(r,e){for(var n=r.length,t=[0,0,0,0],a=0;a.9999999&&(t[3]=1),new ta(aa(t))},sa=y,da=l.type,ba=Math.pow,pa=function(r){var e="rgb",n=sa("#ccc"),t=0,a=[0,1],f=[],o=[0,0],u=!1,c=[],i=!1,l=0,h=1,s=!1,d={},b=!0,p=1,g=function(r){if((r=r||["#fff","#000"])&&"string"===da(r)&&sa.brewer&&sa.brewer[r.toLowerCase()]&&(r=sa.brewer[r.toLowerCase()]),"array"===da(r)){1===r.length&&(r=[r[0],r[0]]),r=r.slice(0);for(var e=0;e2){var s=function(r){if(null!=u){for(var e=u.length-1,n=0;n=u[n];)n++;return n-1}return 0}(r);i=s/(u.length-2)}else i=h!==l?(r-l)/(h-l):1;i=m(i),t||(i=v(i)),1!==p&&(i=ba(i,p)),i=o[0]+i*(1-o[0]-o[1]),i=Math.min(1,Math.max(0,i));var g=Math.floor(1e4*i);if(b&&d[g])a=d[g];else{if("array"===da(c))for(var y=0;y=k&&y===f.length-1){a=c[y];break}if(i>k&&i2){var i=r.map((function(e,n){return n/(r.length-1)})),s=r.map((function(r){return(r-l)/(h-l)}));s.every((function(r,e){return i[e]===r}))||(m=function(r){if(r<=0||r>=1)return r;for(var e=0;r>=s[e+1];)e++;var n=(r-s[e])/(s[e+1]-s[e]);return i[e]+n*(i[e+1]-i[e])})}}return a=[l,h],w},w.mode=function(r){return arguments.length?(e=r,k(),w):e},w.range=function(r,e){return g(r),w},w.out=function(r){return i=r,w},w.spread=function(r){return arguments.length?(t=r,w):t},w.correctLightness=function(r){return null==r&&(r=!0),s=r,k(),v=s?function(r){for(var e=y(0,!0).lab()[0],n=y(1,!0).lab()[0],t=e>n,a=y(r,!0).lab()[0],f=e+(n-e)*r,o=a-f,u=0,c=1,i=20;Math.abs(o)>.01&&i-- >0;)t&&(o*=-1),o<0?(u=r,r+=.5*(c-r)):(c=r,r+=.5*(u-r)),a=y(r,!0).lab()[0],o=a-f;return r}:function(r){return r},w},w.padding=function(r){return null!=r?("number"===da(r)&&(r=[r,r]),o=r,w):o},w.colors=function(e,n){arguments.length<2&&(n="hex");var t=[];if(0===arguments.length)t=c.slice(0);else if(1===e)t=[w(.5)];else if(e>1){var f=a[0],o=a[1]-f;t=ga(0,e,!1).map((function(r){return w(f+r/(e-1)*o)}))}else{r=[];var i=[];if(u&&u.length>2)for(var l=1,h=u.length,s=1<=h;s?lh;s?l++:l--)i.push(.5*(u[l-1]+u[l]));else i=a;t=i.map((function(r){return w(r)}))}return sa[n]&&(t=t.map((function(r){return r[n]()}))),t},w.cache=function(r){return null!=r?(b=r,w):b},w.gamma=function(r){return null!=r?(p=r,w):p},w.nodata=function(r){return null!=r?(n=sa(r),w):n},w};function ga(r,e,n){for(var t=[],a=rf;a?o++:o--)t.push(o);return t}var va=v,ma=pa,ya=y,ka=function(r,e,n){if(!ka[n])throw new Error("unknown blend mode "+n);return ka[n](r,e)},wa=function(r){return function(e,n){var t=ya(n).rgb(),a=ya(e).rgb();return ya.rgb(r(t,a))}},Ma=function(r){return function(e,n){var t=[];return t[0]=r(e[0],n[0]),t[1]=r(e[1],n[1]),t[2]=r(e[2],n[2]),t}};ka.normal=wa(Ma((function(r){return r}))),ka.multiply=wa(Ma((function(r,e){return r*e/255}))),ka.screen=wa(Ma((function(r,e){return 255*(1-(1-r/255)*(1-e/255))}))),ka.overlay=wa(Ma((function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-e/255))}))),ka.darken=wa(Ma((function(r,e){return r>e?e:r}))),ka.lighten=wa(Ma((function(r,e){return r>e?r:e}))),ka.dodge=wa(Ma((function(r,e){return 255===r||(r=e/255*255/(1-r/255))>255?255:r}))),ka.burn=wa(Ma((function(r,e){return 255*(1-(1-e/255)/(r/255))})));for(var Na=ka,_a=l.type,xa=l.clip_rgb,Aa=l.TWOPI,Ea=Math.pow,Fa=Math.sin,Pa=Math.cos,Oa=y,ja=v,Ga=Math.floor,Ra=Math.random,qa=o,La=Math.log,Ia=Math.pow,Ba=Math.floor,Ca=Math.abs,Da=function(r,e){void 0===e&&(e=null);var n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===qa(r)&&(r=Object.values(r)),r.forEach((function(r){e&&"object"===qa(r)&&(r=r[e]),null==r||isNaN(r)||(n.values.push(r),n.sum+=r,rn.max&&(n.max=r),n.count+=1)})),n.domain=[n.min,n.max],n.limits=function(r,e){return Ya(n,r,e)},n},Ya=function(r,e,n){void 0===e&&(e="equal"),void 0===n&&(n=7),"array"==qa(r)&&(r=Da(r));var t=r.min,a=r.max,f=r.values.sort((function(r,e){return r-e}));if(1===n)return[t,a];var o=[];if("c"===e.substr(0,1)&&(o.push(t),o.push(a)),"e"===e.substr(0,1)){o.push(t);for(var u=1;u 0");var c=Math.LOG10E*La(t),i=Math.LOG10E*La(a);o.push(t);for(var l=1;l200&&(y=!1)}for(var L={},I=0;I=360;)b-=360;o[d]=b}else o[d]=o[d]/u[d];return s/=t,new ta(o,e).alpha(s>.99999?1:s,!0)},hf.bezier=function(r){var e=function(r){var e,n,t,a,f,o,u;if(2===(r=r.map((function(r){return new va(r)}))).length)e=r.map((function(r){return r.lab()})),f=e[0],o=e[1],a=function(r){var e=[0,1,2].map((function(e){return f[e]+r*(o[e]-f[e])}));return new va(e,"lab")};else if(3===r.length)n=r.map((function(r){return r.lab()})),f=n[0],o=n[1],u=n[2],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*f[e]+2*(1-r)*r*o[e]+r*r*u[e]}));return new va(e,"lab")};else if(4===r.length){var c;t=r.map((function(r){return r.lab()})),f=t[0],o=t[1],u=t[2],c=t[3],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*(1-r)*f[e]+3*(1-r)*(1-r)*r*o[e]+3*(1-r)*r*r*u[e]+r*r*r*c[e]}));return new va(e,"lab")}}else{if(!(r.length>=5))throw new RangeError("No point in running bezier with only one color.");var i,l,h;i=r.map((function(r){return r.lab()})),h=r.length-1,l=function(r){for(var e=[1,1],n=1;nt?(n+.05)/(t+.05):(t+.05)/(n+.05)},hf.deltaE=function(r,e,n,t,a){void 0===n&&(n=1),void 0===t&&(t=1),void 0===a&&(a=1);var f=function(r){return 360*r/(2*Qa)},o=function(r){return 2*Qa*r/360};r=new $a(r),e=new $a(e);var u=Array.from(r.lab()),c=u[0],i=u[1],l=u[2],h=Array.from(e.lab()),s=h[0],d=h[1],b=h[2],p=(c+s)/2,g=(za(Xa(i,2)+Xa(l,2))+za(Xa(d,2)+Xa(b,2)))/2,v=.5*(1-za(Xa(g,7)/(Xa(g,7)+Xa(25,7)))),m=i*(1+v),y=d*(1+v),k=za(Xa(m,2)+Xa(l,2)),w=za(Xa(y,2)+Xa(b,2)),M=(k+w)/2,N=f(Wa(l,m)),_=f(Wa(b,y)),x=N>=0?N:N+360,A=_>=0?_:_+360,E=Ka(x-A)>180?(x+A+360)/2:(x+A)/2,F=1-.17*Za(o(E-30))+.24*Za(o(2*E))+.32*Za(o(3*E+6))-.2*Za(o(4*E-63)),P=A-x;P=Ka(P)<=180?P:A<=x?P+360:P-360,P=2*za(k*w)*Ha(o(P)/2);var O=s-c,j=w-k,G=1+.015*Xa(p-50,2)/za(20+Xa(p-50,2)),R=1+.045*M,q=1+.015*M*F,L=30*Ja(-Xa((E-275)/25,2)),I=-(2*za(Xa(M,7)/(Xa(M,7)+Xa(25,7))))*Ha(2*o(L)),B=za(Xa(O/(n*G),2)+Xa(j/(t*R),2)+Xa(P/(a*q),2)+I*(j/(t*R))*(P/(a*q)));return Va(0,Ua(100,B))},hf.distance=function(r,e,n){void 0===n&&(n="lab"),r=new rf(r),e=new rf(e);var t=r.get(n),a=e.get(n),f=0;for(var o in t){var u=(t[o]||0)-(a[o]||0);f+=u*u}return Math.sqrt(f)},hf.limits=Sa.limits,hf.valid=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];try{return new(Function.prototype.bind.apply(ef,[null].concat(r))),!0}catch(r){return!1}},hf.scales=af,hf.colors=sn,hf.brewer=lf,hf})); diff --git a/node_modules/chroma-js/index-light.js b/node_modules/chroma-js/index-light.js new file mode 100644 index 0000000..799f045 --- /dev/null +++ b/node_modules/chroma-js/index-light.js @@ -0,0 +1,31 @@ +const chroma = require('./src/chroma'); + +// feel free to comment out anything to rollup +// a smaller chroma.js built + +// io --> convert colors +require('./src/io/css'); +require('./src/io/hex'); +require('./src/io/hsl'); +require('./src/io/lab'); +require('./src/io/oklab'); +require('./src/io/rgb'); + +// operators --> modify existing Colors +require('./src/ops/alpha'); +require('./src/ops/darken'); +require('./src/ops/get'); +require('./src/ops/mix'); +require('./src/ops/set'); + +// interpolators +require('./src/interpolator/lrgb'); +require('./src/interpolator/oklab'); + +// generators -- > create new colors +chroma.mix = chroma.interpolate = require('./src/generator/mix'); + +// other utility methods +chroma.valid = require('./src/utils/valid'); + +module.exports = chroma; diff --git a/node_modules/chroma-js/index.js b/node_modules/chroma-js/index.js new file mode 100644 index 0000000..000203e --- /dev/null +++ b/node_modules/chroma-js/index.js @@ -0,0 +1,72 @@ +const chroma = require('./src/chroma'); + +// feel free to comment out anything to rollup +// a smaller chroma.js built + +// io --> convert colors +require('./src/io/cmyk'); +require('./src/io/css'); +require('./src/io/gl'); +require('./src/io/hcg'); +require('./src/io/hex'); +require('./src/io/hsi'); +require('./src/io/hsl'); +require('./src/io/hsv'); +require('./src/io/lab'); +require('./src/io/lch'); +require('./src/io/named'); +require('./src/io/num'); +require('./src/io/rgb'); +require('./src/io/temp'); +require('./src/io/oklab'); +require('./src/io/oklch'); + +// operators --> modify existing Colors +require('./src/ops/alpha'); +require('./src/ops/clipped'); +require('./src/ops/darken'); +require('./src/ops/get'); +require('./src/ops/luminance'); +require('./src/ops/mix'); +require('./src/ops/premultiply'); +require('./src/ops/saturate'); +require('./src/ops/set'); + +// interpolators +require('./src/interpolator/rgb'); +require('./src/interpolator/lrgb'); +require('./src/interpolator/lab'); +require('./src/interpolator/lch'); +require('./src/interpolator/num'); +require('./src/interpolator/hcg'); +require('./src/interpolator/hsi'); +require('./src/interpolator/hsl'); +require('./src/interpolator/hsv'); +require('./src/interpolator/oklab'); +require('./src/interpolator/oklch'); + +// generators -- > create new colors +chroma.average = require('./src/generator/average'); +chroma.bezier = require('./src/generator/bezier'); +chroma.blend = require('./src/generator/blend'); +chroma.cubehelix = require('./src/generator/cubehelix'); +chroma.mix = chroma.interpolate = require('./src/generator/mix'); +chroma.random = require('./src/generator/random'); +chroma.scale = require('./src/generator/scale'); + +// other utility methods +chroma.analyze = require('./src/utils/analyze').analyze; +chroma.contrast = require('./src/utils/contrast'); +chroma.deltaE = require('./src/utils/delta-e'); +chroma.distance = require('./src/utils/distance'); +chroma.limits = require('./src/utils/analyze').limits; +chroma.valid = require('./src/utils/valid'); + +// scale +chroma.scales = require('./src/utils/scales'); + +// colors +chroma.colors = require('./src/colors/w3cx11'); +chroma.brewer = require('./src/colors/colorbrewer'); + +module.exports = chroma; diff --git a/node_modules/chroma-js/package.json b/node_modules/chroma-js/package.json new file mode 100644 index 0000000..3801824 --- /dev/null +++ b/node_modules/chroma-js/package.json @@ -0,0 +1,74 @@ +{ + "name": "chroma-js", + "description": "JavaScript library for color conversions", + "version": "2.4.2", + "author": "Gregor Aisch", + "type": "commonjs", + "homepage": "https://github.com/gka/chroma.js", + "keywords": [ + "color" + ], + "maintainers": [ + { + "name": "Gregor Aisch", + "email": "mail@driven-by-data.net", + "web": "https://vis4.net" + } + ], + "bugs": "https://github.com/gka/chroma.js/issues", + "repository": { + "type": "git", + "url": "git://github.com/gka/chroma.js.git" + }, + "main": "chroma.js", + "scripts": { + "prepublishOnly": "npm run build && npm test", + "build": "rollup -c && cross-env DEV=1 rollup -c ", + "docs": "cd docs && make", + "docs-preview": "cd docs && make && make preview", + "test": "vows --dot-matrix test/*.js", + "lint": "eslint index.js index-light.js src" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.16.5", + "@rollup/plugin-buble": "^0.21.3", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.1.3", + "@rollup/plugin-replace": "^3.0.1", + "cross-env": "^7.0.3", + "es6-shim": "^0.35.6", + "eslint": "^8.7.0", + "http-server": "^14.1.0", + "husky": "^1.2.1", + "markdown-to-html": "0.0.13", + "minimatch": "^3.0.4", + "rollup": "^2.66.1", + "rollup-plugin-license": "^2.6.1", + "rollup-plugin-terser": "^7.0.2", + "vows": "^0.8.2" + }, + "license": "(BSD-3-Clause AND Apache-2.0)", + "spm": { + "main": "chroma.js", + "ignore": [ + "src", + "doc", + "test" + ] + }, + "prettier": { + "arrowParens": "avoid", + "printWidth": 100, + "semi": true, + "singleQuote": true, + "tabWidth": 4, + "trailingComma": "none", + "svelteSortOrder": "options-scripts-styles-markup" + }, + "husky": { + "hooks": { + "pre-commit": "npm run lint", + "pre-push": "npm test" + } + } +} diff --git a/node_modules/chroma-js/readme.md b/node_modules/chroma-js/readme.md new file mode 100644 index 0000000..d0606e7 --- /dev/null +++ b/node_modules/chroma-js/readme.md @@ -0,0 +1,112 @@ +# Chroma.js + +[Chroma.js](https://vis4.net/chromajs/) is a ~~tiny~~ [small-ish](https://bundlephobia.com/result?p=chroma-js) zero-dependency JavaScript library ([13.5kB](https://bundlephobia.com/result?p=chroma-js)) for all kinds of color conversions and color scales. + +[![Build Status](https://api.travis-ci.com/gka/chroma.js.svg?branch=master)](https://travis-ci.com/gka/chroma.js) + +### Usage + +Install from npm + +``` +npm install chroma-js +``` + +Import package into project + +```javascript +import chroma from "chroma-js"; +``` + +Initiate and manipulate colors: + +```javascript +chroma('#D4F880').darken().hex(); // #a1c550 +``` + +Working with color scales is easy, too: + +```javascript +scale = chroma.scale(['white', 'red']); +scale(0.5).hex(); // #FF7F7F +``` + +Lab/Lch interpolation looks better than RGB + +```javascript +chroma.scale(['white', 'red']).mode('lab'); +``` + +Custom domains! Quantiles! Color Brewer!! + +```javascript +chroma.scale('RdYlBu').domain(myValues, 7, 'quantiles'); +``` + +And why not use logarithmic color scales once in your life? + +```javascript +chroma.scale(['lightyellow', 'navy']).domain([1, 100000], 7, 'log'); +``` + +### Like it? + +Why not dive into the [interactive documentation](http://gka.github.io/chroma.js/) (there's a [static version](https://github.com/gka/chroma.js/blob/master/docs/src/index.md), too). You can download [chroma.min.js](https://raw.github.com/gka/chroma.js/master/chroma.min.js) or use the [hosted version on cdnjs.com](https://cdnjs.com/libraries/chroma-js). + +You can use it in node.js, too! + + npm install chroma-js + +Or you can use it in SASS using [chromatic-sass](https://github.com/bugsnag/chromatic-sass)! + +### Build instructions + +First clone the repository and install the dev dependencies: + + git clone git@github.com:gka/chroma.js.git + cd chroma.js + npm install + +Then compile the coffee-script source files to the build files: + + npm run build + +Don't forget to tests your changes! You will probably also want to add new test to the `/test` folder in case you added a feature. + + npm test + +And to update the documentation just run + + npm run docs + +To preview the docs locally you can use + + npm run docs-preview + +### Similar Libraries / Prior Art + +* [Chromatist](https://github.com/jrus/chromatist) +* [GrapeFruit](https://github.com/xav/Grapefruit) (Python) +* [colors.py](https://github.com/mattrobenolt/colors.py) (Python) +* [d3.js](https://github.com/mbostock/d3) + + +### Author + +Chroma.js is written by [Gregor Aisch](http://driven-by-data.net). + +### License + +Released under [BSD license](http://opensource.org/licenses/BSD-3-Clause). +Versions prior to 0.4 were released under [GPL](http://www.gnu.org/licenses/gpl-3.0). + +### Further reading + +* [How To Avoid Equidistant HSV Colors](https://vis4.net/blog/posts/avoid-equidistant-hsv-colors/) +* [Mastering Multi-hued Color Scales with Chroma.js](https://vis4.net/blog/posts/mastering-multi-hued-color-scales/) + +### FAQ + +**There have been no commits in X weeks. Is chroma.js dead?** + +No! It's just that the author of this library has other things to do than devoting every week of his life to making cosmetic changes to a piece of software that is working just fine as it is, just so that people like you don't feel like it's abandoned and left alone in this world to die. Bugs will be fixed. Some new things will come at some point. Patience. diff --git a/node_modules/chroma-js/src/Color.js b/node_modules/chroma-js/src/Color.js new file mode 100644 index 0000000..9840f27 --- /dev/null +++ b/node_modules/chroma-js/src/Color.js @@ -0,0 +1,50 @@ +const {last, clip_rgb, type} = require('./utils'); +const _input = require('./io/input'); + +class Color { + + constructor(...args) { + const me = this; + if (type(args[0]) === 'object' && + args[0].constructor && + args[0].constructor === this.constructor) { + // the argument is already a Color instance + return args[0]; + } + + // last argument could be the mode + let mode = last(args); + let autodetect = false; + + if (!mode) { + autodetect = true; + if (!_input.sorted) { + _input.autodetect = _input.autodetect.sort((a,b) => b.p - a.p); + _input.sorted = true; + } + // auto-detect format + for (let chk of _input.autodetect) { + mode = chk.test(...args); + if (mode) break; + } + } + + if (_input.format[mode]) { + const rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1)); + me._rgb = clip_rgb(rgb); + } else { + throw new Error('unknown format: '+args); + } + + // add alpha channel + if (me._rgb.length === 3) me._rgb.push(1); + } + + toString() { + if (type(this.hex) == 'function') return this.hex(); + return `[${this._rgb.join(',')}]`; + } + +} + +module.exports = Color; diff --git a/node_modules/chroma-js/src/chroma.js b/node_modules/chroma-js/src/chroma.js new file mode 100644 index 0000000..2dedc22 --- /dev/null +++ b/node_modules/chroma-js/src/chroma.js @@ -0,0 +1,9 @@ + +const chroma = (...args) => { + return new chroma.Color(...args); +}; + +chroma.Color = require('./Color'); +chroma.version = '@@version' + +module.exports = chroma; diff --git a/node_modules/chroma-js/src/colors/colorbrewer.js b/node_modules/chroma-js/src/colors/colorbrewer.js new file mode 100644 index 0000000..f54db85 --- /dev/null +++ b/node_modules/chroma-js/src/colors/colorbrewer.js @@ -0,0 +1,69 @@ +/** + ColorBrewer colors for chroma.js + + Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The + Pennsylvania State University. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. +*/ + +const colorbrewer = { + // sequential + OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'], + PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'], + BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'], + Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'], + BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'], + YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'], + YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'], + Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'], + RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'], + Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'], + YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'], + Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'], + GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'], + Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'], + YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'], + PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'], + Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'], + PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'], + Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'], + + // diverging + + Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'], + RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'], + RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'], + PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'], + PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'], + RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'], + BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'], + RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'], + PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'], + + // qualitative + + Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'], + Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'], + Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'], + Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'], + Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'], + Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'], + Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'], + Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'], +} + +// add lowercase aliases for case-insensitive matches +for (let key of Object.keys(colorbrewer)) { + colorbrewer[key.toLowerCase()] = colorbrewer[key]; +} + +module.exports = colorbrewer; diff --git a/node_modules/chroma-js/src/colors/w3cx11.js b/node_modules/chroma-js/src/colors/w3cx11.js new file mode 100644 index 0000000..1a92b10 --- /dev/null +++ b/node_modules/chroma-js/src/colors/w3cx11.js @@ -0,0 +1,165 @@ +/** + X11 color names + + http://www.w3.org/TR/css3-color/#svg-color +*/ + +const w3cx11 = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflower: '#6495ed', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + laserlemon: '#ffff54', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrod: '#fafad2', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + maroon2: '#7f0000', + maroon3: '#b03060', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + purple2: '#7f007f', + purple3: '#a020f0', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32' +} + +module.exports = w3cx11; diff --git a/node_modules/chroma-js/src/generator/average.js b/node_modules/chroma-js/src/generator/average.js new file mode 100644 index 0000000..fe23764 --- /dev/null +++ b/node_modules/chroma-js/src/generator/average.js @@ -0,0 +1,82 @@ +const Color = require('../Color'); +const {clip_rgb} = require('../utils'); +const {pow, sqrt, PI, cos, sin, atan2} = Math; + +module.exports = (colors, mode='lrgb', weights=null) => { + const l = colors.length; + if (!weights) weights = Array.from(new Array(l)).map(() => 1); + // normalize weights + const k = l / weights.reduce(function(a, b) { return a + b; }); + weights.forEach((w,i) => { weights[i] *= k }) + // convert colors to Color objects + colors = colors.map(c => new Color(c)); + if (mode === 'lrgb') { + return _average_lrgb(colors, weights) + } + const first = colors.shift(); + const xyz = first.get(mode); + const cnt = []; + let dx = 0; + let dy = 0; + // initial color + for (let i=0; i { + const xyz2 = c.get(mode); + alpha += c.alpha() * weights[ci+1]; + for (let i=0; i= 360) A -= 360; + xyz[i] = A; + } else { + xyz[i] = xyz[i]/cnt[i]; + } + } + alpha /= l; + return (new Color(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true); +}; + + +const _average_lrgb = (colors, weights) => { + const l = colors.length; + const xyz = [0,0,0,0]; + for (let i=0; i < colors.length; i++) { + const col = colors[i]; + const f = weights[i] / l; + const rgb = col._rgb; + xyz[0] += pow(rgb[0],2) * f; + xyz[1] += pow(rgb[1],2) * f; + xyz[2] += pow(rgb[2],2) * f; + xyz[3] += rgb[3] * f; + } + xyz[0] = sqrt(xyz[0]); + xyz[1] = sqrt(xyz[1]); + xyz[2] = sqrt(xyz[2]); + if (xyz[3] > 0.9999999) xyz[3] = 1; + return new Color(clip_rgb(xyz)); +} diff --git a/node_modules/chroma-js/src/generator/bezier.js b/node_modules/chroma-js/src/generator/bezier.js new file mode 100644 index 0000000..233f781 --- /dev/null +++ b/node_modules/chroma-js/src/generator/bezier.js @@ -0,0 +1,69 @@ +// +// interpolates between a set of colors uzing a bezier spline +// + +// @requires utils lab +const Color = require('../Color'); +require('../io/lab'); +const scale = require('./scale'); + +// nth row of the pascal triangle +const binom_row = function(n) { + let row = [1, 1]; + for (let i = 1; i < n; i++) { + let newrow = [1]; + for (let j = 1; j <= row.length; j++) { + newrow[j] = (row[j] || 0) + row[j - 1]; + } + row = newrow; + } + return row; +} + +const bezier = function(colors) { + let I, lab0, lab1, lab2; + colors = colors.map(c => new Color(c)); + if (colors.length === 2) { + // linear interpolation + [lab0, lab1] = colors.map(c => c.lab()); + I = function(t) { + const lab = ([0, 1, 2].map((i) => lab0[i] + (t * (lab1[i] - lab0[i])))); + return new Color(lab, 'lab'); + }; + } else if (colors.length === 3) { + // quadratic bezier interpolation + [lab0, lab1, lab2] = colors.map(c => c.lab()); + I = function(t) { + const lab = ([0, 1, 2].map((i) => ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]))); + return new Color(lab, 'lab'); + }; + } else if (colors.length === 4) { + // cubic bezier interpolation + let lab3; + [lab0, lab1, lab2, lab3] = colors.map(c => c.lab()); + I = function(t) { + const lab = ([0, 1, 2].map((i) => ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]))); + return new Color(lab, 'lab'); + }; + } else if (colors.length >= 5) { + // general case (degree n bezier) + let labs, row, n; + labs = colors.map(c => c.lab()); + n = colors.length - 1 + row = binom_row(n); + I = function (t) { + const u = 1 - t; + const lab = ([0, 1, 2].map((i) => labs.reduce((sum, el, j) => (sum + row[j] * u ** (n - j) * t ** j * el[i]), 0))) + return new Color(lab, 'lab'); + }; + } else { + throw new RangeError("No point in running bezier with only one color.") + } + return I; +}; + +module.exports = (colors) => { + const f = bezier(colors); + f.scale = () => scale(f); + return f; +} diff --git a/node_modules/chroma-js/src/generator/blend.js b/node_modules/chroma-js/src/generator/blend.js new file mode 100644 index 0000000..bfd5646 --- /dev/null +++ b/node_modules/chroma-js/src/generator/blend.js @@ -0,0 +1,58 @@ +/* + * interpolates between a set of colors uzing a bezier spline + * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ + */ + +require('../io/rgb'); +const chroma = require('../chroma'); + +const blend = (bottom, top, mode) => { + if (!blend[mode]) { + throw new Error('unknown blend mode ' + mode); + } + return blend[mode](bottom, top); +} + +const blend_f = (f) => + (bottom,top) => { + const c0 = chroma(top).rgb(); + const c1 = chroma(bottom).rgb(); + return chroma.rgb(f(c0, c1)); + } + +const each = (f) => + (c0, c1) => { + const out = [] + out[0] = f(c0[0], c1[0]); + out[1] = f(c0[1], c1[1]); + out[2] = f(c0[2], c1[2]); + return out; + } + +const normal = (a) => a +const multiply = (a,b) => a * b / 255 +const darken = (a,b) => a > b ? b : a +const lighten = (a,b) => a > b ? a : b +const screen = (a,b) => 255 * (1 - (1-a/255) * (1-b/255)) +const overlay = (a,b) => b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )) +const burn = (a,b) => 255 * (1 - (1 - b / 255) / (a/255)) +const dodge = (a,b) => { + if (a === 255) return 255; + a = 255 * (b / 255) / (1 - a / 255); + return a > 255 ? 255 : a +} + +// # add = (a,b) -> +// # if (a + b > 255) then 255 else a + b + +blend.normal = blend_f(each(normal)); +blend.multiply = blend_f(each(multiply)); +blend.screen = blend_f(each(screen)); +blend.overlay = blend_f(each(overlay)); +blend.darken = blend_f(each(darken)); +blend.lighten = blend_f(each(lighten)); +blend.dodge = blend_f(each(dodge)); +blend.burn = blend_f(each(burn)); +// blend.add = blend_f(each(add)); + +module.exports = blend; diff --git a/node_modules/chroma-js/src/generator/cubehelix.js b/node_modules/chroma-js/src/generator/cubehelix.js new file mode 100644 index 0000000..2464738 --- /dev/null +++ b/node_modules/chroma-js/src/generator/cubehelix.js @@ -0,0 +1,78 @@ +// cubehelix interpolation +// based on D.A. Green "A colour scheme for the display of astronomical intensity images" +// http://astron-soc.in/bulletin/11June/289392011.pdf + +const {type, clip_rgb, TWOPI} = require('../utils'); +const {pow,sin,cos} = Math; +const chroma = require('../chroma'); + +module.exports = function(start=300, rotations=-1.5, hue=1, gamma=1, lightness=[0,1]) { + let dh = 0, dl; + if (type(lightness) === 'array') { + dl = lightness[1] - lightness[0]; + } else { + dl = 0; + lightness = [lightness, lightness]; + } + + const f = function(fract) { + const a = TWOPI * (((start+120)/360) + (rotations * fract)); + const l = pow(lightness[0] + (dl * fract), gamma); + const h = dh !== 0 ? hue[0] + (fract * dh) : hue; + const amp = (h * l * (1-l)) / 2; + const cos_a = cos(a); + const sin_a = sin(a); + const r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a))); + const g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a))); + const b = l + (amp * (+1.97294 * cos_a)); + return chroma(clip_rgb([r*255,g*255,b*255,1])); + }; + + f.start = function(s) { + if ((s == null)) { return start; } + start = s; + return f; + }; + + f.rotations = function(r) { + if ((r == null)) { return rotations; } + rotations = r; + return f; + }; + + f.gamma = function(g) { + if ((g == null)) { return gamma; } + gamma = g; + return f; + }; + + f.hue = function(h) { + if ((h == null)) { return hue; } + hue = h; + if (type(hue) === 'array') { + dh = hue[1] - hue[0]; + if (dh === 0) { hue = hue[1]; } + } else { + dh = 0; + } + return f; + }; + + f.lightness = function(h) { + if ((h == null)) { return lightness; } + if (type(h) === 'array') { + lightness = h; + dl = h[1] - h[0]; + } else { + lightness = [h,h]; + dl = 0; + } + return f; + }; + + f.scale = () => chroma.scale(f); + + f.hue(hue); + + return f; +}; diff --git a/node_modules/chroma-js/src/generator/mix.js b/node_modules/chroma-js/src/generator/mix.js new file mode 100644 index 0000000..af4441f --- /dev/null +++ b/node_modules/chroma-js/src/generator/mix.js @@ -0,0 +1,18 @@ +const Color = require('../Color'); +const {type} = require('../utils'); +const interpolator = require('../interpolator'); + +module.exports = (col1, col2, f=0.5, ...rest) => { + let mode = rest[0] || 'lrgb'; + if (!interpolator[mode] && !rest.length) { + // fall back to the first supported mode + mode = Object.keys(interpolator)[0]; + } + if (!interpolator[mode]) { + throw new Error(`interpolation mode ${mode} is not defined`); + } + if (type(col1) !== 'object') col1 = new Color(col1); + if (type(col2) !== 'object') col2 = new Color(col2); + return interpolator[mode](col1, col2, f) + .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha())); +} diff --git a/node_modules/chroma-js/src/generator/random.js b/node_modules/chroma-js/src/generator/random.js new file mode 100644 index 0000000..a96d7d8 --- /dev/null +++ b/node_modules/chroma-js/src/generator/random.js @@ -0,0 +1,12 @@ +const Color = require('../Color'); +const digits = '0123456789abcdef'; + +const {floor,random} = Math; + +module.exports = () => { + let code = '#'; + for (let i=0; i<6; i++) { + code += digits.charAt(floor(random() * 16)); + } + return new Color(code, 'hex'); +} diff --git a/node_modules/chroma-js/src/generator/scale.js b/node_modules/chroma-js/src/generator/scale.js new file mode 100644 index 0000000..35a365f --- /dev/null +++ b/node_modules/chroma-js/src/generator/scale.js @@ -0,0 +1,366 @@ +// minimal multi-purpose interface + +// @requires utils color analyze + +const chroma = require('../chroma'); +const {type} = require('../utils'); + +const {pow} = Math; + +module.exports = function(colors) { + + // constructor + let _mode = 'rgb'; + let _nacol = chroma('#ccc'); + let _spread = 0; + // const _fixed = false; + let _domain = [0, 1]; + let _pos = []; + let _padding = [0,0]; + let _classes = false; + let _colors = []; + let _out = false; + let _min = 0; + let _max = 1; + let _correctLightness = false; + let _colorCache = {}; + let _useCache = true; + let _gamma = 1; + + // private methods + + const setColors = function(colors) { + colors = colors || ['#fff', '#000']; + if (colors && type(colors) === 'string' && chroma.brewer && + chroma.brewer[colors.toLowerCase()]) { + colors = chroma.brewer[colors.toLowerCase()]; + } + if (type(colors) === 'array') { + // handle single color + if (colors.length === 1) { + colors = [colors[0], colors[0]]; + } + // make a copy of the colors + colors = colors.slice(0); + // convert to chroma classes + for (let c=0; c= _classes[i]) { + i++; + } + return i-1; + } + return 0; + }; + + let tMapLightness = t => t; + let tMapDomain = t => t; + + // const classifyValue = function(value) { + // let val = value; + // if (_classes.length > 2) { + // const n = _classes.length-1; + // const i = getClass(value); + // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class + // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class + // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min)); + // } + // return val; + // }; + + const getColor = function(val, bypassMap) { + let col, t; + if (bypassMap == null) { bypassMap = false; } + if (isNaN(val) || (val === null)) { return _nacol; } + if (!bypassMap) { + if (_classes && (_classes.length > 2)) { + // find the class + const c = getClass(val); + t = c / (_classes.length-2); + } else if (_max !== _min) { + // just interpolate between min/max + t = (val - _min) / (_max - _min); + } else { + t = 1; + } + } else { + t = val; + } + + // domain map + t = tMapDomain(t); + + if (!bypassMap) { + t = tMapLightness(t); // lightness correction + } + + if (_gamma !== 1) { t = pow(t, _gamma); } + + t = _padding[0] + (t * (1 - _padding[0] - _padding[1])); + + t = Math.min(1, Math.max(0, t)); + + const k = Math.floor(t * 10000); + + if (_useCache && _colorCache[k]) { + col = _colorCache[k]; + } else { + if (type(_colors) === 'array') { + //for i in [0.._pos.length-1] + for (let i=0; i<_pos.length; i++) { + const p = _pos[i]; + if (t <= p) { + col = _colors[i]; + break; + } + if ((t >= p) && (i === (_pos.length-1))) { + col = _colors[i]; + break; + } + if (t > p && t < _pos[i+1]) { + t = (t-p)/(_pos[i+1]-p); + col = chroma.interpolate(_colors[i], _colors[i+1], t, _mode); + break; + } + } + } else if (type(_colors) === 'function') { + col = _colors(t); + } + if (_useCache) { _colorCache[k] = col; } + } + return col; + }; + + var resetCache = () => _colorCache = {}; + + setColors(colors); + + // public interface + + const f = function(v) { + const c = chroma(getColor(v)); + if (_out && c[_out]) { return c[_out](); } else { return c; } + }; + + f.classes = function(classes) { + if (classes != null) { + if (type(classes) === 'array') { + _classes = classes; + _domain = [classes[0], classes[classes.length-1]]; + } else { + const d = chroma.analyze(_domain); + if (classes === 0) { + _classes = [d.min, d.max]; + } else { + _classes = chroma.limits(d, 'e', classes); + } + } + return f; + } + return _classes; + }; + + + f.domain = function(domain) { + if (!arguments.length) { + return _domain; + } + _min = domain[0]; + _max = domain[domain.length-1]; + _pos = []; + const k = _colors.length; + if ((domain.length === k) && (_min !== _max)) { + // update positions + for (let d of Array.from(domain)) { + _pos.push((d-_min) / (_max-_min)); + } + } else { + for (let c=0; c 2) { + // set domain map + const tOut = domain.map((d,i) => i/(domain.length-1)); + const tBreaks = domain.map(d => (d - _min) / (_max - _min)); + if (!tBreaks.every((val, i) => tOut[i] === val)) { + tMapDomain = (t) => { + if (t <= 0 || t >= 1) return t; + let i = 0; + while (t >= tBreaks[i+1]) i++; + const f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]); + const out = tOut[i] + f * (tOut[i+1] - tOut[i]) + return out; + } + } + + } + } + _domain = [_min, _max]; + return f; + }; + + f.mode = function(_m) { + if (!arguments.length) { + return _mode; + } + _mode = _m; + resetCache(); + return f; + }; + + f.range = function(colors, _pos) { + setColors(colors, _pos); + return f; + }; + + f.out = function(_o) { + _out = _o; + return f; + }; + + f.spread = function(val) { + if (!arguments.length) { + return _spread; + } + _spread = val; + return f; + }; + + f.correctLightness = function(v) { + if (v == null) { v = true; } + _correctLightness = v; + resetCache(); + if (_correctLightness) { + tMapLightness = function(t) { + const L0 = getColor(0, true).lab()[0]; + const L1 = getColor(1, true).lab()[0]; + const pol = L0 > L1; + let L_actual = getColor(t, true).lab()[0]; + const L_ideal = L0 + ((L1 - L0) * t); + let L_diff = L_actual - L_ideal; + let t0 = 0; + let t1 = 1; + let max_iter = 20; + while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) { + (function() { + if (pol) { L_diff *= -1; } + if (L_diff < 0) { + t0 = t; + t += (t1 - t) * 0.5; + } else { + t1 = t; + t += (t0 - t) * 0.5; + } + L_actual = getColor(t, true).lab()[0]; + return L_diff = L_actual - L_ideal; + })(); + } + return t; + }; + } else { + tMapLightness = t => t; + } + return f; + }; + + f.padding = function(p) { + if (p != null) { + if (type(p) === 'number') { + p = [p,p]; + } + _padding = p; + return f; + } else { + return _padding; + } + }; + + f.colors = function(numColors, out) { + // If no arguments are given, return the original colors that were provided + if (arguments.length < 2) { out = 'hex'; } + let result = []; + + if (arguments.length === 0) { + result = _colors.slice(0); + + } else if (numColors === 1) { + result = [f(0.5)]; + + } else if (numColors > 1) { + const dm = _domain[0]; + const dd = _domain[1] - dm; + result = __range__(0, numColors, false).map(i => f( dm + ((i/(numColors-1)) * dd) )); + + } else { // returns all colors based on the defined classes + colors = []; + let samples = []; + if (_classes && (_classes.length > 2)) { + for (let i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + samples.push((_classes[i-1]+_classes[i])*0.5); + } + } else { + samples = _domain; + } + result = samples.map(v => f(v)); + } + + if (chroma[out]) { + result = result.map(c => c[out]()); + } + return result; + }; + + f.cache = function(c) { + if (c != null) { + _useCache = c; + return f; + } else { + return _useCache; + } + }; + + f.gamma = function(g) { + if (g != null) { + _gamma = g; + return f; + } else { + return _gamma; + } + }; + + f.nodata = function(d) { + if (d != null) { + _nacol = chroma(d); + return f; + } else { + return _nacol; + } + }; + + return f; +}; + +function __range__(left, right, inclusive) { + let range = []; + let ascending = left < right; + let end = !inclusive ? right : ascending ? right + 1 : right - 1; + for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { + range.push(i); + } + return range; +} diff --git a/node_modules/chroma-js/src/interpolator/_hsx.js b/node_modules/chroma-js/src/interpolator/_hsx.js new file mode 100644 index 0000000..51891d0 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/_hsx.js @@ -0,0 +1,57 @@ +const Color = require('../Color'); + +module.exports = (col1, col2, f, m) => { + let xyz0, xyz1; + if (m === 'hsl') { + xyz0 = col1.hsl(); + xyz1 = col2.hsl(); + } else if (m === 'hsv') { + xyz0 = col1.hsv(); + xyz1 = col2.hsv(); + } else if (m === 'hcg') { + xyz0 = col1.hcg(); + xyz1 = col2.hcg(); + } else if (m === 'hsi') { + xyz0 = col1.hsi(); + xyz1 = col2.hsi(); + } else if (m === 'lch' || m === 'hcl') { + m = 'hcl'; + xyz0 = col1.hcl(); + xyz1 = col2.hcl(); + } else if (m === 'oklch') { + xyz0 = col1.oklch().reverse(); + xyz1 = col2.oklch().reverse(); + } + + let hue0, hue1, sat0, sat1, lbv0, lbv1; + if (m.substr(0, 1) === 'h' || m === 'oklch') { + [hue0, sat0, lbv0] = xyz0; + [hue1, sat1, lbv1] = xyz1; + } + + let sat, hue, lbv, dh; + + if (!isNaN(hue0) && !isNaN(hue1)) { + // both colors have hue + if (hue1 > hue0 && hue1 - hue0 > 180) { + dh = hue1 - (hue0 + 360); + } else if (hue1 < hue0 && hue0 - hue1 > 180) { + dh = hue1 + 360 - hue0; + } else { + dh = hue1 - hue0; + } + hue = hue0 + f * dh; + } else if (!isNaN(hue0)) { + hue = hue0; + if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') sat = sat0; + } else if (!isNaN(hue1)) { + hue = hue1; + if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') sat = sat1; + } else { + hue = Number.NaN; + } + + if (sat === undefined) sat = sat0 + f * (sat1 - sat0); + lbv = lbv0 + f * (lbv1 - lbv0); + return m === 'oklch' ? new Color([lbv, sat, hue], m) : new Color([hue, sat, lbv], m); +}; diff --git a/node_modules/chroma-js/src/interpolator/hcg.js b/node_modules/chroma-js/src/interpolator/hcg.js new file mode 100644 index 0000000..1308dfb --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/hcg.js @@ -0,0 +1,11 @@ +require('../io/hcg'); +const interpolate_hsx = require('./_hsx'); + +const hcg = (col1, col2, f) => { + return interpolate_hsx(col1, col2, f, 'hcg'); +} + +// register interpolator +require('./index').hcg = hcg; + +module.exports = hcg; diff --git a/node_modules/chroma-js/src/interpolator/hsi.js b/node_modules/chroma-js/src/interpolator/hsi.js new file mode 100644 index 0000000..162fab6 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/hsi.js @@ -0,0 +1,11 @@ +require('../io/hsi'); +const interpolate_hsx = require('./_hsx'); + +const hsi = (col1, col2, f) => { + return interpolate_hsx(col1, col2, f, 'hsi'); +} + +// register interpolator +require('./index').hsi = hsi; + +module.exports = hsi; diff --git a/node_modules/chroma-js/src/interpolator/hsl.js b/node_modules/chroma-js/src/interpolator/hsl.js new file mode 100644 index 0000000..02e5ed7 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/hsl.js @@ -0,0 +1,11 @@ +require('../io/hsl'); +const interpolate_hsx = require('./_hsx'); + +const hsl = (col1, col2, f) => { + return interpolate_hsx(col1, col2, f, 'hsl'); +} + +// register interpolator +require('./index').hsl = hsl; + +module.exports = hsl; diff --git a/node_modules/chroma-js/src/interpolator/hsv.js b/node_modules/chroma-js/src/interpolator/hsv.js new file mode 100644 index 0000000..c189c7e --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/hsv.js @@ -0,0 +1,11 @@ +require('../io/hsv'); +const interpolate_hsx = require('./_hsx'); + +const hsv = (col1, col2, f) => { + return interpolate_hsx(col1, col2, f, 'hsv'); +} + +// register interpolator +require('./index').hsv = hsv; + +module.exports = hsv; diff --git a/node_modules/chroma-js/src/interpolator/index.js b/node_modules/chroma-js/src/interpolator/index.js new file mode 100644 index 0000000..f053ebf --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/index.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/node_modules/chroma-js/src/interpolator/lab.js b/node_modules/chroma-js/src/interpolator/lab.js new file mode 100644 index 0000000..7a2177f --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/lab.js @@ -0,0 +1,19 @@ +require('../io/lab'); + +const Color = require('../Color'); + +const lab = (col1, col2, f) => { + const xyz0 = col1.lab(); + const xyz1 = col2.lab(); + return new Color( + xyz0[0] + f * (xyz1[0]-xyz0[0]), + xyz0[1] + f * (xyz1[1]-xyz0[1]), + xyz0[2] + f * (xyz1[2]-xyz0[2]), + 'lab' + ) +} + +// register interpolator +require('./index').lab = lab; + +module.exports = lab; diff --git a/node_modules/chroma-js/src/interpolator/lch.js b/node_modules/chroma-js/src/interpolator/lch.js new file mode 100644 index 0000000..eacf927 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/lch.js @@ -0,0 +1,12 @@ +require('../io/lch'); +const interpolate_hsx = require('./_hsx'); + +const lch = (col1, col2, f) => { + return interpolate_hsx(col1, col2, f, 'lch'); +} + +// register interpolator +require('./index').lch = lch; +require('./index').hcl = lch; + +module.exports = lch; diff --git a/node_modules/chroma-js/src/interpolator/lrgb.js b/node_modules/chroma-js/src/interpolator/lrgb.js new file mode 100644 index 0000000..b831222 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/lrgb.js @@ -0,0 +1,18 @@ +const Color = require('../Color'); +const {sqrt,pow} = Math; + +const lrgb = (col1, col2, f) => { + const [x1,y1,z1] = col1._rgb; + const [x2,y2,z2] = col2._rgb; + return new Color( + sqrt(pow(x1,2) * (1-f) + pow(x2,2) * f), + sqrt(pow(y1,2) * (1-f) + pow(y2,2) * f), + sqrt(pow(z1,2) * (1-f) + pow(z2,2) * f), + 'rgb' + ) +} + +// register interpolator +require('./index').lrgb = lrgb; + +module.exports = lrgb; diff --git a/node_modules/chroma-js/src/interpolator/num.js b/node_modules/chroma-js/src/interpolator/num.js new file mode 100644 index 0000000..2b3d983 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/num.js @@ -0,0 +1,14 @@ +require('../io/num'); + +const Color = require('../Color'); + +const num = (col1, col2, f) => { + const c1 = col1.num(); + const c2 = col2.num(); + return new Color(c1 + f * (c2-c1), 'num') +} + +// register interpolator +require('./index').num = num; + +module.exports = num; diff --git a/node_modules/chroma-js/src/interpolator/oklab.js b/node_modules/chroma-js/src/interpolator/oklab.js new file mode 100644 index 0000000..cb25300 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/oklab.js @@ -0,0 +1,19 @@ +require('../io/oklab'); + +const Color = require('../Color'); + +const oklab = (col1, col2, f) => { + const xyz0 = col1.oklab(); + const xyz1 = col2.oklab(); + return new Color( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'oklab' + ); +}; + +// register interpolator +require('./index').oklab = oklab; + +module.exports = oklab; diff --git a/node_modules/chroma-js/src/interpolator/oklch.js b/node_modules/chroma-js/src/interpolator/oklch.js new file mode 100644 index 0000000..a8737d1 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/oklch.js @@ -0,0 +1,11 @@ +require('../io/lch'); +const interpolate_hsx = require('./_hsx'); + +const oklch = (col1, col2, f) => { + return interpolate_hsx(col1, col2, f, 'oklch'); +}; + +// register interpolator +require('./index').oklch = oklch; + +module.exports = oklch; diff --git a/node_modules/chroma-js/src/interpolator/rgb.js b/node_modules/chroma-js/src/interpolator/rgb.js new file mode 100644 index 0000000..cdb8177 --- /dev/null +++ b/node_modules/chroma-js/src/interpolator/rgb.js @@ -0,0 +1,17 @@ +const Color = require('../Color'); + +const rgb = (col1, col2, f) => { + const xyz0 = col1._rgb; + const xyz1 = col2._rgb; + return new Color( + xyz0[0] + f * (xyz1[0]-xyz0[0]), + xyz0[1] + f * (xyz1[1]-xyz0[1]), + xyz0[2] + f * (xyz1[2]-xyz0[2]), + 'rgb' + ) +} + +// register interpolator +require('./index').rgb = rgb; + +module.exports = rgb; diff --git a/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js b/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js new file mode 100644 index 0000000..895e1c2 --- /dev/null +++ b/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js @@ -0,0 +1,16 @@ +const {unpack} = require('../../utils'); + +const cmyk2rgb = (...args) => { + args = unpack(args, 'cmyk'); + const [c,m,y,k] = args; + const alpha = args.length > 4 ? args[4] : 1; + if (k === 1) return [0,0,0,alpha]; + return [ + c >= 1 ? 0 : 255 * (1-c) * (1-k), // r + m >= 1 ? 0 : 255 * (1-m) * (1-k), // g + y >= 1 ? 0 : 255 * (1-y) * (1-k), // b + alpha + ]; +} + +module.exports = cmyk2rgb; diff --git a/node_modules/chroma-js/src/io/cmyk/index.js b/node_modules/chroma-js/src/io/cmyk/index.js new file mode 100644 index 0000000..3ee7fb9 --- /dev/null +++ b/node_modules/chroma-js/src/io/cmyk/index.js @@ -0,0 +1,24 @@ +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); +const {unpack, type} = require('../../utils'); + +const rgb2cmyk = require('./rgb2cmyk'); + +Color.prototype.cmyk = function() { + return rgb2cmyk(this._rgb); +}; + +chroma.cmyk = (...args) => new Color(...args, 'cmyk'); + +input.format.cmyk = require('./cmyk2rgb'); + +input.autodetect.push({ + p: 2, + test: (...args) => { + args = unpack(args, 'cmyk'); + if (type(args) === 'array' && args.length === 4) { + return 'cmyk'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js b/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js new file mode 100644 index 0000000..11a4924 --- /dev/null +++ b/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js @@ -0,0 +1,17 @@ +const {unpack} = require('../../utils'); +const {max} = Math; + +const rgb2cmyk = (...args) => { + let [r,g,b] = unpack(args, 'rgb'); + r = r / 255; + g = g / 255; + b = b / 255; + const k = 1 - max(r,max(g,b)); + const f = k < 1 ? 1 / (1-k) : 0; + const c = (1-r-k) * f; + const m = (1-g-k) * f; + const y = (1-b-k) * f; + return [c,m,y,k]; +} + +module.exports = rgb2cmyk; diff --git a/node_modules/chroma-js/src/io/css/css2rgb.js b/node_modules/chroma-js/src/io/css/css2rgb.js new file mode 100644 index 0000000..a0bc1bb --- /dev/null +++ b/node_modules/chroma-js/src/io/css/css2rgb.js @@ -0,0 +1,94 @@ +const hsl2rgb = require('../hsl/hsl2rgb'); +const input = require('../input'); + +const RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; +const RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; +const RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; +const RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; +const RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; +const RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + +const {round} = Math; + +const css2rgb = (css) => { + css = css.toLowerCase().trim(); + let m; + + if (input.format.named) { + try { + return input.format.named(css); + } catch (e) { + // eslint-disable-next-line + } + } + + // rgb(250,20,0) + if ((m = css.match(RE_RGB))) { + const rgb = m.slice(1,4); + for (let i=0; i<3; i++) { + rgb[i] = +rgb[i]; + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(250,20,0,0.4) + if ((m = css.match(RE_RGBA))) { + const rgb = m.slice(1,5); + for (let i=0; i<4; i++) { + rgb[i] = +rgb[i] + } + return rgb; + } + + // rgb(100%,0%,0%) + if ((m = css.match(RE_RGB_PCT))) { + const rgb = m.slice(1,4); + for (let i=0; i<3; i++) { + rgb[i] = round(rgb[i] * 2.55); + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(100%,0%,0%,0.4) + if ((m = css.match(RE_RGBA_PCT))) { + const rgb = m.slice(1,5); + for (let i=0; i<3; i++) { + rgb[i] = round(rgb[i] * 2.55); + } + rgb[3] = +rgb[3]; + return rgb; + } + + // hsl(0,100%,50%) + if ((m = css.match(RE_HSL))) { + const hsl = m.slice(1,4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + const rgb = hsl2rgb(hsl); + rgb[3] = 1; + return rgb; + } + + // hsla(0,100%,50%,0.5) + if ((m = css.match(RE_HSLA))) { + const hsl = m.slice(1,4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + const rgb = hsl2rgb(hsl); + rgb[3] = +m[4] // default alpha = 1 + return rgb; + } +} + +css2rgb.test = (s) => { + return RE_RGB.test(s) || + RE_RGBA.test(s) || + RE_RGB_PCT.test(s) || + RE_RGBA_PCT.test(s) || + RE_HSL.test(s) || + RE_HSLA.test(s); +} + +module.exports = css2rgb; diff --git a/node_modules/chroma-js/src/io/css/hsl2css.js b/node_modules/chroma-js/src/io/css/hsl2css.js new file mode 100644 index 0000000..2a3bfcf --- /dev/null +++ b/node_modules/chroma-js/src/io/css/hsl2css.js @@ -0,0 +1,28 @@ +const {unpack, last} = require('../../utils'); +const rnd = (a) => Math.round(a*100)/100; + +/* + * supported arguments: + * - hsl2css(h,s,l) + * - hsl2css(h,s,l,a) + * - hsl2css([h,s,l], mode) + * - hsl2css([h,s,l,a], mode) + * - hsl2css({h,s,l,a}, mode) + */ +const hsl2css = (...args) => { + const hsla = unpack(args, 'hsla'); + let mode = last(args) || 'lsa'; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1]*100) + '%'; + hsla[2] = rnd(hsla[2]*100) + '%'; + if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = 'hsla'; + } else { + hsla.length = 3; + } + return `${mode}(${hsla.join(',')})`; +} + +module.exports = hsl2css; + diff --git a/node_modules/chroma-js/src/io/css/index.js b/node_modules/chroma-js/src/io/css/index.js new file mode 100644 index 0000000..36e9ae4 --- /dev/null +++ b/node_modules/chroma-js/src/io/css/index.js @@ -0,0 +1,26 @@ +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); +const {type} = require('../../utils'); + +const rgb2css = require('./rgb2css'); +const css2rgb = require('./css2rgb'); + +Color.prototype.css = function(mode) { + return rgb2css(this._rgb, mode); +}; + +chroma.css = (...args) => new Color(...args, 'css'); + +input.format.css = css2rgb; + +input.autodetect.push({ + p: 5, + test: (h, ...rest) => { + if (!rest.length && type(h) === 'string' && css2rgb.test(h)) { + return 'css'; + } + } +}) + + diff --git a/node_modules/chroma-js/src/io/css/rgb2css.js b/node_modules/chroma-js/src/io/css/rgb2css.js new file mode 100644 index 0000000..9a49656 --- /dev/null +++ b/node_modules/chroma-js/src/io/css/rgb2css.js @@ -0,0 +1,30 @@ +const {unpack, last} = require('../../utils'); +const hsl2css = require('./hsl2css'); +const rgb2hsl = require('../hsl/rgb2hsl'); +const {round} = Math; + +/* + * supported arguments: + * - rgb2css(r,g,b) + * - rgb2css(r,g,b,a) + * - rgb2css([r,g,b], mode) + * - rgb2css([r,g,b,a], mode) + * - rgb2css({r,g,b,a}, mode) + */ +const rgb2css = (...args) => { + const rgba = unpack(args, 'rgba'); + let mode = last(args) || 'rgb'; + if (mode.substr(0,3) == 'hsl') { + return hsl2css(rgb2hsl(rgba), mode); + } + rgba[0] = round(rgba[0]); + rgba[1] = round(rgba[1]); + rgba[2] = round(rgba[2]); + if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = 'rgba'; + } + return `${mode}(${rgba.slice(0,mode==='rgb'?3:4).join(',')})`; +} + +module.exports = rgb2css; diff --git a/node_modules/chroma-js/src/io/delta-e.coffee b/node_modules/chroma-js/src/io/delta-e.coffee new file mode 100644 index 0000000..4106fd5 --- /dev/null +++ b/node_modules/chroma-js/src/io/delta-e.coffee @@ -0,0 +1,29 @@ +chroma.deltaE = (a, b, L=1, C=1) -> + # Delta E (CMC) + # see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html + a = new Color a if type(a) in ['string', 'number'] + b = new Color b if type(b) in ['string', 'number'] + [L1,a1,b1] = a.lab() + [L2,a2,b2] = b.lab() + c1 = sqrt(a1 * a1 + b1 * b1) + c2 = sqrt(a2 * a2 + b2 * b2) + sl = if L1 < 16.0 then 0.511 else (0.040975 * L1) / (1.0 + 0.01765 * L1) + sc = (0.0638 * c1) / (1.0 + 0.0131 * c1) + 0.638 + h1 = if c1 < 0.000001 then 0.0 else (atan2(b1, a1) * 180.0) / PI + h1 += 360 while h1 < 0 + h1 -= 360 while h1 >= 360 + t = if (h1 >= 164.0) && (h1 <= 345.0) then (0.56 + abs(0.2 * cos((PI * (h1 + 168.0)) / 180.0))) else (0.36 + abs(0.4 * cos((PI * (h1 + 35.0)) / 180.0))) + c4 = c1 * c1 * c1 * c1 + f = sqrt(c4 / (c4 + 1900.0)) + sh = sc * (f * t + 1.0 - f) + delL = L1 - L2 + delC = c1 - c2 + delA = a1 - a2 + delB = b1 - b2 + dH2 = delA * delA + delB * delB - delC * delC + v1 = delL / (L * sl) + v2 = delC / (C * sc) + v3 = sh + sqrt(v1 * v1 + v2 * v2 + (dH2 / (v3 * v3))) + + diff --git a/node_modules/chroma-js/src/io/distance.coffee b/node_modules/chroma-js/src/io/distance.coffee new file mode 100644 index 0000000..5b69b17 --- /dev/null +++ b/node_modules/chroma-js/src/io/distance.coffee @@ -0,0 +1,13 @@ +# simple Euclidean distance +chroma.distance = (a, b, mode='lab') -> + # Delta E (CIE 1976) + # see http://www.brucelindbloom.com/index.html?Equations.html + a = new Color a if type(a) in ['string', 'number'] + b = new Color b if type(b) in ['string', 'number'] + l1 = a.get mode + l2 = b.get mode + sum_sq = 0 + for i of l1 + d = (l1[i] || 0) - (l2[i] || 0) + sum_sq += d*d + Math.sqrt sum_sq diff --git a/node_modules/chroma-js/src/io/gl/index.js b/node_modules/chroma-js/src/io/gl/index.js new file mode 100644 index 0000000..a6c9643 --- /dev/null +++ b/node_modules/chroma-js/src/io/gl/index.js @@ -0,0 +1,19 @@ +const Color = require('../../Color'); +const chroma = require('../../chroma'); +const input = require('../input'); +const {unpack} = require('../../utils'); + +input.format.gl = (...args) => { + const rgb = unpack(args, 'rgba'); + rgb[0] *= 255; + rgb[1] *= 255; + rgb[2] *= 255; + return rgb; +} + +chroma.gl = (...args) => new Color(...args, 'gl'); + +Color.prototype.gl = function() { + const rgb = this._rgb; + return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]]; +}; diff --git a/node_modules/chroma-js/src/io/hcg/hcg2rgb.js b/node_modules/chroma-js/src/io/hcg/hcg2rgb.js new file mode 100644 index 0000000..ca81ebb --- /dev/null +++ b/node_modules/chroma-js/src/io/hcg/hcg2rgb.js @@ -0,0 +1,43 @@ +const {unpack} = require('../../utils'); +const {floor} = Math; + +/* + * this is basically just HSV with some minor tweaks + * + * hue.. [0..360] + * chroma .. [0..1] + * grayness .. [0..1] + */ + +const hcg2rgb = (...args) => { + args = unpack(args, 'hcg'); + let [h,c,_g] = args; + let r,g,b; + _g = _g * 255; + const _c = c * 255; + if (c === 0) { + r = g = b = _g + } else { + if (h === 360) h = 0; + if (h > 360) h -= 360; + if (h < 0) h += 360; + h /= 60; + const i = floor(h); + const f = h - i; + const p = _g * (1 - c); + const q = p + _c * (1 - f); + const t = p + _c * f; + const v = p + _c; + switch (i) { + case 0: [r,g,b] = [v, t, p]; break + case 1: [r,g,b] = [q, v, p]; break + case 2: [r,g,b] = [p, v, t]; break + case 3: [r,g,b] = [p, q, v]; break + case 4: [r,g,b] = [t, p, v]; break + case 5: [r,g,b] = [v, p, q]; break + } + } + return [r, g, b, args.length > 3 ? args[3] : 1]; +} + +module.exports = hcg2rgb; diff --git a/node_modules/chroma-js/src/io/hcg/index.js b/node_modules/chroma-js/src/io/hcg/index.js new file mode 100644 index 0000000..b7e81b7 --- /dev/null +++ b/node_modules/chroma-js/src/io/hcg/index.js @@ -0,0 +1,24 @@ +const {unpack, type} = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2hcg = require('./rgb2hcg'); + +Color.prototype.hcg = function() { + return rgb2hcg(this._rgb); +}; + +chroma.hcg = (...args) => new Color(...args, 'hcg'); + +input.format.hcg = require('./hcg2rgb'); + +input.autodetect.push({ + p: 1, + test: (...args) => { + args = unpack(args, 'hcg'); + if (type(args) === 'array' && args.length === 3) { + return 'hcg'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/hcg/rgb2hcg.js b/node_modules/chroma-js/src/io/hcg/rgb2hcg.js new file mode 100644 index 0000000..48927b1 --- /dev/null +++ b/node_modules/chroma-js/src/io/hcg/rgb2hcg.js @@ -0,0 +1,23 @@ +const {unpack} = require('../../utils'); + +const rgb2hcg = (...args) => { + const [r,g,b] = unpack(args, 'rgb'); + const min = Math.min(r, g, b); + const max = Math.max(r, g, b); + const delta = max - min; + const c = delta * 100 / 255; + const _g = min / (255 - delta) * 100; + let h; + if (delta === 0) { + h = Number.NaN + } else { + if (r === max) h = (g - b) / delta; + if (g === max) h = 2+(b - r) / delta; + if (b === max) h = 4+(r - g) / delta; + h *= 60; + if (h < 0) h += 360 + } + return [h, c, _g]; +} + +module.exports = rgb2hcg; diff --git a/node_modules/chroma-js/src/io/hex/hex2rgb.js b/node_modules/chroma-js/src/io/hex/hex2rgb.js new file mode 100644 index 0000000..91f06f5 --- /dev/null +++ b/node_modules/chroma-js/src/io/hex/hex2rgb.js @@ -0,0 +1,48 @@ +const RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; +const RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; + +const hex2rgb = (hex) => { + if (hex.match(RE_HEX)) { + // remove optional leading # + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + // expand short-notation to full six-digit + if (hex.length === 3) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; + } + const u = parseInt(hex, 16); + const r = u >> 16; + const g = u >> 8 & 0xFF; + const b = u & 0xFF; + return [r,g,b,1]; + } + + // match rgba hex format, eg #FF000077 + if (hex.match(RE_HEXA)) { + if (hex.length === 5 || hex.length === 9) { + // remove optional leading # + hex = hex.substr(1); + } + // expand short-notation to full eight-digit + if (hex.length === 4) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3]; + } + const u = parseInt(hex, 16); + const r = u >> 24 & 0xFF; + const g = u >> 16 & 0xFF; + const b = u >> 8 & 0xFF; + const a = Math.round((u & 0xFF) / 0xFF * 100) / 100; + return [r,g,b,a]; + } + + // we used to check for css colors here + // if _input.css? and rgb = _input.css hex + // return rgb + + throw new Error(`unknown hex color: ${hex}`); +} + +module.exports = hex2rgb; diff --git a/node_modules/chroma-js/src/io/hex/index.js b/node_modules/chroma-js/src/io/hex/index.js new file mode 100644 index 0000000..e771aca --- /dev/null +++ b/node_modules/chroma-js/src/io/hex/index.js @@ -0,0 +1,22 @@ +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const {type} = require('../../utils'); +const input = require('../input'); + +const rgb2hex = require('./rgb2hex'); + +Color.prototype.hex = function(mode) { + return rgb2hex(this._rgb, mode); +}; + +chroma.hex = (...args) => new Color(...args, 'hex'); + +input.format.hex = require('./hex2rgb'); +input.autodetect.push({ + p: 4, + test: (h, ...rest) => { + if (!rest.length && type(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) { + return 'hex'; + } + } +}) diff --git a/node_modules/chroma-js/src/io/hex/rgb2hex.js b/node_modules/chroma-js/src/io/hex/rgb2hex.js new file mode 100644 index 0000000..79c21d2 --- /dev/null +++ b/node_modules/chroma-js/src/io/hex/rgb2hex.js @@ -0,0 +1,26 @@ +const {unpack, last} = require('../../utils'); +const {round} = Math; + +const rgb2hex = (...args) => { + let [r,g,b,a] = unpack(args, 'rgba'); + let mode = last(args) || 'auto'; + if (a === undefined) a = 1; + if (mode === 'auto') { + mode = a < 1 ? 'rgba' : 'rgb'; + } + r = round(r); + g = round(g); + b = round(b); + const u = r << 16 | g << 8 | b; + let str = "000000" + u.toString(16); //#.toUpperCase(); + str = str.substr(str.length - 6); + let hxa = '0' + round(a * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case 'rgba': return `#${str}${hxa}`; + case 'argb': return `#${hxa}${str}`; + default: return `#${str}`; + } +} + +module.exports = rgb2hex; diff --git a/node_modules/chroma-js/src/io/hsi/hsi2rgb.js b/node_modules/chroma-js/src/io/hsi/hsi2rgb.js new file mode 100644 index 0000000..7a29789 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsi/hsi2rgb.js @@ -0,0 +1,45 @@ +const {unpack, limit, TWOPI, PITHIRD} = require('../../utils'); +const {cos} = Math; + +/* + * hue [0..360] + * saturation [0..1] + * intensity [0..1] + */ +const hsi2rgb = (...args) => { + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp + */ + args = unpack(args, 'hsi'); + let [h,s,i] = args; + let r,g,b; + + if (isNaN(h)) h = 0; + if (isNaN(s)) s = 0; + // normalize hue + if (h > 360) h -= 360; + if (h < 0) h += 360; + h /= 360; + if (h < 1/3) { + b = (1-s)/3; + r = (1+s*cos(TWOPI*h)/cos(PITHIRD-TWOPI*h))/3; + g = 1 - (b+r); + } else if (h < 2/3) { + h -= 1/3 + r = (1-s)/3 + g = (1+s*cos(TWOPI*h)/cos(PITHIRD-TWOPI*h))/3 + b = 1 - (r+g) + } else { + h -= 2/3 + g = (1-s)/3 + b = (1+s*cos(TWOPI*h)/cos(PITHIRD-TWOPI*h))/3 + r = 1 - (g+b) + } + r = limit(i*r*3); + g = limit(i*g*3); + b = limit(i*b*3); + return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1]; +} + +module.exports = hsi2rgb; diff --git a/node_modules/chroma-js/src/io/hsi/index.js b/node_modules/chroma-js/src/io/hsi/index.js new file mode 100644 index 0000000..ba31d19 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsi/index.js @@ -0,0 +1,24 @@ +const {unpack, type} = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2hsi = require('./rgb2hsi'); + +Color.prototype.hsi = function() { + return rgb2hsi(this._rgb); +}; + +chroma.hsi = (...args) => new Color(...args, 'hsi'); + +input.format.hsi = require('./hsi2rgb'); + +input.autodetect.push({ + p: 2, + test: (...args) => { + args = unpack(args, 'hsi'); + if (type(args) === 'array' && args.length === 3) { + return 'hsi'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/hsi/rgb2hsi.js b/node_modules/chroma-js/src/io/hsi/rgb2hsi.js new file mode 100644 index 0000000..86d5206 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsi/rgb2hsi.js @@ -0,0 +1,32 @@ +const {unpack,TWOPI} = require('../../utils'); +const {min,sqrt,acos} = Math; + +const rgb2hsi = (...args) => { + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp + */ + let [r,g,b] = unpack(args, 'rgb'); + r /= 255; + g /= 255; + b /= 255; + let h; + const min_ = min(r,g,b); + const i = (r+g+b) / 3; + const s = i > 0 ? 1 - min_/i : 0; + if (s === 0) { + h = NaN; + } else { + h = ((r-g)+(r-b)) / 2; + h /= sqrt((r-g)*(r-g) + (r-b)*(g-b)); + h = acos(h); + if (b > g) { + h = TWOPI - h; + } + h /= TWOPI; + } + return [h*360,s,i]; +} + +module.exports = rgb2hsi; + diff --git a/node_modules/chroma-js/src/io/hsl/hsl2rgb.js b/node_modules/chroma-js/src/io/hsl/hsl2rgb.js new file mode 100644 index 0000000..8c846c8 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsl/hsl2rgb.js @@ -0,0 +1,40 @@ +const {unpack} = require('../../utils'); +const {round} = Math; + +const hsl2rgb = (...args) => { + args = unpack(args, 'hsl'); + const [h,s,l] = args; + let r,g,b; + if (s === 0) { + r = g = b = l*255; + } else { + const t3 = [0,0,0]; + const c = [0,0,0]; + const t2 = l < 0.5 ? l * (1+s) : l+s-l*s; + const t1 = 2 * l - t2; + const h_ = h / 360; + t3[0] = h_ + 1/3; + t3[1] = h_; + t3[2] = h_ - 1/3; + for (let i=0; i<3; i++) { + if (t3[i] < 0) t3[i] += 1; + if (t3[i] > 1) t3[i] -= 1; + if (6 * t3[i] < 1) + c[i] = t1 + (t2 - t1) * 6 * t3[i]; + else if (2 * t3[i] < 1) + c[i] = t2; + else if (3 * t3[i] < 2) + c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; + else + c[i] = t1; + } + [r,g,b] = [round(c[0]*255),round(c[1]*255),round(c[2]*255)]; + } + if (args.length > 3) { + // keep alpha channel + return [r,g,b,args[3]]; + } + return [r,g,b,1]; +} + +module.exports = hsl2rgb; diff --git a/node_modules/chroma-js/src/io/hsl/index.js b/node_modules/chroma-js/src/io/hsl/index.js new file mode 100644 index 0000000..a7f5ee4 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsl/index.js @@ -0,0 +1,24 @@ +const {unpack, type} = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2hsl = require('./rgb2hsl'); + +Color.prototype.hsl = function() { + return rgb2hsl(this._rgb); +}; + +chroma.hsl = (...args) => new Color(...args, 'hsl'); + +input.format.hsl = require('./hsl2rgb'); + +input.autodetect.push({ + p: 2, + test: (...args) => { + args = unpack(args, 'hsl'); + if (type(args) === 'array' && args.length === 3) { + return 'hsl'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/hsl/rgb2hsl.js b/node_modules/chroma-js/src/io/hsl/rgb2hsl.js new file mode 100644 index 0000000..0c774d3 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsl/rgb2hsl.js @@ -0,0 +1,42 @@ +const {unpack} = require('../../utils'); + +/* + * supported arguments: + * - rgb2hsl(r,g,b) + * - rgb2hsl(r,g,b,a) + * - rgb2hsl([r,g,b]) + * - rgb2hsl([r,g,b,a]) + * - rgb2hsl({r,g,b,a}) + */ +const rgb2hsl = (...args) => { + args = unpack(args, 'rgba'); + let [r,g,b] = args; + + r /= 255; + g /= 255; + b /= 255; + + const min = Math.min(r, g, b); + const max = Math.max(r, g, b); + + const l = (max + min) / 2; + let s, h; + + if (max === min){ + s = 0; + h = Number.NaN; + } else { + s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min); + } + + if (r == max) h = (g - b) / (max - min); + else if (g == max) h = 2 + (b - r) / (max - min); + else if (b == max) h = 4 + (r - g) / (max - min); + + h *= 60; + if (h < 0) h += 360; + if (args.length>3 && args[3]!==undefined) return [h,s,l,args[3]]; + return [h,s,l]; +} + +module.exports = rgb2hsl; diff --git a/node_modules/chroma-js/src/io/hsv/hsv2rgb.js b/node_modules/chroma-js/src/io/hsv/hsv2rgb.js new file mode 100644 index 0000000..9102a7e --- /dev/null +++ b/node_modules/chroma-js/src/io/hsv/hsv2rgb.js @@ -0,0 +1,36 @@ +const {unpack} = require('../../utils'); +const {floor} = Math; + +const hsv2rgb = (...args) => { + args = unpack(args, 'hsv'); + let [h,s,v] = args; + let r,g,b; + v *= 255; + if (s === 0) { + r = g = b = v; + } else { + if (h === 360) h = 0; + if (h > 360) h -= 360; + if (h < 0) h += 360; + h /= 60; + + const i = floor(h); + const f = h - i; + const p = v * (1 - s); + const q = v * (1 - s * f); + const t = v * (1 - s * (1 - f)); + + switch (i) { + case 0: [r,g,b] = [v, t, p]; break + case 1: [r,g,b] = [q, v, p]; break + case 2: [r,g,b] = [p, v, t]; break + case 3: [r,g,b] = [p, q, v]; break + case 4: [r,g,b] = [t, p, v]; break + case 5: [r,g,b] = [v, p, q]; break + } + } + return [r,g,b,args.length > 3?args[3]:1]; +} + +module.exports = hsv2rgb; + diff --git a/node_modules/chroma-js/src/io/hsv/index.js b/node_modules/chroma-js/src/io/hsv/index.js new file mode 100644 index 0000000..740948a --- /dev/null +++ b/node_modules/chroma-js/src/io/hsv/index.js @@ -0,0 +1,24 @@ +const {unpack, type} = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2hsv = require('./rgb2hsv'); + +Color.prototype.hsv = function() { + return rgb2hsv(this._rgb); +}; + +chroma.hsv = (...args) => new Color(...args, 'hsv'); + +input.format.hsv = require('./hsv2rgb'); + +input.autodetect.push({ + p: 2, + test: (...args) => { + args = unpack(args, 'hsv'); + if (type(args) === 'array' && args.length === 3) { + return 'hsv'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/hsv/rgb2hsv.js b/node_modules/chroma-js/src/io/hsv/rgb2hsv.js new file mode 100644 index 0000000..0cbde26 --- /dev/null +++ b/node_modules/chroma-js/src/io/hsv/rgb2hsv.js @@ -0,0 +1,32 @@ +const {unpack} = require('../../utils'); +const {min,max} = Math; + +/* + * supported arguments: + * - rgb2hsv(r,g,b) + * - rgb2hsv([r,g,b]) + * - rgb2hsv({r,g,b}) + */ +const rgb2hsl = (...args) => { + args = unpack(args, 'rgb'); + let [r,g,b] = args; + const min_ = min(r, g, b); + const max_ = max(r, g, b); + const delta = max_ - min_; + let h,s,v; + v = max_ / 255.0; + if (max_ === 0) { + h = Number.NaN; + s = 0; + } else { + s = delta / max_; + if (r === max_) h = (g - b) / delta; + if (g === max_) h = 2+(b - r) / delta; + if (b === max_) h = 4+(r - g) / delta; + h *= 60; + if (h < 0) h += 360; + } + return [h, s, v] +} + +module.exports = rgb2hsl; diff --git a/node_modules/chroma-js/src/io/input.js b/node_modules/chroma-js/src/io/input.js new file mode 100644 index 0000000..6e722ab --- /dev/null +++ b/node_modules/chroma-js/src/io/input.js @@ -0,0 +1,4 @@ +module.exports = { + format: {}, + autodetect: [] +} diff --git a/node_modules/chroma-js/src/io/lab/index.js b/node_modules/chroma-js/src/io/lab/index.js new file mode 100644 index 0000000..a9bc0bb --- /dev/null +++ b/node_modules/chroma-js/src/io/lab/index.js @@ -0,0 +1,24 @@ +const {unpack, type} = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2lab = require('./rgb2lab'); + +Color.prototype.lab = function() { + return rgb2lab(this._rgb); +}; + +chroma.lab = (...args) => new Color(...args, 'lab'); + +input.format.lab = require('./lab2rgb'); + +input.autodetect.push({ + p: 2, + test: (...args) => { + args = unpack(args, 'lab'); + if (type(args) === 'array' && args.length === 3) { + return 'lab'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/lab/lab-constants.js b/node_modules/chroma-js/src/io/lab/lab-constants.js new file mode 100644 index 0000000..fbd3b4e --- /dev/null +++ b/node_modules/chroma-js/src/io/lab/lab-constants.js @@ -0,0 +1,16 @@ + +module.exports = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + + // D65 standard referent + Xn: 0.950470, + Yn: 1, + Zn: 1.088830, + + t0: 0.137931034, // 4 / 29 + t1: 0.206896552, // 6 / 29 + t2: 0.12841855, // 3 * t1 * t1 + t3: 0.008856452, // t1 * t1 * t1 +} + diff --git a/node_modules/chroma-js/src/io/lab/lab2rgb.js b/node_modules/chroma-js/src/io/lab/lab2rgb.js new file mode 100644 index 0000000..70a7133 --- /dev/null +++ b/node_modules/chroma-js/src/io/lab/lab2rgb.js @@ -0,0 +1,38 @@ +const LAB_CONSTANTS = require('./lab-constants'); +const {unpack} = require('../../utils'); +const {pow} = Math; + +/* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ +const lab2rgb = (...args) => { + args = unpack(args, 'lab'); + const [l,a,b] = args; + let x,y,z, r,g,b_; + + y = (l + 16) / 116; + x = isNaN(a) ? y : y + a / 500; + z = isNaN(b) ? y : y - b / 200; + + y = LAB_CONSTANTS.Yn * lab_xyz(y); + x = LAB_CONSTANTS.Xn * lab_xyz(x); + z = LAB_CONSTANTS.Zn * lab_xyz(z); + + r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB + g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z); + b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); + + return [r,g,b_,args.length > 3 ? args[3] : 1]; +}; + +const xyz_rgb = (r) => { + return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow(r, 1 / 2.4) - 0.055) +} + +const lab_xyz = (t) => { + return t > LAB_CONSTANTS.t1 ? t * t * t : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0) +} + +module.exports = lab2rgb; diff --git a/node_modules/chroma-js/src/io/lab/rgb2lab.js b/node_modules/chroma-js/src/io/lab/rgb2lab.js new file mode 100644 index 0000000..891f169 --- /dev/null +++ b/node_modules/chroma-js/src/io/lab/rgb2lab.js @@ -0,0 +1,32 @@ +const LAB_CONSTANTS = require('./lab-constants'); +const {unpack} = require('../../utils'); +const {pow} = Math; + +const rgb2lab = (...args) => { + const [r,g,b] = unpack(args, 'rgb'); + const [x,y,z] = rgb2xyz(r,g,b); + const l = 116 * y - 16; + return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; +} + +const rgb_xyz = (r) => { + if ((r /= 255) <= 0.04045) return r / 12.92; + return pow((r + 0.055) / 1.055, 2.4); +} + +const xyz_lab = (t) => { + if (t > LAB_CONSTANTS.t3) return pow(t, 1 / 3); + return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0; +} + +const rgb2xyz = (r,g,b) => { + r = rgb_xyz(r); + g = rgb_xyz(g); + b = rgb_xyz(b); + const x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn); + const y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS.Yn); + const z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn); + return [x,y,z]; +} + +module.exports = rgb2lab; diff --git a/node_modules/chroma-js/src/io/lch/hcl2rgb.js b/node_modules/chroma-js/src/io/lch/hcl2rgb.js new file mode 100644 index 0000000..87de20c --- /dev/null +++ b/node_modules/chroma-js/src/io/lch/hcl2rgb.js @@ -0,0 +1,9 @@ +const {unpack} = require('../../utils'); +const lch2rgb = require('./lch2rgb'); + +const hcl2rgb = (...args) => { + const hcl = unpack(args, 'hcl').reverse(); + return lch2rgb(...hcl); +} + +module.exports = hcl2rgb; diff --git a/node_modules/chroma-js/src/io/lch/index.js b/node_modules/chroma-js/src/io/lch/index.js new file mode 100644 index 0000000..b8aa634 --- /dev/null +++ b/node_modules/chroma-js/src/io/lch/index.js @@ -0,0 +1,26 @@ +const {unpack, type} = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2lch = require('./rgb2lch'); + +Color.prototype.lch = function() { return rgb2lch(this._rgb); }; +Color.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); }; + +chroma.lch = (...args) => new Color(...args, 'lch'); +chroma.hcl = (...args) => new Color(...args, 'hcl'); + +input.format.lch = require('./lch2rgb'); +input.format.hcl = require('./hcl2rgb'); + +['lch','hcl'].forEach(m => input.autodetect.push({ + p: 2, + test: (...args) => { + args = unpack(args, m); + if (type(args) === 'array' && args.length === 3) { + return m; + } + } +})); + diff --git a/node_modules/chroma-js/src/io/lch/lab2lch.js b/node_modules/chroma-js/src/io/lch/lab2lch.js new file mode 100644 index 0000000..691fa1b --- /dev/null +++ b/node_modules/chroma-js/src/io/lch/lab2lch.js @@ -0,0 +1,12 @@ +const {unpack, RAD2DEG} = require('../../utils'); +const {sqrt,atan2,round} = Math; + +const lab2lch = (...args) => { + const [l, a, b] = unpack(args, 'lab'); + const c = sqrt(a * a + b * b); + let h = (atan2(b, a) * RAD2DEG + 360) % 360; + if (round(c*10000) === 0) h = Number.NaN; + return [l, c, h]; +} + +module.exports = lab2lch; diff --git a/node_modules/chroma-js/src/io/lch/lch2lab.js b/node_modules/chroma-js/src/io/lch/lch2lab.js new file mode 100644 index 0000000..1a6fe4f --- /dev/null +++ b/node_modules/chroma-js/src/io/lch/lch2lab.js @@ -0,0 +1,18 @@ +const {unpack, DEG2RAD} = require('../../utils'); +const {sin, cos} = Math; + +const lch2lab = (...args) => { + /* + Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel. + These formulas were invented by David Dalrymple to obtain maximum contrast without going + out of gamut if the parameters are in the range 0-1. + + A saturation multiplier was added by Gregor Aisch + */ + let [l,c,h] = unpack(args, 'lch'); + if (isNaN(h)) h = 0; + h = h * DEG2RAD; + return [l, cos(h) * c, sin(h) * c] +} + +module.exports = lch2lab; diff --git a/node_modules/chroma-js/src/io/lch/lch2rgb.js b/node_modules/chroma-js/src/io/lch/lch2rgb.js new file mode 100644 index 0000000..b04ffe4 --- /dev/null +++ b/node_modules/chroma-js/src/io/lch/lch2rgb.js @@ -0,0 +1,13 @@ +const {unpack} = require('../../utils'); +const lch2lab = require('./lch2lab'); +const lab2rgb = require('../lab/lab2rgb'); + +const lch2rgb = (...args) => { + args = unpack(args, 'lch'); + const [l,c,h] = args; + const [L,a,b_] = lch2lab (l,c,h); + const [r,g,b] = lab2rgb (L,a,b_); + return [r, g, b, args.length > 3 ? args[3] : 1]; +} + +module.exports = lch2rgb; diff --git a/node_modules/chroma-js/src/io/lch/rgb2lch.js b/node_modules/chroma-js/src/io/lch/rgb2lch.js new file mode 100644 index 0000000..77e3ec0 --- /dev/null +++ b/node_modules/chroma-js/src/io/lch/rgb2lch.js @@ -0,0 +1,11 @@ +const {unpack} = require('../../utils'); +const rgb2lab = require('../lab/rgb2lab'); +const lab2lch = require('./lab2lch'); + +const rgb2lch = (...args) => { + const [r,g,b] = unpack(args, 'rgb'); + const [l,a,b_] = rgb2lab(r,g,b); + return lab2lch(l,a,b_); +} + +module.exports = rgb2lch; diff --git a/node_modules/chroma-js/src/io/named/index.js b/node_modules/chroma-js/src/io/named/index.js new file mode 100644 index 0000000..56a8907 --- /dev/null +++ b/node_modules/chroma-js/src/io/named/index.js @@ -0,0 +1,30 @@ +const Color = require('../../Color'); +const input = require('../input'); +const {type} = require('../../utils'); + +const w3cx11 = require('../../colors/w3cx11'); +const hex2rgb = require('../hex/hex2rgb'); +const rgb2hex = require('../hex/rgb2hex'); + +Color.prototype.name = function() { + const hex = rgb2hex(this._rgb, 'rgb'); + for (let n of Object.keys(w3cx11)) { + if (w3cx11[n] === hex) return n.toLowerCase(); + } + return hex; +}; + +input.format.named = (name) => { + name = name.toLowerCase(); + if (w3cx11[name]) return hex2rgb(w3cx11[name]); + throw new Error('unknown color name: '+name); +} + +input.autodetect.push({ + p: 5, + test: (h, ...rest) => { + if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) { + return 'named'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/num/index.js b/node_modules/chroma-js/src/io/num/index.js new file mode 100644 index 0000000..70e06e1 --- /dev/null +++ b/node_modules/chroma-js/src/io/num/index.js @@ -0,0 +1,24 @@ +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); +const {type} = require('../../utils'); + +const rgb2num = require('./rgb2num'); + +Color.prototype.num = function() { + return rgb2num(this._rgb); +}; + +chroma.num = (...args) => new Color(...args, 'num'); + +input.format.num = require('./num2rgb'); + +input.autodetect.push({ + p: 5, + test: (...args) => { + if (args.length === 1 && type(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) { + return 'num'; + } + } +}); + diff --git a/node_modules/chroma-js/src/io/num/num2rgb.js b/node_modules/chroma-js/src/io/num/num2rgb.js new file mode 100644 index 0000000..d71dc4e --- /dev/null +++ b/node_modules/chroma-js/src/io/num/num2rgb.js @@ -0,0 +1,13 @@ +const {type} = require('../../utils'); + +const num2rgb = (num) => { + if (type(num) == "number" && num >= 0 && num <= 0xFFFFFF) { + const r = num >> 16; + const g = (num >> 8) & 0xFF; + const b = num & 0xFF; + return [r,g,b,1]; + } + throw new Error("unknown num color: "+num); +} + +module.exports = num2rgb; diff --git a/node_modules/chroma-js/src/io/num/rgb2num.js b/node_modules/chroma-js/src/io/num/rgb2num.js new file mode 100644 index 0000000..45d70ea --- /dev/null +++ b/node_modules/chroma-js/src/io/num/rgb2num.js @@ -0,0 +1,8 @@ +const {unpack} = require('../../utils'); + +const rgb2num = (...args) => { + const [r,g,b] = unpack(args, 'rgb'); + return (r << 16) + (g << 8) + b; +} + +module.exports = rgb2num; diff --git a/node_modules/chroma-js/src/io/oklab/index.js b/node_modules/chroma-js/src/io/oklab/index.js new file mode 100644 index 0000000..b8f8568 --- /dev/null +++ b/node_modules/chroma-js/src/io/oklab/index.js @@ -0,0 +1,24 @@ +const { unpack, type } = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2oklab = require('./rgb2oklab'); + +Color.prototype.oklab = function () { + return rgb2oklab(this._rgb); +}; + +chroma.oklab = (...args) => new Color(...args, 'oklab'); + +input.format.oklab = require('./oklab2rgb'); + +input.autodetect.push({ + p: 3, + test: (...args) => { + args = unpack(args, 'oklab'); + if (type(args) === 'array' && args.length === 3) { + return 'oklab'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/oklab/oklab2rgb.js b/node_modules/chroma-js/src/io/oklab/oklab2rgb.js new file mode 100644 index 0000000..defe9c6 --- /dev/null +++ b/node_modules/chroma-js/src/io/oklab/oklab2rgb.js @@ -0,0 +1,33 @@ +const { unpack } = require('../../utils'); +const { pow, sign } = Math; + +/* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ +const oklab2rgb = (...args) => { + args = unpack(args, 'lab'); + const [L, a, b] = args; + + const l = pow(L + 0.3963377774 * a + 0.2158037573 * b, 3); + const m = pow(L - 0.1055613458 * a - 0.0638541728 * b, 3); + const s = pow(L - 0.0894841775 * a - 1.291485548 * b, 3); + + return [ + 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), + 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), + 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), + args.length > 3 ? args[3] : 1 + ]; +}; + +module.exports = oklab2rgb; + +function lrgb2rgb(c) { + const abs = Math.abs(c); + if (abs > 0.0031308) { + return (sign(c) || 1) * (1.055 * pow(abs, 1 / 2.4) - 0.055); + } + return c * 12.92; +} diff --git a/node_modules/chroma-js/src/io/oklab/rgb2oklab.js b/node_modules/chroma-js/src/io/oklab/rgb2oklab.js new file mode 100644 index 0000000..6d9fa9b --- /dev/null +++ b/node_modules/chroma-js/src/io/oklab/rgb2oklab.js @@ -0,0 +1,28 @@ +const { unpack } = require('../../utils'); +const { cbrt, pow, sign } = Math; + +const rgb2oklab = (...args) => { + // OKLab color space implementation taken from + // https://bottosson.github.io/posts/oklab/ + const [r, g, b] = unpack(args, 'rgb'); + const [lr, lg, lb] = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)]; + const l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); + const m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); + const s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); + + return [ + 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, + 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, + 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s + ]; +}; + +module.exports = rgb2oklab; + +function rgb2lrgb(c) { + const abs = Math.abs(c); + if (abs < 0.04045) { + return c / 12.92; + } + return (sign(c) || 1) * pow((abs + 0.055) / 1.055, 2.4); +} diff --git a/node_modules/chroma-js/src/io/oklch/index.js b/node_modules/chroma-js/src/io/oklch/index.js new file mode 100644 index 0000000..2bee75e --- /dev/null +++ b/node_modules/chroma-js/src/io/oklch/index.js @@ -0,0 +1,24 @@ +const { unpack, type } = require('../../utils'); +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2oklch = require('./rgb2oklch'); + +Color.prototype.oklch = function () { + return rgb2oklch(this._rgb); +}; + +chroma.oklch = (...args) => new Color(...args, 'oklch'); + +input.format.oklch = require('./oklch2rgb'); + +input.autodetect.push({ + p: 3, + test: (...args) => { + args = unpack(args, 'oklch'); + if (type(args) === 'array' && args.length === 3) { + return 'oklch'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/oklch/oklch2rgb.js b/node_modules/chroma-js/src/io/oklch/oklch2rgb.js new file mode 100644 index 0000000..d8b2a2e --- /dev/null +++ b/node_modules/chroma-js/src/io/oklch/oklch2rgb.js @@ -0,0 +1,13 @@ +const { unpack } = require('../../utils'); +const lch2lab = require('../lch/lch2lab'); +const oklab2rgb = require('../oklab/oklab2rgb'); + +const oklch2rgb = (...args) => { + args = unpack(args, 'lch'); + const [l, c, h] = args; + const [L, a, b_] = lch2lab(l, c, h); + const [r, g, b] = oklab2rgb(L, a, b_); + return [r, g, b, args.length > 3 ? args[3] : 1]; +}; + +module.exports = oklch2rgb; diff --git a/node_modules/chroma-js/src/io/oklch/rgb2oklch.js b/node_modules/chroma-js/src/io/oklch/rgb2oklch.js new file mode 100644 index 0000000..e67528b --- /dev/null +++ b/node_modules/chroma-js/src/io/oklch/rgb2oklch.js @@ -0,0 +1,11 @@ +const { unpack } = require('../../utils'); +const rgb2oklab = require('../oklab/rgb2oklab'); +const lab2lch = require('../lch/lab2lch'); + +const rgb2oklch = (...args) => { + const [r, g, b] = unpack(args, 'rgb'); + const [l, a, b_] = rgb2oklab(r, g, b); + return lab2lch(l, a, b_); +}; + +module.exports = rgb2oklch; diff --git a/node_modules/chroma-js/src/io/rgb/index.js b/node_modules/chroma-js/src/io/rgb/index.js new file mode 100644 index 0000000..c2a7e3e --- /dev/null +++ b/node_modules/chroma-js/src/io/rgb/index.js @@ -0,0 +1,35 @@ +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); +const {unpack, type} = require('../../utils'); +const {round} = Math; + +Color.prototype.rgb = function(rnd=true) { + if (rnd === false) return this._rgb.slice(0,3); + return this._rgb.slice(0,3).map(round); +} + +Color.prototype.rgba = function(rnd=true) { + return this._rgb.slice(0,4).map((v,i) => { + return i<3 ? (rnd === false ? v : round(v)) : v; + }); +}; + +chroma.rgb = (...args) => new Color(...args, 'rgb'); + +input.format.rgb = (...args) => { + const rgba = unpack(args, 'rgba'); + if (rgba[3] === undefined) rgba[3] = 1; + return rgba; +}; + +input.autodetect.push({ + p: 3, + test: (...args) => { + args = unpack(args, 'rgba'); + if (type(args) === 'array' && (args.length === 3 || + args.length === 4 && type(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) { + return 'rgb'; + } + } +}); diff --git a/node_modules/chroma-js/src/io/temp/index.js b/node_modules/chroma-js/src/io/temp/index.js new file mode 100644 index 0000000..ab6dcec --- /dev/null +++ b/node_modules/chroma-js/src/io/temp/index.js @@ -0,0 +1,21 @@ +const chroma = require('../../chroma'); +const Color = require('../../Color'); +const input = require('../input'); + +const rgb2temperature = require('./rgb2temperature'); + +Color.prototype.temp = +Color.prototype.kelvin = +Color.prototype.temperature = function() { + return rgb2temperature(this._rgb); +}; + +chroma.temp = +chroma.kelvin = +chroma.temperature = (...args) => new Color(...args, 'temp'); + +input.format.temp = +input.format.kelvin = +input.format.temperature = require('./temperature2rgb'); + + diff --git a/node_modules/chroma-js/src/io/temp/rgb2temperature.js b/node_modules/chroma-js/src/io/temp/rgb2temperature.js new file mode 100644 index 0000000..a648c72 --- /dev/null +++ b/node_modules/chroma-js/src/io/temp/rgb2temperature.js @@ -0,0 +1,29 @@ +/* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + **/ + +const temperature2rgb = require('./temperature2rgb'); +const {unpack} = require('../../utils'); +const {round} = Math; + +const rgb2temperature = (...args) => { + const rgb = unpack(args, 'rgb'); + const r = rgb[0], b = rgb[2]; + let minTemp = 1000; + let maxTemp = 40000; + const eps = 0.4; + let temp; + while (maxTemp - minTemp > eps) { + temp = (maxTemp + minTemp) * 0.5; + const rgb = temperature2rgb(temp); + if ((rgb[2] / rgb[0]) >= (b / r)) { + maxTemp = temp; + } else { + minTemp = temp; + } + } + return round(temp); +} + +module.exports = rgb2temperature; diff --git a/node_modules/chroma-js/src/io/temp/temperature2rgb.js b/node_modules/chroma-js/src/io/temp/temperature2rgb.js new file mode 100644 index 0000000..0c5c6ea --- /dev/null +++ b/node_modules/chroma-js/src/io/temp/temperature2rgb.js @@ -0,0 +1,23 @@ +/* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + */ + +const {log} = Math; + +const temperature2rgb = (kelvin) => { + const temp = kelvin / 100; + let r,g,b; + if (temp < 66) { + r = 255 + g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g) + b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b) + } else { + r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r) + g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g) + b = 255 + } + return [r,g,b,1]; +} + +module.exports = temperature2rgb; diff --git a/node_modules/chroma-js/src/ops/alpha.js b/node_modules/chroma-js/src/ops/alpha.js new file mode 100644 index 0000000..1c8685e --- /dev/null +++ b/node_modules/chroma-js/src/ops/alpha.js @@ -0,0 +1,13 @@ +const Color = require('../Color'); +const {type} = require('../utils'); + +Color.prototype.alpha = function(a, mutate=false) { + if (a !== undefined && type(a) === 'number') { + if (mutate) { + this._rgb[3] = a; + return this; + } + return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); + } + return this._rgb[3]; +} diff --git a/node_modules/chroma-js/src/ops/clipped.js b/node_modules/chroma-js/src/ops/clipped.js new file mode 100644 index 0000000..3ce5e24 --- /dev/null +++ b/node_modules/chroma-js/src/ops/clipped.js @@ -0,0 +1,5 @@ +const Color = require('../Color'); + +Color.prototype.clipped = function() { + return this._rgb._clipped || false; +} diff --git a/node_modules/chroma-js/src/ops/darken.js b/node_modules/chroma-js/src/ops/darken.js new file mode 100644 index 0000000..bc7ecf5 --- /dev/null +++ b/node_modules/chroma-js/src/ops/darken.js @@ -0,0 +1,17 @@ +require('../io/lab'); +const Color = require('../Color'); +const LAB_CONSTANTS = require('../io/lab/lab-constants'); + +Color.prototype.darken = function(amount=1) { + const me = this; + const lab = me.lab(); + lab[0] -= LAB_CONSTANTS.Kn * amount; + return new Color(lab, 'lab').alpha(me.alpha(), true); +} + +Color.prototype.brighten = function(amount=1) { + return this.darken(-amount); +} + +Color.prototype.darker = Color.prototype.darken; +Color.prototype.brighter = Color.prototype.brighten; diff --git a/node_modules/chroma-js/src/ops/get.js b/node_modules/chroma-js/src/ops/get.js new file mode 100644 index 0000000..4f8f264 --- /dev/null +++ b/node_modules/chroma-js/src/ops/get.js @@ -0,0 +1,13 @@ +const Color = require('../Color'); + +Color.prototype.get = function (mc) { + const [mode, channel] = mc.split('.'); + const src = this[mode](); + if (channel) { + const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) return src[i]; + throw new Error(`unknown channel ${channel} in mode ${mode}`); + } else { + return src; + } +}; diff --git a/node_modules/chroma-js/src/ops/luminance.js b/node_modules/chroma-js/src/ops/luminance.js new file mode 100644 index 0000000..e394ac1 --- /dev/null +++ b/node_modules/chroma-js/src/ops/luminance.js @@ -0,0 +1,52 @@ +const Color = require('../Color'); +const {type} = require('../utils'); +const {pow} = Math; + +const EPS = 1e-7; +const MAX_ITER = 20; + +Color.prototype.luminance = function(lum) { + if (lum !== undefined && type(lum) === 'number') { + if (lum === 0) { + // return pure black + return new Color([0,0,0,this._rgb[3]], 'rgb'); + } + if (lum === 1) { + // return pure white + return new Color([255,255,255,this._rgb[3]], 'rgb'); + } + // compute new color using... + let cur_lum = this.luminance(); + let mode = 'rgb'; + let max_iter = MAX_ITER; + + const test = (low, high) => { + const mid = low.interpolate(high, 0.5, mode); + const lm = mid.luminance(); + if (Math.abs(lum - lm) < EPS || !max_iter--) { + // close enough + return mid; + } + return lm > lum ? test(low, mid) : test(mid, high); + } + + const rgb = (cur_lum > lum ? test(new Color([0,0,0]), this) : test(this, new Color([255,255,255]))).rgb(); + return new Color([...rgb,this._rgb[3]]); + } + return rgb2luminance(...(this._rgb).slice(0,3)); +} + + +const rgb2luminance = (r,g,b) => { + // relative luminance + // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + r = luminance_x(r); + g = luminance_x(g); + b = luminance_x(b); + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +const luminance_x = (x) => { + x /= 255; + return x <= 0.03928 ? x/12.92 : pow((x+0.055)/1.055, 2.4); +} diff --git a/node_modules/chroma-js/src/ops/mix.js b/node_modules/chroma-js/src/ops/mix.js new file mode 100644 index 0000000..0990094 --- /dev/null +++ b/node_modules/chroma-js/src/ops/mix.js @@ -0,0 +1,7 @@ +const Color = require('../Color'); +const mix = require('../generator/mix'); + +Color.prototype.mix = +Color.prototype.interpolate = function(col2, f=0.5, ...rest) { + return mix(this, col2, f, ...rest); +} diff --git a/node_modules/chroma-js/src/ops/premultiply.js b/node_modules/chroma-js/src/ops/premultiply.js new file mode 100644 index 0000000..33911a8 --- /dev/null +++ b/node_modules/chroma-js/src/ops/premultiply.js @@ -0,0 +1,12 @@ +const Color = require('../Color'); + +Color.prototype.premultiply = function(mutate=false) { + const rgb = this._rgb; + const a = rgb[3]; + if (mutate) { + this._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a]; + return this; + } else { + return new Color([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb'); + } +} diff --git a/node_modules/chroma-js/src/ops/saturate.js b/node_modules/chroma-js/src/ops/saturate.js new file mode 100644 index 0000000..9ac913b --- /dev/null +++ b/node_modules/chroma-js/src/ops/saturate.js @@ -0,0 +1,16 @@ +require('../io/lch'); +const Color = require('../Color'); +const LAB_CONSTANTS = require('../io/lab/lab-constants'); + +Color.prototype.saturate = function(amount=1) { + const me = this; + const lch = me.lch(); + lch[1] += LAB_CONSTANTS.Kn * amount; + if (lch[1] < 0) lch[1] = 0; + return new Color(lch, 'lch').alpha(me.alpha(), true); +} + +Color.prototype.desaturate = function(amount=1) { + return this.saturate(-amount); +} + diff --git a/node_modules/chroma-js/src/ops/set.js b/node_modules/chroma-js/src/ops/set.js new file mode 100644 index 0000000..e93a75b --- /dev/null +++ b/node_modules/chroma-js/src/ops/set.js @@ -0,0 +1,43 @@ +const Color = require('../Color'); +const { type } = require('../utils'); + +Color.prototype.set = function (mc, value, mutate = false) { + const [mode, channel] = mc.split('.'); + const src = this[mode](); + if (channel) { + const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { + if (type(value) == 'string') { + switch (value.charAt(0)) { + case '+': + src[i] += +value; + break; + case '-': + src[i] += +value; + break; + case '*': + src[i] *= +value.substr(1); + break; + case '/': + src[i] /= +value.substr(1); + break; + default: + src[i] = +value; + } + } else if (type(value) === 'number') { + src[i] = value; + } else { + throw new Error(`unsupported value for Color.set`); + } + const out = new Color(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error(`unknown channel ${channel} in mode ${mode}`); + } else { + return src; + } +}; diff --git a/node_modules/chroma-js/src/utils/analyze.js b/node_modules/chroma-js/src/utils/analyze.js new file mode 100644 index 0000000..42c25e6 --- /dev/null +++ b/node_modules/chroma-js/src/utils/analyze.js @@ -0,0 +1,191 @@ +const type = require('./type'); +const {log, pow, floor, abs} = Math; + + +const analyze = (data, key=null) => { + const r = { + min: Number.MAX_VALUE, + max: Number.MAX_VALUE*-1, + sum: 0, + values: [], + count: 0 + }; + if (type(data) === 'object') { + data = Object.values(data); + } + data.forEach(val => { + if (key && type(val) === 'object') val = val[key]; + if (val !== undefined && val !== null && !isNaN(val)) { + r.values.push(val); + r.sum += val; + if (val < r.min) r.min = val; + if (val > r.max) r.max = val; + r.count += 1; + } + }); + + r.domain = [r.min, r.max]; + + r.limits = (mode, num) => limits(r, mode, num) + + return r; +}; + + +const limits = (data, mode='equal', num=7) => { + if (type(data) == 'array') { + data = analyze(data); + } + const {min,max} = data; + const values = data.values.sort((a,b) => a-b); + + if (num === 1) { return [min,max]; } + + const limits = []; + + if (mode.substr(0,1) === 'c') { // continuous + limits.push(min); + limits.push(max); + } + + if (mode.substr(0,1) === 'e') { // equal interval + limits.push(min); + for (let i=1; i 0'); + } + const min_log = Math.LOG10E * log(min); + const max_log = Math.LOG10E * log(max); + limits.push(min); + for (let i=1; i pb + const pr = p - pb; + limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr)); + } + } + limits.push(max); + + } + + else if (mode.substr(0,1) === 'k') { // k-means clustering + /* + implementation based on + http://code.google.com/p/figue/source/browse/trunk/figue.js#336 + simplified for 1-d input values + */ + let cluster; + const n = values.length; + const assignments = new Array(n); + const clusterSizes = new Array(num); + let repeat = true; + let nb_iters = 0; + let centroids = null; + + // get seed values + centroids = []; + centroids.push(min); + for (let i=1; i 200) { + repeat = false; + } + } + + // finished k-means clustering + // the next part is borrowed from gabrielflor.it + const kClusters = {}; + for (let j=0; j a-b); + limits.push(tmpKMeansBreaks[0]); + for (let i=1; i < tmpKMeansBreaks.length; i+= 2) { + const v = tmpKMeansBreaks[i]; + if (!isNaN(v) && (limits.indexOf(v) === -1)) { + limits.push(v); + } + } + } + return limits; +} + +module.exports = {analyze, limits}; diff --git a/node_modules/chroma-js/src/utils/clip_rgb.js b/node_modules/chroma-js/src/utils/clip_rgb.js new file mode 100644 index 0000000..e01687c --- /dev/null +++ b/node_modules/chroma-js/src/utils/clip_rgb.js @@ -0,0 +1,15 @@ +const limit = require('./limit'); + +module.exports = (rgb) => { + rgb._clipped = false; + rgb._unclipped = rgb.slice(0); + for (let i=0; i<=3; i++) { + if (i < 3) { + if (rgb[i] < 0 || rgb[i] > 255) rgb._clipped = true; + rgb[i] = limit(rgb[i], 0, 255); + } else if (i === 3) { + rgb[i] = limit(rgb[i], 0, 1); + } + } + return rgb; +}; diff --git a/node_modules/chroma-js/src/utils/contrast.js b/node_modules/chroma-js/src/utils/contrast.js new file mode 100644 index 0000000..144ea2b --- /dev/null +++ b/node_modules/chroma-js/src/utils/contrast.js @@ -0,0 +1,12 @@ +const Color = require('../Color'); +require('../ops/luminance'); + +module.exports = (a, b) => { + // WCAG contrast ratio + // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef + a = new Color(a); + b = new Color(b); + const l1 = a.luminance(); + const l2 = b.luminance(); + return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); +} diff --git a/node_modules/chroma-js/src/utils/delta-e.js b/node_modules/chroma-js/src/utils/delta-e.js new file mode 100644 index 0000000..8da1076 --- /dev/null +++ b/node_modules/chroma-js/src/utils/delta-e.js @@ -0,0 +1,47 @@ +const Color = require('../Color'); +const {sqrt, pow, min, max, atan2, abs, cos, sin, exp, PI} = Math; + +module.exports = function(a, b, Kl=1, Kc=1, Kh=1) { + // Delta E (CIE 2000) + // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html + var rad2deg = function(rad) { + return 360 * rad / (2 * PI); + }; + var deg2rad = function(deg) { + return (2 * PI * deg) / 360; + }; + a = new Color(a); + b = new Color(b); + const [L1,a1,b1] = Array.from(a.lab()); + const [L2,a2,b2] = Array.from(b.lab()); + const avgL = (L1 + L2)/2; + const C1 = sqrt(pow(a1, 2) + pow(b1, 2)); + const C2 = sqrt(pow(a2, 2) + pow(b2, 2)); + const avgC = (C1 + C2)/2; + const G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7)))); + const a1p = a1*(1+G); + const a2p = a2*(1+G); + const C1p = sqrt(pow(a1p, 2) + pow(b1, 2)); + const C2p = sqrt(pow(a2p, 2) + pow(b2, 2)); + const avgCp = (C1p + C2p)/2; + const arctan1 = rad2deg(atan2(b1, a1p)); + const arctan2 = rad2deg(atan2(b2, a2p)); + const h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360; + const h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360; + const avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2; + const T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63)); + let deltaHp = h2p - h1p; + deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360; + deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2); + const deltaL = L2 - L1; + const deltaCp = C2p - C1p; + const sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2)); + const sc = 1 + 0.045*avgCp; + const sh = 1 + 0.015*avgCp*T; + const deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2)); + const Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7))); + const Rt = -Rc*sin(2*deg2rad(deltaTheta)); + const result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh))); + return max(0, min(100, result)); +}; + diff --git a/node_modules/chroma-js/src/utils/distance.js b/node_modules/chroma-js/src/utils/distance.js new file mode 100644 index 0000000..00078fb --- /dev/null +++ b/node_modules/chroma-js/src/utils/distance.js @@ -0,0 +1,17 @@ +const Color = require('../Color'); + +// simple Euclidean distance +module.exports = function(a, b, mode='lab') { + // Delta E (CIE 1976) + // see http://www.brucelindbloom.com/index.html?Equations.html + a = new Color(a); + b = new Color(b); + const l1 = a.get(mode); + const l2 = b.get(mode); + let sum_sq = 0; + for (let i in l1) { + const d = (l1[i] || 0) - (l2[i] || 0); + sum_sq += d*d; + } + return Math.sqrt(sum_sq); +}; diff --git a/node_modules/chroma-js/src/utils/index.js b/node_modules/chroma-js/src/utils/index.js new file mode 100644 index 0000000..7aa0032 --- /dev/null +++ b/node_modules/chroma-js/src/utils/index.js @@ -0,0 +1,16 @@ +const PI = Math.PI; + +module.exports = { + clip_rgb: require('./clip_rgb'), + limit: require('./limit'), + type: require('./type'), + unpack: require('./unpack'), + last: require('./last'), + PI: PI, + TWOPI: PI*2, + PITHIRD: PI/3, + DEG2RAD: PI / 180, + RAD2DEG: 180 / PI +} + + diff --git a/node_modules/chroma-js/src/utils/last.js b/node_modules/chroma-js/src/utils/last.js new file mode 100644 index 0000000..a0529a3 --- /dev/null +++ b/node_modules/chroma-js/src/utils/last.js @@ -0,0 +1,8 @@ +const type = require('./type'); + +module.exports = (args) => { + if (args.length < 2) return null; + const l = args.length-1; + if (type(args[l]) == 'string') return args[l].toLowerCase(); + return null; +}; diff --git a/node_modules/chroma-js/src/utils/limit.js b/node_modules/chroma-js/src/utils/limit.js new file mode 100644 index 0000000..2a4beb1 --- /dev/null +++ b/node_modules/chroma-js/src/utils/limit.js @@ -0,0 +1,3 @@ +module.exports = (x, min=0, max=1) => { + return x < min ? min : x > max ? max : x; +} diff --git a/node_modules/chroma-js/src/utils/scales.js b/node_modules/chroma-js/src/utils/scales.js new file mode 100644 index 0000000..ec22783 --- /dev/null +++ b/node_modules/chroma-js/src/utils/scales.js @@ -0,0 +1,10 @@ +// some pre-defined color scales: +const chroma = require('../chroma'); +require('../io/hsl'); +const scale = require('../generator/scale'); + +module.exports = { + cool() { return scale([chroma.hsl(180,1,.9), chroma.hsl(250,.7,.4)]) }, + hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') } +} + diff --git a/node_modules/chroma-js/src/utils/type.js b/node_modules/chroma-js/src/utils/type.js new file mode 100644 index 0000000..f973427 --- /dev/null +++ b/node_modules/chroma-js/src/utils/type.js @@ -0,0 +1,8 @@ +// ported from jQuery's $.type +const classToType = {}; +for (let name of ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']) { + classToType[`[object ${name}]`] = name.toLowerCase(); +} +module.exports = function(obj) { + return classToType[Object.prototype.toString.call(obj)] || "object"; +}; diff --git a/node_modules/chroma-js/src/utils/unpack.js b/node_modules/chroma-js/src/utils/unpack.js new file mode 100644 index 0000000..e064deb --- /dev/null +++ b/node_modules/chroma-js/src/utils/unpack.js @@ -0,0 +1,16 @@ +const type = require('./type'); + +module.exports = (args, keyOrder=null) => { + // if called with more than 3 arguments, we return the arguments + if (args.length >= 3) return Array.prototype.slice.call(args); + // with less than 3 args we check if first arg is object + // and use the keyOrder string to extract and sort properties + if (type(args[0]) == 'object' && keyOrder) { + return keyOrder.split('') + .filter(k => args[0][k] !== undefined) + .map(k => args[0][k]); + } + // otherwise we just return the first argument + // (which we suppose is an array of args) + return args[0]; +}; diff --git a/node_modules/chroma-js/src/utils/valid.js b/node_modules/chroma-js/src/utils/valid.js new file mode 100644 index 0000000..0491b83 --- /dev/null +++ b/node_modules/chroma-js/src/utils/valid.js @@ -0,0 +1,10 @@ +const Color = require('../Color'); + +module.exports = (...args) => { + try { + new Color(...args); + return true; + } catch (e) { + return false; + } +}; diff --git a/node_modules/esbuild/LICENSE.md b/node_modules/esbuild/LICENSE.md new file mode 100644 index 0000000..2027e8d --- /dev/null +++ b/node_modules/esbuild/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Evan Wallace + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/esbuild/README.md b/node_modules/esbuild/README.md new file mode 100644 index 0000000..93863d1 --- /dev/null +++ b/node_modules/esbuild/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is a JavaScript bundler and minifier. See https://github.com/evanw/esbuild and the [JavaScript API documentation](https://esbuild.github.io/api/) for details. diff --git a/node_modules/esbuild/bin/esbuild b/node_modules/esbuild/bin/esbuild new file mode 100644 index 0000000..5d39b4d --- /dev/null +++ b/node_modules/esbuild/bin/esbuild @@ -0,0 +1,221 @@ +#!/usr/bin/env node +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var packageDarwin_arm64 = "@esbuild/darwin-arm64"; +var packageDarwin_x64 = "@esbuild/darwin-x64"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM2 = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM2 = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM: isWASM2 }; +} +function pkgForSomeOtherPlatform() { + const libMainJS = require.resolve("esbuild"); + const nodeModulesDirectory = path.dirname(path.dirname(path.dirname(libMainJS))); + if (path.basename(nodeModulesDirectory) === "node_modules") { + for (const unixKey in knownUnixlikePackages) { + try { + const pkg = knownUnixlikePackages[unixKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + for (const windowsKey in knownWindowsPackages) { + try { + const pkg = knownWindowsPackages[windowsKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + } + return null; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} +function generateBinPath() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + return { binPath: ESBUILD_BINARY_PATH, isWASM: false }; + } + } + const { pkg, subpath, isWASM: isWASM2 } = pkgAndSubpathForCurrentPlatform(); + let binPath2; + try { + binPath2 = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + binPath2 = downloadedBinPath(pkg, subpath); + if (!fs.existsSync(binPath2)) { + try { + require.resolve(pkg); + } catch { + const otherPkg = pkgForSomeOtherPlatform(); + if (otherPkg) { + let suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild on Windows or macOS and copying "node_modules" +into a Docker image that runs Linux, or by copying "node_modules" between +Windows and WSL environments. + +If you are installing with npm, you can try not copying the "node_modules" +directory when you copy the files over, and running "npm ci" or "npm install" +on the destination platform after the copy. Or you could consider using yarn +instead of npm which has built-in support for installing a package on multiple +platforms simultaneously. + +If you are installing with yarn, you can try listing both this platform and the +other platform in your ".yarnrc.yml" file using the "supportedArchitectures" +feature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + if (pkg === packageDarwin_x64 && otherPkg === packageDarwin_arm64 || pkg === packageDarwin_arm64 && otherPkg === packageDarwin_x64) { + suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild with npm running inside of Rosetta 2 and then +trying to use it with node running outside of Rosetta 2, or vice versa (Rosetta +2 is Apple's on-the-fly x86_64-to-arm64 translation service). + +If you are installing with npm, you can try ensuring that both npm and node are +not running under Rosetta 2 and then reinstalling esbuild. This likely involves +changing how you installed npm and/or node. For example, installing node with +the universal installer here should work: https://nodejs.org/en/download/. Or +you could consider using yarn instead of npm which has built-in support for +installing a package on multiple platforms simultaneously. + +If you are installing with yarn, you can try listing both "arm64" and "x64" +in your ".yarnrc.yml" file using the "supportedArchitectures" feature: +https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + } + throw new Error(` +You installed esbuild for another platform than the one you're currently using. +This won't work because esbuild is written with native code and needs to +install a platform-specific binary executable. +${suggestions} +Another alternative is to use the "esbuild-wasm" package instead, which works +the same way on all platforms. But it comes with a heavy performance cost and +can sometimes be 10x slower than the "esbuild" package, so you may also not +want to do that. +`); + } + throw new Error(`The package "${pkg}" could not be found, and is needed by esbuild. + +If you are installing esbuild with npm, make sure that you don't specify the +"--no-optional" or "--omit=optional" flags. The "optionalDependencies" feature +of "package.json" is used by esbuild to install the correct binary executable +for your current platform.`); + } + throw e; + } + } + if (/\.zip\//.test(binPath2)) { + let pnpapi; + try { + pnpapi = require("pnpapi"); + } catch (e) { + } + if (pnpapi) { + const root = pnpapi.getPackageInformation(pnpapi.topLevel).packageLocation; + const binTargetPath = path.join( + root, + "node_modules", + ".cache", + "esbuild", + `pnpapi-${pkg.replace("/", "-")}-${"0.18.20"}-${path.basename(subpath)}` + ); + if (!fs.existsSync(binTargetPath)) { + fs.mkdirSync(path.dirname(binTargetPath), { recursive: true }); + fs.copyFileSync(binPath2, binTargetPath); + fs.chmodSync(binTargetPath, 493); + } + return { binPath: binTargetPath, isWASM: isWASM2 }; + } + } + return { binPath: binPath2, isWASM: isWASM2 }; +} + +// lib/npm/node-shim.ts +var { binPath, isWASM } = generateBinPath(); +if (isWASM) { + require("child_process").execFileSync("node", [binPath].concat(process.argv.slice(2)), { stdio: "inherit" }); +} else { + require("child_process").execFileSync(binPath, process.argv.slice(2), { stdio: "inherit" }); +} diff --git a/node_modules/esbuild/install.js b/node_modules/esbuild/install.js new file mode 100644 index 0000000..be1e34f --- /dev/null +++ b/node_modules/esbuild/install.js @@ -0,0 +1,287 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM }; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} + +// lib/npm/node-install.ts +var fs2 = require("fs"); +var os2 = require("os"); +var path2 = require("path"); +var zlib = require("zlib"); +var https = require("https"); +var child_process = require("child_process"); +var versionFromPackageJSON = require(path2.join(__dirname, "package.json")).version; +var toPath = path2.join(__dirname, "bin", "esbuild"); +var isToPathJS = true; +function validateBinaryVersion(...command) { + command.push("--version"); + let stdout; + try { + stdout = child_process.execFileSync(command.shift(), command, { + // Without this, this install script strangely crashes with the error + // "EACCES: permission denied, write" but only on Ubuntu Linux when node is + // installed from the Snap Store. This is not a problem when you download + // the official version of node. The problem appears to be that stderr + // (i.e. file descriptor 2) isn't writable? + // + // More info: + // - https://snapcraft.io/ (what the Snap Store is) + // - https://nodejs.org/dist/ (download the official version of node) + // - https://github.com/evanw/esbuild/issues/1711#issuecomment-1027554035 + // + stdio: "pipe" + }).toString().trim(); + } catch (err) { + if (os2.platform() === "darwin" && /_SecTrustEvaluateWithError/.test(err + "")) { + let os3 = "this version of macOS"; + try { + os3 = "macOS " + child_process.execFileSync("sw_vers", ["-productVersion"]).toString().trim(); + } catch { + } + throw new Error(`The "esbuild" package cannot be installed because ${os3} is too outdated. + +The Go compiler (which esbuild relies on) no longer supports ${os3}, +which means the "esbuild" binary executable can't be run. You can either: + + * Update your version of macOS to one that the Go compiler supports + * Use the "esbuild-wasm" package instead of the "esbuild" package + * Build esbuild yourself using an older version of the Go compiler +`); + } + throw err; + } + if (stdout !== versionFromPackageJSON) { + throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`); + } +} +function isYarn() { + const { npm_config_user_agent } = process.env; + if (npm_config_user_agent) { + return /\byarn\//.test(npm_config_user_agent); + } + return false; +} +function fetch(url) { + return new Promise((resolve, reject) => { + https.get(url, (res) => { + if ((res.statusCode === 301 || res.statusCode === 302) && res.headers.location) + return fetch(res.headers.location).then(resolve, reject); + if (res.statusCode !== 200) + return reject(new Error(`Server responded with ${res.statusCode}`)); + let chunks = []; + res.on("data", (chunk) => chunks.push(chunk)); + res.on("end", () => resolve(Buffer.concat(chunks))); + }).on("error", reject); + }); +} +function extractFileFromTarGzip(buffer, subpath) { + try { + buffer = zlib.unzipSync(buffer); + } catch (err) { + throw new Error(`Invalid gzip data in archive: ${err && err.message || err}`); + } + let str = (i, n) => String.fromCharCode(...buffer.subarray(i, i + n)).replace(/\0.*$/, ""); + let offset = 0; + subpath = `package/${subpath}`; + while (offset < buffer.length) { + let name = str(offset, 100); + let size = parseInt(str(offset + 124, 12), 8); + offset += 512; + if (!isNaN(size)) { + if (name === subpath) + return buffer.subarray(offset, offset + size); + offset += size + 511 & ~511; + } + } + throw new Error(`Could not find ${JSON.stringify(subpath)} in archive`); +} +function installUsingNPM(pkg, subpath, binPath) { + const env = { ...process.env, npm_config_global: void 0 }; + const esbuildLibDir = path2.dirname(require.resolve("esbuild")); + const installDir = path2.join(esbuildLibDir, "npm-install"); + fs2.mkdirSync(installDir); + try { + fs2.writeFileSync(path2.join(installDir, "package.json"), "{}"); + child_process.execSync( + `npm install --loglevel=error --prefer-offline --no-audit --progress=false ${pkg}@${versionFromPackageJSON}`, + { cwd: installDir, stdio: "pipe", env } + ); + const installedBinPath = path2.join(installDir, "node_modules", pkg, subpath); + fs2.renameSync(installedBinPath, binPath); + } finally { + try { + removeRecursive(installDir); + } catch { + } + } +} +function removeRecursive(dir) { + for (const entry of fs2.readdirSync(dir)) { + const entryPath = path2.join(dir, entry); + let stats; + try { + stats = fs2.lstatSync(entryPath); + } catch { + continue; + } + if (stats.isDirectory()) + removeRecursive(entryPath); + else + fs2.unlinkSync(entryPath); + } + fs2.rmdirSync(dir); +} +function applyManualBinaryPathOverride(overridePath) { + const pathString = JSON.stringify(overridePath); + fs2.writeFileSync(toPath, `#!/usr/bin/env node +require('child_process').execFileSync(${pathString}, process.argv.slice(2), { stdio: 'inherit' }); +`); + const libMain = path2.join(__dirname, "lib", "main.js"); + const code = fs2.readFileSync(libMain, "utf8"); + fs2.writeFileSync(libMain, `var ESBUILD_BINARY_PATH = ${pathString}; +${code}`); +} +function maybeOptimizePackage(binPath) { + if (os2.platform() !== "win32" && !isYarn()) { + const tempPath = path2.join(__dirname, "bin-esbuild"); + try { + fs2.linkSync(binPath, tempPath); + fs2.renameSync(tempPath, toPath); + isToPathJS = false; + fs2.unlinkSync(tempPath); + } catch { + } + } +} +async function downloadDirectlyFromNPM(pkg, subpath, binPath) { + const url = `https://registry.npmjs.org/${pkg}/-/${pkg.replace("@esbuild/", "")}-${versionFromPackageJSON}.tgz`; + console.error(`[esbuild] Trying to download ${JSON.stringify(url)}`); + try { + fs2.writeFileSync(binPath, extractFileFromTarGzip(await fetch(url), subpath)); + fs2.chmodSync(binPath, 493); + } catch (e) { + console.error(`[esbuild] Failed to download ${JSON.stringify(url)}: ${e && e.message || e}`); + throw e; + } +} +async function checkAndPreparePackage() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs2.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + applyManualBinaryPathOverride(ESBUILD_BINARY_PATH); + return; + } + } + const { pkg, subpath } = pkgAndSubpathForCurrentPlatform(); + let binPath; + try { + binPath = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + console.error(`[esbuild] Failed to find package "${pkg}" on the file system + +This can happen if you use the "--no-optional" flag. The "optionalDependencies" +package.json feature is used by esbuild to install the correct binary executable +for your current platform. This install script will now attempt to work around +this. If that fails, you need to remove the "--no-optional" flag to use esbuild. +`); + binPath = downloadedBinPath(pkg, subpath); + try { + console.error(`[esbuild] Trying to install package "${pkg}" using npm`); + installUsingNPM(pkg, subpath, binPath); + } catch (e2) { + console.error(`[esbuild] Failed to install package "${pkg}" using npm: ${e2 && e2.message || e2}`); + try { + await downloadDirectlyFromNPM(pkg, subpath, binPath); + } catch (e3) { + throw new Error(`Failed to install package "${pkg}"`); + } + } + } + maybeOptimizePackage(binPath); +} +checkAndPreparePackage().then(() => { + if (isToPathJS) { + validateBinaryVersion(process.execPath, toPath); + } else { + validateBinaryVersion(toPath); + } +}); diff --git a/node_modules/esbuild/lib/main.d.ts b/node_modules/esbuild/lib/main.d.ts new file mode 100644 index 0000000..872cb02 --- /dev/null +++ b/node_modules/esbuild/lib/main.d.ts @@ -0,0 +1,660 @@ +export type Platform = 'browser' | 'node' | 'neutral' +export type Format = 'iife' | 'cjs' | 'esm' +export type Loader = 'base64' | 'binary' | 'copy' | 'css' | 'dataurl' | 'default' | 'empty' | 'file' | 'js' | 'json' | 'jsx' | 'local-css' | 'text' | 'ts' | 'tsx' +export type LogLevel = 'verbose' | 'debug' | 'info' | 'warning' | 'error' | 'silent' +export type Charset = 'ascii' | 'utf8' +export type Drop = 'console' | 'debugger' + +interface CommonOptions { + /** Documentation: https://esbuild.github.io/api/#sourcemap */ + sourcemap?: boolean | 'linked' | 'inline' | 'external' | 'both' + /** Documentation: https://esbuild.github.io/api/#legal-comments */ + legalComments?: 'none' | 'inline' | 'eof' | 'linked' | 'external' + /** Documentation: https://esbuild.github.io/api/#source-root */ + sourceRoot?: string + /** Documentation: https://esbuild.github.io/api/#sources-content */ + sourcesContent?: boolean + + /** Documentation: https://esbuild.github.io/api/#format */ + format?: Format + /** Documentation: https://esbuild.github.io/api/#global-name */ + globalName?: string + /** Documentation: https://esbuild.github.io/api/#target */ + target?: string | string[] + /** Documentation: https://esbuild.github.io/api/#supported */ + supported?: Record + /** Documentation: https://esbuild.github.io/api/#platform */ + platform?: Platform + + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + mangleProps?: RegExp + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + reserveProps?: RegExp + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + mangleQuoted?: boolean + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + mangleCache?: Record + /** Documentation: https://esbuild.github.io/api/#drop */ + drop?: Drop[] + /** Documentation: https://esbuild.github.io/api/#drop-labels */ + dropLabels?: string[] + /** Documentation: https://esbuild.github.io/api/#minify */ + minify?: boolean + /** Documentation: https://esbuild.github.io/api/#minify */ + minifyWhitespace?: boolean + /** Documentation: https://esbuild.github.io/api/#minify */ + minifyIdentifiers?: boolean + /** Documentation: https://esbuild.github.io/api/#minify */ + minifySyntax?: boolean + /** Documentation: https://esbuild.github.io/api/#line-limit */ + lineLimit?: number + /** Documentation: https://esbuild.github.io/api/#charset */ + charset?: Charset + /** Documentation: https://esbuild.github.io/api/#tree-shaking */ + treeShaking?: boolean + /** Documentation: https://esbuild.github.io/api/#ignore-annotations */ + ignoreAnnotations?: boolean + + /** Documentation: https://esbuild.github.io/api/#jsx */ + jsx?: 'transform' | 'preserve' | 'automatic' + /** Documentation: https://esbuild.github.io/api/#jsx-factory */ + jsxFactory?: string + /** Documentation: https://esbuild.github.io/api/#jsx-fragment */ + jsxFragment?: string + /** Documentation: https://esbuild.github.io/api/#jsx-import-source */ + jsxImportSource?: string + /** Documentation: https://esbuild.github.io/api/#jsx-development */ + jsxDev?: boolean + /** Documentation: https://esbuild.github.io/api/#jsx-side-effects */ + jsxSideEffects?: boolean + + /** Documentation: https://esbuild.github.io/api/#define */ + define?: { [key: string]: string } + /** Documentation: https://esbuild.github.io/api/#pure */ + pure?: string[] + /** Documentation: https://esbuild.github.io/api/#keep-names */ + keepNames?: boolean + + /** Documentation: https://esbuild.github.io/api/#color */ + color?: boolean + /** Documentation: https://esbuild.github.io/api/#log-level */ + logLevel?: LogLevel + /** Documentation: https://esbuild.github.io/api/#log-limit */ + logLimit?: number + /** Documentation: https://esbuild.github.io/api/#log-override */ + logOverride?: Record + + /** Documentation: https://esbuild.github.io/api/#tsconfig-raw */ + tsconfigRaw?: string | TsconfigRaw +} + +export interface TsconfigRaw { + compilerOptions?: { + alwaysStrict?: boolean + baseUrl?: boolean + experimentalDecorators?: boolean + importsNotUsedAsValues?: 'remove' | 'preserve' | 'error' + jsx?: 'preserve' | 'react-native' | 'react' | 'react-jsx' | 'react-jsxdev' + jsxFactory?: string + jsxFragmentFactory?: string + jsxImportSource?: string + paths?: Record + preserveValueImports?: boolean + strict?: boolean + target?: string + useDefineForClassFields?: boolean + verbatimModuleSyntax?: boolean + } +} + +export interface BuildOptions extends CommonOptions { + /** Documentation: https://esbuild.github.io/api/#bundle */ + bundle?: boolean + /** Documentation: https://esbuild.github.io/api/#splitting */ + splitting?: boolean + /** Documentation: https://esbuild.github.io/api/#preserve-symlinks */ + preserveSymlinks?: boolean + /** Documentation: https://esbuild.github.io/api/#outfile */ + outfile?: string + /** Documentation: https://esbuild.github.io/api/#metafile */ + metafile?: boolean + /** Documentation: https://esbuild.github.io/api/#outdir */ + outdir?: string + /** Documentation: https://esbuild.github.io/api/#outbase */ + outbase?: string + /** Documentation: https://esbuild.github.io/api/#external */ + external?: string[] + /** Documentation: https://esbuild.github.io/api/#packages */ + packages?: 'external' + /** Documentation: https://esbuild.github.io/api/#alias */ + alias?: Record + /** Documentation: https://esbuild.github.io/api/#loader */ + loader?: { [ext: string]: Loader } + /** Documentation: https://esbuild.github.io/api/#resolve-extensions */ + resolveExtensions?: string[] + /** Documentation: https://esbuild.github.io/api/#main-fields */ + mainFields?: string[] + /** Documentation: https://esbuild.github.io/api/#conditions */ + conditions?: string[] + /** Documentation: https://esbuild.github.io/api/#write */ + write?: boolean + /** Documentation: https://esbuild.github.io/api/#allow-overwrite */ + allowOverwrite?: boolean + /** Documentation: https://esbuild.github.io/api/#tsconfig */ + tsconfig?: string + /** Documentation: https://esbuild.github.io/api/#out-extension */ + outExtension?: { [ext: string]: string } + /** Documentation: https://esbuild.github.io/api/#public-path */ + publicPath?: string + /** Documentation: https://esbuild.github.io/api/#entry-names */ + entryNames?: string + /** Documentation: https://esbuild.github.io/api/#chunk-names */ + chunkNames?: string + /** Documentation: https://esbuild.github.io/api/#asset-names */ + assetNames?: string + /** Documentation: https://esbuild.github.io/api/#inject */ + inject?: string[] + /** Documentation: https://esbuild.github.io/api/#banner */ + banner?: { [type: string]: string } + /** Documentation: https://esbuild.github.io/api/#footer */ + footer?: { [type: string]: string } + /** Documentation: https://esbuild.github.io/api/#entry-points */ + entryPoints?: string[] | Record | { in: string, out: string }[] + /** Documentation: https://esbuild.github.io/api/#stdin */ + stdin?: StdinOptions + /** Documentation: https://esbuild.github.io/plugins/ */ + plugins?: Plugin[] + /** Documentation: https://esbuild.github.io/api/#working-directory */ + absWorkingDir?: string + /** Documentation: https://esbuild.github.io/api/#node-paths */ + nodePaths?: string[]; // The "NODE_PATH" variable from Node.js +} + +export interface StdinOptions { + contents: string | Uint8Array + resolveDir?: string + sourcefile?: string + loader?: Loader +} + +export interface Message { + id: string + pluginName: string + text: string + location: Location | null + notes: Note[] + + /** + * Optional user-specified data that is passed through unmodified. You can + * use this to stash the original error, for example. + */ + detail: any +} + +export interface Note { + text: string + location: Location | null +} + +export interface Location { + file: string + namespace: string + /** 1-based */ + line: number + /** 0-based, in bytes */ + column: number + /** in bytes */ + length: number + lineText: string + suggestion: string +} + +export interface OutputFile { + path: string + contents: Uint8Array + hash: string + /** "contents" as text (changes automatically with "contents") */ + readonly text: string +} + +export interface BuildResult { + errors: Message[] + warnings: Message[] + /** Only when "write: false" */ + outputFiles: OutputFile[] | (ProvidedOptions['write'] extends false ? never : undefined) + /** Only when "metafile: true" */ + metafile: Metafile | (ProvidedOptions['metafile'] extends true ? never : undefined) + /** Only when "mangleCache" is present */ + mangleCache: Record | (ProvidedOptions['mangleCache'] extends Object ? never : undefined) +} + +export interface BuildFailure extends Error { + errors: Message[] + warnings: Message[] +} + +/** Documentation: https://esbuild.github.io/api/#serve-arguments */ +export interface ServeOptions { + port?: number + host?: string + servedir?: string + keyfile?: string + certfile?: string + fallback?: string + onRequest?: (args: ServeOnRequestArgs) => void +} + +export interface ServeOnRequestArgs { + remoteAddress: string + method: string + path: string + status: number + /** The time to generate the response, not to send it */ + timeInMS: number +} + +/** Documentation: https://esbuild.github.io/api/#serve-return-values */ +export interface ServeResult { + port: number + host: string +} + +export interface TransformOptions extends CommonOptions { + /** Documentation: https://esbuild.github.io/api/#sourcefile */ + sourcefile?: string + /** Documentation: https://esbuild.github.io/api/#loader */ + loader?: Loader + /** Documentation: https://esbuild.github.io/api/#banner */ + banner?: string + /** Documentation: https://esbuild.github.io/api/#footer */ + footer?: string +} + +export interface TransformResult { + code: string + map: string + warnings: Message[] + /** Only when "mangleCache" is present */ + mangleCache: Record | (ProvidedOptions['mangleCache'] extends Object ? never : undefined) + /** Only when "legalComments" is "external" */ + legalComments: string | (ProvidedOptions['legalComments'] extends 'external' ? never : undefined) +} + +export interface TransformFailure extends Error { + errors: Message[] + warnings: Message[] +} + +export interface Plugin { + name: string + setup: (build: PluginBuild) => (void | Promise) +} + +export interface PluginBuild { + /** Documentation: https://esbuild.github.io/plugins/#build-options */ + initialOptions: BuildOptions + + /** Documentation: https://esbuild.github.io/plugins/#resolve */ + resolve(path: string, options?: ResolveOptions): Promise + + /** Documentation: https://esbuild.github.io/plugins/#on-start */ + onStart(callback: () => + (OnStartResult | null | void | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-end */ + onEnd(callback: (result: BuildResult) => + (OnEndResult | null | void | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-resolve */ + onResolve(options: OnResolveOptions, callback: (args: OnResolveArgs) => + (OnResolveResult | null | undefined | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-load */ + onLoad(options: OnLoadOptions, callback: (args: OnLoadArgs) => + (OnLoadResult | null | undefined | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-dispose */ + onDispose(callback: () => void): void + + // This is a full copy of the esbuild library in case you need it + esbuild: { + context: typeof context, + build: typeof build, + buildSync: typeof buildSync, + transform: typeof transform, + transformSync: typeof transformSync, + formatMessages: typeof formatMessages, + formatMessagesSync: typeof formatMessagesSync, + analyzeMetafile: typeof analyzeMetafile, + analyzeMetafileSync: typeof analyzeMetafileSync, + initialize: typeof initialize, + version: typeof version, + } +} + +/** Documentation: https://esbuild.github.io/plugins/#resolve-options */ +export interface ResolveOptions { + pluginName?: string + importer?: string + namespace?: string + resolveDir?: string + kind?: ImportKind + pluginData?: any +} + +/** Documentation: https://esbuild.github.io/plugins/#resolve-results */ +export interface ResolveResult { + errors: Message[] + warnings: Message[] + + path: string + external: boolean + sideEffects: boolean + namespace: string + suffix: string + pluginData: any +} + +export interface OnStartResult { + errors?: PartialMessage[] + warnings?: PartialMessage[] +} + +export interface OnEndResult { + errors?: PartialMessage[] + warnings?: PartialMessage[] +} + +/** Documentation: https://esbuild.github.io/plugins/#on-resolve-options */ +export interface OnResolveOptions { + filter: RegExp + namespace?: string +} + +/** Documentation: https://esbuild.github.io/plugins/#on-resolve-arguments */ +export interface OnResolveArgs { + path: string + importer: string + namespace: string + resolveDir: string + kind: ImportKind + pluginData: any +} + +export type ImportKind = + | 'entry-point' + + // JS + | 'import-statement' + | 'require-call' + | 'dynamic-import' + | 'require-resolve' + + // CSS + | 'import-rule' + | 'composes-from' + | 'url-token' + +/** Documentation: https://esbuild.github.io/plugins/#on-resolve-results */ +export interface OnResolveResult { + pluginName?: string + + errors?: PartialMessage[] + warnings?: PartialMessage[] + + path?: string + external?: boolean + sideEffects?: boolean + namespace?: string + suffix?: string + pluginData?: any + + watchFiles?: string[] + watchDirs?: string[] +} + +/** Documentation: https://esbuild.github.io/plugins/#on-load-options */ +export interface OnLoadOptions { + filter: RegExp + namespace?: string +} + +/** Documentation: https://esbuild.github.io/plugins/#on-load-arguments */ +export interface OnLoadArgs { + path: string + namespace: string + suffix: string + pluginData: any +} + +/** Documentation: https://esbuild.github.io/plugins/#on-load-results */ +export interface OnLoadResult { + pluginName?: string + + errors?: PartialMessage[] + warnings?: PartialMessage[] + + contents?: string | Uint8Array + resolveDir?: string + loader?: Loader + pluginData?: any + + watchFiles?: string[] + watchDirs?: string[] +} + +export interface PartialMessage { + id?: string + pluginName?: string + text?: string + location?: Partial | null + notes?: PartialNote[] + detail?: any +} + +export interface PartialNote { + text?: string + location?: Partial | null +} + +/** Documentation: https://esbuild.github.io/api/#metafile */ +export interface Metafile { + inputs: { + [path: string]: { + bytes: number + imports: { + path: string + kind: ImportKind + external?: boolean + original?: string + }[] + format?: 'cjs' | 'esm' + } + } + outputs: { + [path: string]: { + bytes: number + inputs: { + [path: string]: { + bytesInOutput: number + } + } + imports: { + path: string + kind: ImportKind | 'file-loader' + external?: boolean + }[] + exports: string[] + entryPoint?: string + cssBundle?: string + } + } +} + +export interface FormatMessagesOptions { + kind: 'error' | 'warning' + color?: boolean + terminalWidth?: number +} + +export interface AnalyzeMetafileOptions { + color?: boolean + verbose?: boolean +} + +export interface WatchOptions { +} + +export interface BuildContext { + /** Documentation: https://esbuild.github.io/api/#rebuild */ + rebuild(): Promise> + + /** Documentation: https://esbuild.github.io/api/#watch */ + watch(options?: WatchOptions): Promise + + /** Documentation: https://esbuild.github.io/api/#serve */ + serve(options?: ServeOptions): Promise + + cancel(): Promise + dispose(): Promise +} + +// This is a TypeScript type-level function which replaces any keys in "In" +// that aren't in "Out" with "never". We use this to reject properties with +// typos in object literals. See: https://stackoverflow.com/questions/49580725 +type SameShape = In & { [Key in Exclude]: never } + +/** + * This function invokes the "esbuild" command-line tool for you. It returns a + * promise that either resolves with a "BuildResult" object or rejects with a + * "BuildFailure" object. + * + * - Works in node: yes + * - Works in browser: yes + * + * Documentation: https://esbuild.github.io/api/#build + */ +export declare function build(options: SameShape): Promise> + +/** + * This is the advanced long-running form of "build" that supports additional + * features such as watch mode and a local development server. + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#build + */ +export declare function context(options: SameShape): Promise> + +/** + * This function transforms a single JavaScript file. It can be used to minify + * JavaScript, convert TypeScript/JSX to JavaScript, or convert newer JavaScript + * to older JavaScript. It returns a promise that is either resolved with a + * "TransformResult" object or rejected with a "TransformFailure" object. + * + * - Works in node: yes + * - Works in browser: yes + * + * Documentation: https://esbuild.github.io/api/#transform + */ +export declare function transform(input: string | Uint8Array, options?: SameShape): Promise> + +/** + * Converts log messages to formatted message strings suitable for printing in + * the terminal. This allows you to reuse the built-in behavior of esbuild's + * log message formatter. This is a batch-oriented API for efficiency. + * + * - Works in node: yes + * - Works in browser: yes + */ +export declare function formatMessages(messages: PartialMessage[], options: FormatMessagesOptions): Promise + +/** + * Pretty-prints an analysis of the metafile JSON to a string. This is just for + * convenience to be able to match esbuild's pretty-printing exactly. If you want + * to customize it, you can just inspect the data in the metafile yourself. + * + * - Works in node: yes + * - Works in browser: yes + * + * Documentation: https://esbuild.github.io/api/#analyze + */ +export declare function analyzeMetafile(metafile: Metafile | string, options?: AnalyzeMetafileOptions): Promise + +/** + * A synchronous version of "build". + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#build + */ +export declare function buildSync(options: SameShape): BuildResult + +/** + * A synchronous version of "transform". + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#transform + */ +export declare function transformSync(input: string | Uint8Array, options?: SameShape): TransformResult + +/** + * A synchronous version of "formatMessages". + * + * - Works in node: yes + * - Works in browser: no + */ +export declare function formatMessagesSync(messages: PartialMessage[], options: FormatMessagesOptions): string[] + +/** + * A synchronous version of "analyzeMetafile". + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#analyze + */ +export declare function analyzeMetafileSync(metafile: Metafile | string, options?: AnalyzeMetafileOptions): string + +/** + * This configures the browser-based version of esbuild. It is necessary to + * call this first and wait for the returned promise to be resolved before + * making other API calls when using esbuild in the browser. + * + * - Works in node: yes + * - Works in browser: yes ("options" is required) + * + * Documentation: https://esbuild.github.io/api/#browser + */ +export declare function initialize(options: InitializeOptions): Promise + +export interface InitializeOptions { + /** + * The URL of the "esbuild.wasm" file. This must be provided when running + * esbuild in the browser. + */ + wasmURL?: string | URL + + /** + * The result of calling "new WebAssembly.Module(buffer)" where "buffer" + * is a typed array or ArrayBuffer containing the binary code of the + * "esbuild.wasm" file. + * + * You can use this as an alternative to "wasmURL" for environments where it's + * not possible to download the WebAssembly module. + */ + wasmModule?: WebAssembly.Module + + /** + * By default esbuild runs the WebAssembly-based browser API in a web worker + * to avoid blocking the UI thread. This can be disabled by setting "worker" + * to false. + */ + worker?: boolean +} + +export let version: string diff --git a/node_modules/esbuild/lib/main.js b/node_modules/esbuild/lib/main.js new file mode 100644 index 0000000..a16f6b4 --- /dev/null +++ b/node_modules/esbuild/lib/main.js @@ -0,0 +1,2393 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// lib/npm/node.ts +var node_exports = {}; +__export(node_exports, { + analyzeMetafile: () => analyzeMetafile, + analyzeMetafileSync: () => analyzeMetafileSync, + build: () => build, + buildSync: () => buildSync, + context: () => context, + default: () => node_default, + formatMessages: () => formatMessages, + formatMessagesSync: () => formatMessagesSync, + initialize: () => initialize, + transform: () => transform, + transformSync: () => transformSync, + version: () => version +}); +module.exports = __toCommonJS(node_exports); + +// lib/shared/stdio_protocol.ts +function encodePacket(packet) { + let visit = (value) => { + if (value === null) { + bb.write8(0); + } else if (typeof value === "boolean") { + bb.write8(1); + bb.write8(+value); + } else if (typeof value === "number") { + bb.write8(2); + bb.write32(value | 0); + } else if (typeof value === "string") { + bb.write8(3); + bb.write(encodeUTF8(value)); + } else if (value instanceof Uint8Array) { + bb.write8(4); + bb.write(value); + } else if (value instanceof Array) { + bb.write8(5); + bb.write32(value.length); + for (let item of value) { + visit(item); + } + } else { + let keys = Object.keys(value); + bb.write8(6); + bb.write32(keys.length); + for (let key of keys) { + bb.write(encodeUTF8(key)); + visit(value[key]); + } + } + }; + let bb = new ByteBuffer(); + bb.write32(0); + bb.write32(packet.id << 1 | +!packet.isRequest); + visit(packet.value); + writeUInt32LE(bb.buf, bb.len - 4, 0); + return bb.buf.subarray(0, bb.len); +} +function decodePacket(bytes) { + let visit = () => { + switch (bb.read8()) { + case 0: + return null; + case 1: + return !!bb.read8(); + case 2: + return bb.read32(); + case 3: + return decodeUTF8(bb.read()); + case 4: + return bb.read(); + case 5: { + let count = bb.read32(); + let value2 = []; + for (let i = 0; i < count; i++) { + value2.push(visit()); + } + return value2; + } + case 6: { + let count = bb.read32(); + let value2 = {}; + for (let i = 0; i < count; i++) { + value2[decodeUTF8(bb.read())] = visit(); + } + return value2; + } + default: + throw new Error("Invalid packet"); + } + }; + let bb = new ByteBuffer(bytes); + let id = bb.read32(); + let isRequest = (id & 1) === 0; + id >>>= 1; + let value = visit(); + if (bb.ptr !== bytes.length) { + throw new Error("Invalid packet"); + } + return { id, isRequest, value }; +} +var ByteBuffer = class { + constructor(buf = new Uint8Array(1024)) { + this.buf = buf; + this.len = 0; + this.ptr = 0; + } + _write(delta) { + if (this.len + delta > this.buf.length) { + let clone = new Uint8Array((this.len + delta) * 2); + clone.set(this.buf); + this.buf = clone; + } + this.len += delta; + return this.len - delta; + } + write8(value) { + let offset = this._write(1); + this.buf[offset] = value; + } + write32(value) { + let offset = this._write(4); + writeUInt32LE(this.buf, value, offset); + } + write(bytes) { + let offset = this._write(4 + bytes.length); + writeUInt32LE(this.buf, bytes.length, offset); + this.buf.set(bytes, offset + 4); + } + _read(delta) { + if (this.ptr + delta > this.buf.length) { + throw new Error("Invalid packet"); + } + this.ptr += delta; + return this.ptr - delta; + } + read8() { + return this.buf[this._read(1)]; + } + read32() { + return readUInt32LE(this.buf, this._read(4)); + } + read() { + let length = this.read32(); + let bytes = new Uint8Array(length); + let ptr = this._read(bytes.length); + bytes.set(this.buf.subarray(ptr, ptr + length)); + return bytes; + } +}; +var encodeUTF8; +var decodeUTF8; +var encodeInvariant; +if (typeof TextEncoder !== "undefined" && typeof TextDecoder !== "undefined") { + let encoder = new TextEncoder(); + let decoder = new TextDecoder(); + encodeUTF8 = (text) => encoder.encode(text); + decodeUTF8 = (bytes) => decoder.decode(bytes); + encodeInvariant = 'new TextEncoder().encode("")'; +} else if (typeof Buffer !== "undefined") { + encodeUTF8 = (text) => Buffer.from(text); + decodeUTF8 = (bytes) => { + let { buffer, byteOffset, byteLength } = bytes; + return Buffer.from(buffer, byteOffset, byteLength).toString(); + }; + encodeInvariant = 'Buffer.from("")'; +} else { + throw new Error("No UTF-8 codec found"); +} +if (!(encodeUTF8("") instanceof Uint8Array)) + throw new Error(`Invariant violation: "${encodeInvariant} instanceof Uint8Array" is incorrectly false + +This indicates that your JavaScript environment is broken. You cannot use +esbuild in this environment because esbuild relies on this invariant. This +is not a problem with esbuild. You need to fix your environment instead. +`); +function readUInt32LE(buffer, offset) { + return buffer[offset++] | buffer[offset++] << 8 | buffer[offset++] << 16 | buffer[offset++] << 24; +} +function writeUInt32LE(buffer, value, offset) { + buffer[offset++] = value; + buffer[offset++] = value >> 8; + buffer[offset++] = value >> 16; + buffer[offset++] = value >> 24; +} + +// lib/shared/common.ts +var quote = JSON.stringify; +var buildLogLevelDefault = "warning"; +var transformLogLevelDefault = "silent"; +function validateTarget(target) { + validateStringValue(target, "target"); + if (target.indexOf(",") >= 0) + throw new Error(`Invalid target: ${target}`); + return target; +} +var canBeAnything = () => null; +var mustBeBoolean = (value) => typeof value === "boolean" ? null : "a boolean"; +var mustBeString = (value) => typeof value === "string" ? null : "a string"; +var mustBeRegExp = (value) => value instanceof RegExp ? null : "a RegExp object"; +var mustBeInteger = (value) => typeof value === "number" && value === (value | 0) ? null : "an integer"; +var mustBeFunction = (value) => typeof value === "function" ? null : "a function"; +var mustBeArray = (value) => Array.isArray(value) ? null : "an array"; +var mustBeObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? null : "an object"; +var mustBeEntryPoints = (value) => typeof value === "object" && value !== null ? null : "an array or an object"; +var mustBeWebAssemblyModule = (value) => value instanceof WebAssembly.Module ? null : "a WebAssembly.Module"; +var mustBeObjectOrNull = (value) => typeof value === "object" && !Array.isArray(value) ? null : "an object or null"; +var mustBeStringOrBoolean = (value) => typeof value === "string" || typeof value === "boolean" ? null : "a string or a boolean"; +var mustBeStringOrObject = (value) => typeof value === "string" || typeof value === "object" && value !== null && !Array.isArray(value) ? null : "a string or an object"; +var mustBeStringOrArray = (value) => typeof value === "string" || Array.isArray(value) ? null : "a string or an array"; +var mustBeStringOrUint8Array = (value) => typeof value === "string" || value instanceof Uint8Array ? null : "a string or a Uint8Array"; +var mustBeStringOrURL = (value) => typeof value === "string" || value instanceof URL ? null : "a string or a URL"; +function getFlag(object, keys, key, mustBeFn) { + let value = object[key]; + keys[key + ""] = true; + if (value === void 0) + return void 0; + let mustBe = mustBeFn(value); + if (mustBe !== null) + throw new Error(`${quote(key)} must be ${mustBe}`); + return value; +} +function checkForInvalidFlags(object, keys, where) { + for (let key in object) { + if (!(key in keys)) { + throw new Error(`Invalid option ${where}: ${quote(key)}`); + } + } +} +function validateInitializeOptions(options) { + let keys = /* @__PURE__ */ Object.create(null); + let wasmURL = getFlag(options, keys, "wasmURL", mustBeStringOrURL); + let wasmModule = getFlag(options, keys, "wasmModule", mustBeWebAssemblyModule); + let worker = getFlag(options, keys, "worker", mustBeBoolean); + checkForInvalidFlags(options, keys, "in initialize() call"); + return { + wasmURL, + wasmModule, + worker + }; +} +function validateMangleCache(mangleCache) { + let validated; + if (mangleCache !== void 0) { + validated = /* @__PURE__ */ Object.create(null); + for (let key in mangleCache) { + let value = mangleCache[key]; + if (typeof value === "string" || value === false) { + validated[key] = value; + } else { + throw new Error(`Expected ${quote(key)} in mangle cache to map to either a string or false`); + } + } + } + return validated; +} +function pushLogFlags(flags, options, keys, isTTY2, logLevelDefault) { + let color = getFlag(options, keys, "color", mustBeBoolean); + let logLevel = getFlag(options, keys, "logLevel", mustBeString); + let logLimit = getFlag(options, keys, "logLimit", mustBeInteger); + if (color !== void 0) + flags.push(`--color=${color}`); + else if (isTTY2) + flags.push(`--color=true`); + flags.push(`--log-level=${logLevel || logLevelDefault}`); + flags.push(`--log-limit=${logLimit || 0}`); +} +function validateStringValue(value, what, key) { + if (typeof value !== "string") { + throw new Error(`Expected value for ${what}${key !== void 0 ? " " + quote(key) : ""} to be a string, got ${typeof value} instead`); + } + return value; +} +function pushCommonFlags(flags, options, keys) { + let legalComments = getFlag(options, keys, "legalComments", mustBeString); + let sourceRoot = getFlag(options, keys, "sourceRoot", mustBeString); + let sourcesContent = getFlag(options, keys, "sourcesContent", mustBeBoolean); + let target = getFlag(options, keys, "target", mustBeStringOrArray); + let format = getFlag(options, keys, "format", mustBeString); + let globalName = getFlag(options, keys, "globalName", mustBeString); + let mangleProps = getFlag(options, keys, "mangleProps", mustBeRegExp); + let reserveProps = getFlag(options, keys, "reserveProps", mustBeRegExp); + let mangleQuoted = getFlag(options, keys, "mangleQuoted", mustBeBoolean); + let minify = getFlag(options, keys, "minify", mustBeBoolean); + let minifySyntax = getFlag(options, keys, "minifySyntax", mustBeBoolean); + let minifyWhitespace = getFlag(options, keys, "minifyWhitespace", mustBeBoolean); + let minifyIdentifiers = getFlag(options, keys, "minifyIdentifiers", mustBeBoolean); + let lineLimit = getFlag(options, keys, "lineLimit", mustBeInteger); + let drop = getFlag(options, keys, "drop", mustBeArray); + let dropLabels = getFlag(options, keys, "dropLabels", mustBeArray); + let charset = getFlag(options, keys, "charset", mustBeString); + let treeShaking = getFlag(options, keys, "treeShaking", mustBeBoolean); + let ignoreAnnotations = getFlag(options, keys, "ignoreAnnotations", mustBeBoolean); + let jsx = getFlag(options, keys, "jsx", mustBeString); + let jsxFactory = getFlag(options, keys, "jsxFactory", mustBeString); + let jsxFragment = getFlag(options, keys, "jsxFragment", mustBeString); + let jsxImportSource = getFlag(options, keys, "jsxImportSource", mustBeString); + let jsxDev = getFlag(options, keys, "jsxDev", mustBeBoolean); + let jsxSideEffects = getFlag(options, keys, "jsxSideEffects", mustBeBoolean); + let define = getFlag(options, keys, "define", mustBeObject); + let logOverride = getFlag(options, keys, "logOverride", mustBeObject); + let supported = getFlag(options, keys, "supported", mustBeObject); + let pure = getFlag(options, keys, "pure", mustBeArray); + let keepNames = getFlag(options, keys, "keepNames", mustBeBoolean); + let platform = getFlag(options, keys, "platform", mustBeString); + let tsconfigRaw = getFlag(options, keys, "tsconfigRaw", mustBeStringOrObject); + if (legalComments) + flags.push(`--legal-comments=${legalComments}`); + if (sourceRoot !== void 0) + flags.push(`--source-root=${sourceRoot}`); + if (sourcesContent !== void 0) + flags.push(`--sources-content=${sourcesContent}`); + if (target) { + if (Array.isArray(target)) + flags.push(`--target=${Array.from(target).map(validateTarget).join(",")}`); + else + flags.push(`--target=${validateTarget(target)}`); + } + if (format) + flags.push(`--format=${format}`); + if (globalName) + flags.push(`--global-name=${globalName}`); + if (platform) + flags.push(`--platform=${platform}`); + if (tsconfigRaw) + flags.push(`--tsconfig-raw=${typeof tsconfigRaw === "string" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`); + if (minify) + flags.push("--minify"); + if (minifySyntax) + flags.push("--minify-syntax"); + if (minifyWhitespace) + flags.push("--minify-whitespace"); + if (minifyIdentifiers) + flags.push("--minify-identifiers"); + if (lineLimit) + flags.push(`--line-limit=${lineLimit}`); + if (charset) + flags.push(`--charset=${charset}`); + if (treeShaking !== void 0) + flags.push(`--tree-shaking=${treeShaking}`); + if (ignoreAnnotations) + flags.push(`--ignore-annotations`); + if (drop) + for (let what of drop) + flags.push(`--drop:${validateStringValue(what, "drop")}`); + if (dropLabels) + flags.push(`--drop-labels=${Array.from(dropLabels).map((what) => validateStringValue(what, "dropLabels")).join(",")}`); + if (mangleProps) + flags.push(`--mangle-props=${mangleProps.source}`); + if (reserveProps) + flags.push(`--reserve-props=${reserveProps.source}`); + if (mangleQuoted !== void 0) + flags.push(`--mangle-quoted=${mangleQuoted}`); + if (jsx) + flags.push(`--jsx=${jsx}`); + if (jsxFactory) + flags.push(`--jsx-factory=${jsxFactory}`); + if (jsxFragment) + flags.push(`--jsx-fragment=${jsxFragment}`); + if (jsxImportSource) + flags.push(`--jsx-import-source=${jsxImportSource}`); + if (jsxDev) + flags.push(`--jsx-dev`); + if (jsxSideEffects) + flags.push(`--jsx-side-effects`); + if (define) { + for (let key in define) { + if (key.indexOf("=") >= 0) + throw new Error(`Invalid define: ${key}`); + flags.push(`--define:${key}=${validateStringValue(define[key], "define", key)}`); + } + } + if (logOverride) { + for (let key in logOverride) { + if (key.indexOf("=") >= 0) + throw new Error(`Invalid log override: ${key}`); + flags.push(`--log-override:${key}=${validateStringValue(logOverride[key], "log override", key)}`); + } + } + if (supported) { + for (let key in supported) { + if (key.indexOf("=") >= 0) + throw new Error(`Invalid supported: ${key}`); + const value = supported[key]; + if (typeof value !== "boolean") + throw new Error(`Expected value for supported ${quote(key)} to be a boolean, got ${typeof value} instead`); + flags.push(`--supported:${key}=${value}`); + } + } + if (pure) + for (let fn of pure) + flags.push(`--pure:${validateStringValue(fn, "pure")}`); + if (keepNames) + flags.push(`--keep-names`); +} +function flagsForBuildOptions(callName, options, isTTY2, logLevelDefault, writeDefault) { + var _a2; + let flags = []; + let entries = []; + let keys = /* @__PURE__ */ Object.create(null); + let stdinContents = null; + let stdinResolveDir = null; + pushLogFlags(flags, options, keys, isTTY2, logLevelDefault); + pushCommonFlags(flags, options, keys); + let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); + let bundle = getFlag(options, keys, "bundle", mustBeBoolean); + let splitting = getFlag(options, keys, "splitting", mustBeBoolean); + let preserveSymlinks = getFlag(options, keys, "preserveSymlinks", mustBeBoolean); + let metafile = getFlag(options, keys, "metafile", mustBeBoolean); + let outfile = getFlag(options, keys, "outfile", mustBeString); + let outdir = getFlag(options, keys, "outdir", mustBeString); + let outbase = getFlag(options, keys, "outbase", mustBeString); + let tsconfig = getFlag(options, keys, "tsconfig", mustBeString); + let resolveExtensions = getFlag(options, keys, "resolveExtensions", mustBeArray); + let nodePathsInput = getFlag(options, keys, "nodePaths", mustBeArray); + let mainFields = getFlag(options, keys, "mainFields", mustBeArray); + let conditions = getFlag(options, keys, "conditions", mustBeArray); + let external = getFlag(options, keys, "external", mustBeArray); + let packages = getFlag(options, keys, "packages", mustBeString); + let alias = getFlag(options, keys, "alias", mustBeObject); + let loader = getFlag(options, keys, "loader", mustBeObject); + let outExtension = getFlag(options, keys, "outExtension", mustBeObject); + let publicPath = getFlag(options, keys, "publicPath", mustBeString); + let entryNames = getFlag(options, keys, "entryNames", mustBeString); + let chunkNames = getFlag(options, keys, "chunkNames", mustBeString); + let assetNames = getFlag(options, keys, "assetNames", mustBeString); + let inject = getFlag(options, keys, "inject", mustBeArray); + let banner = getFlag(options, keys, "banner", mustBeObject); + let footer = getFlag(options, keys, "footer", mustBeObject); + let entryPoints = getFlag(options, keys, "entryPoints", mustBeEntryPoints); + let absWorkingDir = getFlag(options, keys, "absWorkingDir", mustBeString); + let stdin = getFlag(options, keys, "stdin", mustBeObject); + let write = (_a2 = getFlag(options, keys, "write", mustBeBoolean)) != null ? _a2 : writeDefault; + let allowOverwrite = getFlag(options, keys, "allowOverwrite", mustBeBoolean); + let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); + keys.plugins = true; + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (sourcemap) + flags.push(`--sourcemap${sourcemap === true ? "" : `=${sourcemap}`}`); + if (bundle) + flags.push("--bundle"); + if (allowOverwrite) + flags.push("--allow-overwrite"); + if (splitting) + flags.push("--splitting"); + if (preserveSymlinks) + flags.push("--preserve-symlinks"); + if (metafile) + flags.push(`--metafile`); + if (outfile) + flags.push(`--outfile=${outfile}`); + if (outdir) + flags.push(`--outdir=${outdir}`); + if (outbase) + flags.push(`--outbase=${outbase}`); + if (tsconfig) + flags.push(`--tsconfig=${tsconfig}`); + if (packages) + flags.push(`--packages=${packages}`); + if (resolveExtensions) { + let values = []; + for (let value of resolveExtensions) { + validateStringValue(value, "resolve extension"); + if (value.indexOf(",") >= 0) + throw new Error(`Invalid resolve extension: ${value}`); + values.push(value); + } + flags.push(`--resolve-extensions=${values.join(",")}`); + } + if (publicPath) + flags.push(`--public-path=${publicPath}`); + if (entryNames) + flags.push(`--entry-names=${entryNames}`); + if (chunkNames) + flags.push(`--chunk-names=${chunkNames}`); + if (assetNames) + flags.push(`--asset-names=${assetNames}`); + if (mainFields) { + let values = []; + for (let value of mainFields) { + validateStringValue(value, "main field"); + if (value.indexOf(",") >= 0) + throw new Error(`Invalid main field: ${value}`); + values.push(value); + } + flags.push(`--main-fields=${values.join(",")}`); + } + if (conditions) { + let values = []; + for (let value of conditions) { + validateStringValue(value, "condition"); + if (value.indexOf(",") >= 0) + throw new Error(`Invalid condition: ${value}`); + values.push(value); + } + flags.push(`--conditions=${values.join(",")}`); + } + if (external) + for (let name of external) + flags.push(`--external:${validateStringValue(name, "external")}`); + if (alias) { + for (let old in alias) { + if (old.indexOf("=") >= 0) + throw new Error(`Invalid package name in alias: ${old}`); + flags.push(`--alias:${old}=${validateStringValue(alias[old], "alias", old)}`); + } + } + if (banner) { + for (let type in banner) { + if (type.indexOf("=") >= 0) + throw new Error(`Invalid banner file type: ${type}`); + flags.push(`--banner:${type}=${validateStringValue(banner[type], "banner", type)}`); + } + } + if (footer) { + for (let type in footer) { + if (type.indexOf("=") >= 0) + throw new Error(`Invalid footer file type: ${type}`); + flags.push(`--footer:${type}=${validateStringValue(footer[type], "footer", type)}`); + } + } + if (inject) + for (let path3 of inject) + flags.push(`--inject:${validateStringValue(path3, "inject")}`); + if (loader) { + for (let ext in loader) { + if (ext.indexOf("=") >= 0) + throw new Error(`Invalid loader extension: ${ext}`); + flags.push(`--loader:${ext}=${validateStringValue(loader[ext], "loader", ext)}`); + } + } + if (outExtension) { + for (let ext in outExtension) { + if (ext.indexOf("=") >= 0) + throw new Error(`Invalid out extension: ${ext}`); + flags.push(`--out-extension:${ext}=${validateStringValue(outExtension[ext], "out extension", ext)}`); + } + } + if (entryPoints) { + if (Array.isArray(entryPoints)) { + for (let i = 0, n = entryPoints.length; i < n; i++) { + let entryPoint = entryPoints[i]; + if (typeof entryPoint === "object" && entryPoint !== null) { + let entryPointKeys = /* @__PURE__ */ Object.create(null); + let input = getFlag(entryPoint, entryPointKeys, "in", mustBeString); + let output = getFlag(entryPoint, entryPointKeys, "out", mustBeString); + checkForInvalidFlags(entryPoint, entryPointKeys, "in entry point at index " + i); + if (input === void 0) + throw new Error('Missing property "in" for entry point at index ' + i); + if (output === void 0) + throw new Error('Missing property "out" for entry point at index ' + i); + entries.push([output, input]); + } else { + entries.push(["", validateStringValue(entryPoint, "entry point at index " + i)]); + } + } + } else { + for (let key in entryPoints) { + entries.push([key, validateStringValue(entryPoints[key], "entry point", key)]); + } + } + } + if (stdin) { + let stdinKeys = /* @__PURE__ */ Object.create(null); + let contents = getFlag(stdin, stdinKeys, "contents", mustBeStringOrUint8Array); + let resolveDir = getFlag(stdin, stdinKeys, "resolveDir", mustBeString); + let sourcefile = getFlag(stdin, stdinKeys, "sourcefile", mustBeString); + let loader2 = getFlag(stdin, stdinKeys, "loader", mustBeString); + checkForInvalidFlags(stdin, stdinKeys, 'in "stdin" object'); + if (sourcefile) + flags.push(`--sourcefile=${sourcefile}`); + if (loader2) + flags.push(`--loader=${loader2}`); + if (resolveDir) + stdinResolveDir = resolveDir; + if (typeof contents === "string") + stdinContents = encodeUTF8(contents); + else if (contents instanceof Uint8Array) + stdinContents = contents; + } + let nodePaths = []; + if (nodePathsInput) { + for (let value of nodePathsInput) { + value += ""; + nodePaths.push(value); + } + } + return { + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir, + nodePaths, + mangleCache: validateMangleCache(mangleCache) + }; +} +function flagsForTransformOptions(callName, options, isTTY2, logLevelDefault) { + let flags = []; + let keys = /* @__PURE__ */ Object.create(null); + pushLogFlags(flags, options, keys, isTTY2, logLevelDefault); + pushCommonFlags(flags, options, keys); + let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); + let sourcefile = getFlag(options, keys, "sourcefile", mustBeString); + let loader = getFlag(options, keys, "loader", mustBeString); + let banner = getFlag(options, keys, "banner", mustBeString); + let footer = getFlag(options, keys, "footer", mustBeString); + let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (sourcemap) + flags.push(`--sourcemap=${sourcemap === true ? "external" : sourcemap}`); + if (sourcefile) + flags.push(`--sourcefile=${sourcefile}`); + if (loader) + flags.push(`--loader=${loader}`); + if (banner) + flags.push(`--banner=${banner}`); + if (footer) + flags.push(`--footer=${footer}`); + return { + flags, + mangleCache: validateMangleCache(mangleCache) + }; +} +function createChannel(streamIn) { + const requestCallbacksByKey = {}; + const closeData = { didClose: false, reason: "" }; + let responseCallbacks = {}; + let nextRequestID = 0; + let nextBuildKey = 0; + let stdout = new Uint8Array(16 * 1024); + let stdoutUsed = 0; + let readFromStdout = (chunk) => { + let limit = stdoutUsed + chunk.length; + if (limit > stdout.length) { + let swap = new Uint8Array(limit * 2); + swap.set(stdout); + stdout = swap; + } + stdout.set(chunk, stdoutUsed); + stdoutUsed += chunk.length; + let offset = 0; + while (offset + 4 <= stdoutUsed) { + let length = readUInt32LE(stdout, offset); + if (offset + 4 + length > stdoutUsed) { + break; + } + offset += 4; + handleIncomingPacket(stdout.subarray(offset, offset + length)); + offset += length; + } + if (offset > 0) { + stdout.copyWithin(0, offset, stdoutUsed); + stdoutUsed -= offset; + } + }; + let afterClose = (error) => { + closeData.didClose = true; + if (error) + closeData.reason = ": " + (error.message || error); + const text = "The service was stopped" + closeData.reason; + for (let id in responseCallbacks) { + responseCallbacks[id](text, null); + } + responseCallbacks = {}; + }; + let sendRequest = (refs, value, callback) => { + if (closeData.didClose) + return callback("The service is no longer running" + closeData.reason, null); + let id = nextRequestID++; + responseCallbacks[id] = (error, response) => { + try { + callback(error, response); + } finally { + if (refs) + refs.unref(); + } + }; + if (refs) + refs.ref(); + streamIn.writeToStdin(encodePacket({ id, isRequest: true, value })); + }; + let sendResponse = (id, value) => { + if (closeData.didClose) + throw new Error("The service is no longer running" + closeData.reason); + streamIn.writeToStdin(encodePacket({ id, isRequest: false, value })); + }; + let handleRequest = async (id, request) => { + try { + if (request.command === "ping") { + sendResponse(id, {}); + return; + } + if (typeof request.key === "number") { + const requestCallbacks = requestCallbacksByKey[request.key]; + if (requestCallbacks) { + const callback = requestCallbacks[request.command]; + if (callback) { + await callback(id, request); + return; + } + } + } + throw new Error(`Invalid command: ` + request.command); + } catch (e) { + const errors = [extractErrorMessageV8(e, streamIn, null, void 0, "")]; + try { + sendResponse(id, { errors }); + } catch { + } + } + }; + let isFirstPacket = true; + let handleIncomingPacket = (bytes) => { + if (isFirstPacket) { + isFirstPacket = false; + let binaryVersion = String.fromCharCode(...bytes); + if (binaryVersion !== "0.18.20") { + throw new Error(`Cannot start service: Host version "${"0.18.20"}" does not match binary version ${quote(binaryVersion)}`); + } + return; + } + let packet = decodePacket(bytes); + if (packet.isRequest) { + handleRequest(packet.id, packet.value); + } else { + let callback = responseCallbacks[packet.id]; + delete responseCallbacks[packet.id]; + if (packet.value.error) + callback(packet.value.error, {}); + else + callback(null, packet.value); + } + }; + let buildOrContext = ({ callName, refs, options, isTTY: isTTY2, defaultWD: defaultWD2, callback }) => { + let refCount = 0; + const buildKey = nextBuildKey++; + const requestCallbacks = {}; + const buildRefs = { + ref() { + if (++refCount === 1) { + if (refs) + refs.ref(); + } + }, + unref() { + if (--refCount === 0) { + delete requestCallbacksByKey[buildKey]; + if (refs) + refs.unref(); + } + } + }; + requestCallbacksByKey[buildKey] = requestCallbacks; + buildRefs.ref(); + buildOrContextImpl( + callName, + buildKey, + sendRequest, + sendResponse, + buildRefs, + streamIn, + requestCallbacks, + options, + isTTY2, + defaultWD2, + (err, res) => { + try { + callback(err, res); + } finally { + buildRefs.unref(); + } + } + ); + }; + let transform2 = ({ callName, refs, input, options, isTTY: isTTY2, fs: fs3, callback }) => { + const details = createObjectStash(); + let start = (inputPath) => { + try { + if (typeof input !== "string" && !(input instanceof Uint8Array)) + throw new Error('The input to "transform" must be a string or a Uint8Array'); + let { + flags, + mangleCache + } = flagsForTransformOptions(callName, options, isTTY2, transformLogLevelDefault); + let request = { + command: "transform", + flags, + inputFS: inputPath !== null, + input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input + }; + if (mangleCache) + request.mangleCache = mangleCache; + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + let errors = replaceDetailsInMessages(response.errors, details); + let warnings = replaceDetailsInMessages(response.warnings, details); + let outstanding = 1; + let next = () => { + if (--outstanding === 0) { + let result = { + warnings, + code: response.code, + map: response.map, + mangleCache: void 0, + legalComments: void 0 + }; + if ("legalComments" in response) + result.legalComments = response == null ? void 0 : response.legalComments; + if (response.mangleCache) + result.mangleCache = response == null ? void 0 : response.mangleCache; + callback(null, result); + } + }; + if (errors.length > 0) + return callback(failureErrorWithLog("Transform failed", errors, warnings), null); + if (response.codeFS) { + outstanding++; + fs3.readFile(response.code, (err, contents) => { + if (err !== null) { + callback(err, null); + } else { + response.code = contents; + next(); + } + }); + } + if (response.mapFS) { + outstanding++; + fs3.readFile(response.map, (err, contents) => { + if (err !== null) { + callback(err, null); + } else { + response.map = contents; + next(); + } + }); + } + next(); + }); + } catch (e) { + let flags = []; + try { + pushLogFlags(flags, options, {}, isTTY2, transformLogLevelDefault); + } catch { + } + const error = extractErrorMessageV8(e, streamIn, details, void 0, ""); + sendRequest(refs, { command: "error", flags, error }, () => { + error.detail = details.load(error.detail); + callback(failureErrorWithLog("Transform failed", [error], []), null); + }); + } + }; + if ((typeof input === "string" || input instanceof Uint8Array) && input.length > 1024 * 1024) { + let next = start; + start = () => fs3.writeFile(input, next); + } + start(null); + }; + let formatMessages2 = ({ callName, refs, messages, options, callback }) => { + let result = sanitizeMessages(messages, "messages", null, ""); + if (!options) + throw new Error(`Missing second argument in ${callName}() call`); + let keys = {}; + let kind = getFlag(options, keys, "kind", mustBeString); + let color = getFlag(options, keys, "color", mustBeBoolean); + let terminalWidth = getFlag(options, keys, "terminalWidth", mustBeInteger); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (kind === void 0) + throw new Error(`Missing "kind" in ${callName}() call`); + if (kind !== "error" && kind !== "warning") + throw new Error(`Expected "kind" to be "error" or "warning" in ${callName}() call`); + let request = { + command: "format-msgs", + messages: result, + isWarning: kind === "warning" + }; + if (color !== void 0) + request.color = color; + if (terminalWidth !== void 0) + request.terminalWidth = terminalWidth; + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + callback(null, response.messages); + }); + }; + let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => { + if (options === void 0) + options = {}; + let keys = {}; + let color = getFlag(options, keys, "color", mustBeBoolean); + let verbose = getFlag(options, keys, "verbose", mustBeBoolean); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + let request = { + command: "analyze-metafile", + metafile + }; + if (color !== void 0) + request.color = color; + if (verbose !== void 0) + request.verbose = verbose; + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + callback(null, response.result); + }); + }; + return { + readFromStdout, + afterClose, + service: { + buildOrContext, + transform: transform2, + formatMessages: formatMessages2, + analyzeMetafile: analyzeMetafile2 + } + }; +} +function buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, isTTY2, defaultWD2, callback) { + const details = createObjectStash(); + const isContext = callName === "context"; + const handleError = (e, pluginName) => { + const flags = []; + try { + pushLogFlags(flags, options, {}, isTTY2, buildLogLevelDefault); + } catch { + } + const message = extractErrorMessageV8(e, streamIn, details, void 0, pluginName); + sendRequest(refs, { command: "error", flags, error: message }, () => { + message.detail = details.load(message.detail); + callback(failureErrorWithLog(isContext ? "Context failed" : "Build failed", [message], []), null); + }); + }; + let plugins; + if (typeof options === "object") { + const value = options.plugins; + if (value !== void 0) { + if (!Array.isArray(value)) + return handleError(new Error(`"plugins" must be an array`), ""); + plugins = value; + } + } + if (plugins && plugins.length > 0) { + if (streamIn.isSync) + return handleError(new Error("Cannot use plugins in synchronous API calls"), ""); + handlePlugins( + buildKey, + sendRequest, + sendResponse, + refs, + streamIn, + requestCallbacks, + options, + plugins, + details + ).then( + (result) => { + if (!result.ok) + return handleError(result.error, result.pluginName); + try { + buildOrContextContinue(result.requestPlugins, result.runOnEndCallbacks, result.scheduleOnDisposeCallbacks); + } catch (e) { + handleError(e, ""); + } + }, + (e) => handleError(e, "") + ); + return; + } + try { + buildOrContextContinue(null, (result, done) => done([], []), () => { + }); + } catch (e) { + handleError(e, ""); + } + function buildOrContextContinue(requestPlugins, runOnEndCallbacks, scheduleOnDisposeCallbacks) { + const writeDefault = streamIn.hasFS; + const { + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir, + nodePaths, + mangleCache + } = flagsForBuildOptions(callName, options, isTTY2, buildLogLevelDefault, writeDefault); + if (write && !streamIn.hasFS) + throw new Error(`The "write" option is unavailable in this environment`); + const request = { + command: "build", + key: buildKey, + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir: absWorkingDir || defaultWD2, + nodePaths, + context: isContext + }; + if (requestPlugins) + request.plugins = requestPlugins; + if (mangleCache) + request.mangleCache = mangleCache; + const buildResponseToResult = (response, callback2) => { + const result = { + errors: replaceDetailsInMessages(response.errors, details), + warnings: replaceDetailsInMessages(response.warnings, details), + outputFiles: void 0, + metafile: void 0, + mangleCache: void 0 + }; + const originalErrors = result.errors.slice(); + const originalWarnings = result.warnings.slice(); + if (response.outputFiles) + result.outputFiles = response.outputFiles.map(convertOutputFiles); + if (response.metafile) + result.metafile = JSON.parse(response.metafile); + if (response.mangleCache) + result.mangleCache = response.mangleCache; + if (response.writeToStdout !== void 0) + console.log(decodeUTF8(response.writeToStdout).replace(/\n$/, "")); + runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => { + if (originalErrors.length > 0 || onEndErrors.length > 0) { + const error = failureErrorWithLog("Build failed", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings)); + return callback2(error, null, onEndErrors, onEndWarnings); + } + callback2(null, result, onEndErrors, onEndWarnings); + }); + }; + let latestResultPromise; + let provideLatestResult; + if (isContext) + requestCallbacks["on-end"] = (id, request2) => new Promise((resolve) => { + buildResponseToResult(request2, (err, result, onEndErrors, onEndWarnings) => { + const response = { + errors: onEndErrors, + warnings: onEndWarnings + }; + if (provideLatestResult) + provideLatestResult(err, result); + latestResultPromise = void 0; + provideLatestResult = void 0; + sendResponse(id, response); + resolve(); + }); + }); + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + if (!isContext) { + return buildResponseToResult(response, (err, res) => { + scheduleOnDisposeCallbacks(); + return callback(err, res); + }); + } + if (response.errors.length > 0) { + return callback(failureErrorWithLog("Context failed", response.errors, response.warnings), null); + } + let didDispose = false; + const result = { + rebuild: () => { + if (!latestResultPromise) + latestResultPromise = new Promise((resolve, reject) => { + let settlePromise; + provideLatestResult = (err, result2) => { + if (!settlePromise) + settlePromise = () => err ? reject(err) : resolve(result2); + }; + const triggerAnotherBuild = () => { + const request2 = { + command: "rebuild", + key: buildKey + }; + sendRequest(refs, request2, (error2, response2) => { + if (error2) { + reject(new Error(error2)); + } else if (settlePromise) { + settlePromise(); + } else { + triggerAnotherBuild(); + } + }); + }; + triggerAnotherBuild(); + }); + return latestResultPromise; + }, + watch: (options2 = {}) => new Promise((resolve, reject) => { + if (!streamIn.hasFS) + throw new Error(`Cannot use the "watch" API in this environment`); + const keys = {}; + checkForInvalidFlags(options2, keys, `in watch() call`); + const request2 = { + command: "watch", + key: buildKey + }; + sendRequest(refs, request2, (error2) => { + if (error2) + reject(new Error(error2)); + else + resolve(void 0); + }); + }), + serve: (options2 = {}) => new Promise((resolve, reject) => { + if (!streamIn.hasFS) + throw new Error(`Cannot use the "serve" API in this environment`); + const keys = {}; + const port = getFlag(options2, keys, "port", mustBeInteger); + const host = getFlag(options2, keys, "host", mustBeString); + const servedir = getFlag(options2, keys, "servedir", mustBeString); + const keyfile = getFlag(options2, keys, "keyfile", mustBeString); + const certfile = getFlag(options2, keys, "certfile", mustBeString); + const fallback = getFlag(options2, keys, "fallback", mustBeString); + const onRequest = getFlag(options2, keys, "onRequest", mustBeFunction); + checkForInvalidFlags(options2, keys, `in serve() call`); + const request2 = { + command: "serve", + key: buildKey, + onRequest: !!onRequest + }; + if (port !== void 0) + request2.port = port; + if (host !== void 0) + request2.host = host; + if (servedir !== void 0) + request2.servedir = servedir; + if (keyfile !== void 0) + request2.keyfile = keyfile; + if (certfile !== void 0) + request2.certfile = certfile; + if (fallback !== void 0) + request2.fallback = fallback; + sendRequest(refs, request2, (error2, response2) => { + if (error2) + return reject(new Error(error2)); + if (onRequest) { + requestCallbacks["serve-request"] = (id, request3) => { + onRequest(request3.args); + sendResponse(id, {}); + }; + } + resolve(response2); + }); + }), + cancel: () => new Promise((resolve) => { + if (didDispose) + return resolve(); + const request2 = { + command: "cancel", + key: buildKey + }; + sendRequest(refs, request2, () => { + resolve(); + }); + }), + dispose: () => new Promise((resolve) => { + if (didDispose) + return resolve(); + didDispose = true; + const request2 = { + command: "dispose", + key: buildKey + }; + sendRequest(refs, request2, () => { + resolve(); + scheduleOnDisposeCallbacks(); + refs.unref(); + }); + }) + }; + refs.ref(); + callback(null, result); + }); + } +} +var handlePlugins = async (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details) => { + let onStartCallbacks = []; + let onEndCallbacks = []; + let onResolveCallbacks = {}; + let onLoadCallbacks = {}; + let onDisposeCallbacks = []; + let nextCallbackID = 0; + let i = 0; + let requestPlugins = []; + let isSetupDone = false; + plugins = [...plugins]; + for (let item of plugins) { + let keys = {}; + if (typeof item !== "object") + throw new Error(`Plugin at index ${i} must be an object`); + const name = getFlag(item, keys, "name", mustBeString); + if (typeof name !== "string" || name === "") + throw new Error(`Plugin at index ${i} is missing a name`); + try { + let setup = getFlag(item, keys, "setup", mustBeFunction); + if (typeof setup !== "function") + throw new Error(`Plugin is missing a setup function`); + checkForInvalidFlags(item, keys, `on plugin ${quote(name)}`); + let plugin = { + name, + onStart: false, + onEnd: false, + onResolve: [], + onLoad: [] + }; + i++; + let resolve = (path3, options = {}) => { + if (!isSetupDone) + throw new Error('Cannot call "resolve" before plugin setup has completed'); + if (typeof path3 !== "string") + throw new Error(`The path to resolve must be a string`); + let keys2 = /* @__PURE__ */ Object.create(null); + let pluginName = getFlag(options, keys2, "pluginName", mustBeString); + let importer = getFlag(options, keys2, "importer", mustBeString); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString); + let kind = getFlag(options, keys2, "kind", mustBeString); + let pluginData = getFlag(options, keys2, "pluginData", canBeAnything); + checkForInvalidFlags(options, keys2, "in resolve() call"); + return new Promise((resolve2, reject) => { + const request = { + command: "resolve", + path: path3, + key: buildKey, + pluginName: name + }; + if (pluginName != null) + request.pluginName = pluginName; + if (importer != null) + request.importer = importer; + if (namespace != null) + request.namespace = namespace; + if (resolveDir != null) + request.resolveDir = resolveDir; + if (kind != null) + request.kind = kind; + else + throw new Error(`Must specify "kind" when calling "resolve"`); + if (pluginData != null) + request.pluginData = details.store(pluginData); + sendRequest(refs, request, (error, response) => { + if (error !== null) + reject(new Error(error)); + else + resolve2({ + errors: replaceDetailsInMessages(response.errors, details), + warnings: replaceDetailsInMessages(response.warnings, details), + path: response.path, + external: response.external, + sideEffects: response.sideEffects, + namespace: response.namespace, + suffix: response.suffix, + pluginData: details.load(response.pluginData) + }); + }); + }); + }; + let promise = setup({ + initialOptions, + resolve, + onStart(callback) { + let registeredText = `This error came from the "onStart" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart"); + onStartCallbacks.push({ name, callback, note: registeredNote }); + plugin.onStart = true; + }, + onEnd(callback) { + let registeredText = `This error came from the "onEnd" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onEnd"); + onEndCallbacks.push({ name, callback, note: registeredNote }); + plugin.onEnd = true; + }, + onResolve(options, callback) { + let registeredText = `This error came from the "onResolve" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onResolve"); + let keys2 = {}; + let filter = getFlag(options, keys2, "filter", mustBeRegExp); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${quote(name)}`); + if (filter == null) + throw new Error(`onResolve() call is missing a filter`); + let id = nextCallbackID++; + onResolveCallbacks[id] = { name, callback, note: registeredNote }; + plugin.onResolve.push({ id, filter: filter.source, namespace: namespace || "" }); + }, + onLoad(options, callback) { + let registeredText = `This error came from the "onLoad" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onLoad"); + let keys2 = {}; + let filter = getFlag(options, keys2, "filter", mustBeRegExp); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${quote(name)}`); + if (filter == null) + throw new Error(`onLoad() call is missing a filter`); + let id = nextCallbackID++; + onLoadCallbacks[id] = { name, callback, note: registeredNote }; + plugin.onLoad.push({ id, filter: filter.source, namespace: namespace || "" }); + }, + onDispose(callback) { + onDisposeCallbacks.push(callback); + }, + esbuild: streamIn.esbuild + }); + if (promise) + await promise; + requestPlugins.push(plugin); + } catch (e) { + return { ok: false, error: e, pluginName: name }; + } + } + requestCallbacks["on-start"] = async (id, request) => { + let response = { errors: [], warnings: [] }; + await Promise.all(onStartCallbacks.map(async ({ name, callback, note }) => { + try { + let result = await callback(); + if (result != null) { + if (typeof result !== "object") + throw new Error(`Expected onStart() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${quote(name)}`); + if (errors != null) + response.errors.push(...sanitizeMessages(errors, "errors", details, name)); + if (warnings != null) + response.warnings.push(...sanitizeMessages(warnings, "warnings", details, name)); + } + } catch (e) { + response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name)); + } + })); + sendResponse(id, response); + }; + requestCallbacks["on-resolve"] = async (id, request) => { + let response = {}, name = "", callback, note; + for (let id2 of request.ids) { + try { + ({ name, callback, note } = onResolveCallbacks[id2]); + let result = await callback({ + path: request.path, + importer: request.importer, + namespace: request.namespace, + resolveDir: request.resolveDir, + kind: request.kind, + pluginData: details.load(request.pluginData) + }); + if (result != null) { + if (typeof result !== "object") + throw new Error(`Expected onResolve() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let pluginName = getFlag(result, keys, "pluginName", mustBeString); + let path3 = getFlag(result, keys, "path", mustBeString); + let namespace = getFlag(result, keys, "namespace", mustBeString); + let suffix = getFlag(result, keys, "suffix", mustBeString); + let external = getFlag(result, keys, "external", mustBeBoolean); + let sideEffects = getFlag(result, keys, "sideEffects", mustBeBoolean); + let pluginData = getFlag(result, keys, "pluginData", canBeAnything); + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray); + let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray); + checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`); + response.id = id2; + if (pluginName != null) + response.pluginName = pluginName; + if (path3 != null) + response.path = path3; + if (namespace != null) + response.namespace = namespace; + if (suffix != null) + response.suffix = suffix; + if (external != null) + response.external = external; + if (sideEffects != null) + response.sideEffects = sideEffects; + if (pluginData != null) + response.pluginData = details.store(pluginData); + if (errors != null) + response.errors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) + response.warnings = sanitizeMessages(warnings, "warnings", details, name); + if (watchFiles != null) + response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); + if (watchDirs != null) + response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); + break; + } + } catch (e) { + response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] }; + break; + } + } + sendResponse(id, response); + }; + requestCallbacks["on-load"] = async (id, request) => { + let response = {}, name = "", callback, note; + for (let id2 of request.ids) { + try { + ({ name, callback, note } = onLoadCallbacks[id2]); + let result = await callback({ + path: request.path, + namespace: request.namespace, + suffix: request.suffix, + pluginData: details.load(request.pluginData) + }); + if (result != null) { + if (typeof result !== "object") + throw new Error(`Expected onLoad() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let pluginName = getFlag(result, keys, "pluginName", mustBeString); + let contents = getFlag(result, keys, "contents", mustBeStringOrUint8Array); + let resolveDir = getFlag(result, keys, "resolveDir", mustBeString); + let pluginData = getFlag(result, keys, "pluginData", canBeAnything); + let loader = getFlag(result, keys, "loader", mustBeString); + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray); + let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray); + checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`); + response.id = id2; + if (pluginName != null) + response.pluginName = pluginName; + if (contents instanceof Uint8Array) + response.contents = contents; + else if (contents != null) + response.contents = encodeUTF8(contents); + if (resolveDir != null) + response.resolveDir = resolveDir; + if (pluginData != null) + response.pluginData = details.store(pluginData); + if (loader != null) + response.loader = loader; + if (errors != null) + response.errors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) + response.warnings = sanitizeMessages(warnings, "warnings", details, name); + if (watchFiles != null) + response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); + if (watchDirs != null) + response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); + break; + } + } catch (e) { + response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] }; + break; + } + } + sendResponse(id, response); + }; + let runOnEndCallbacks = (result, done) => done([], []); + if (onEndCallbacks.length > 0) { + runOnEndCallbacks = (result, done) => { + (async () => { + const onEndErrors = []; + const onEndWarnings = []; + for (const { name, callback, note } of onEndCallbacks) { + let newErrors; + let newWarnings; + try { + const value = await callback(result); + if (value != null) { + if (typeof value !== "object") + throw new Error(`Expected onEnd() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let errors = getFlag(value, keys, "errors", mustBeArray); + let warnings = getFlag(value, keys, "warnings", mustBeArray); + checkForInvalidFlags(value, keys, `from onEnd() callback in plugin ${quote(name)}`); + if (errors != null) + newErrors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) + newWarnings = sanitizeMessages(warnings, "warnings", details, name); + } + } catch (e) { + newErrors = [extractErrorMessageV8(e, streamIn, details, note && note(), name)]; + } + if (newErrors) { + onEndErrors.push(...newErrors); + try { + result.errors.push(...newErrors); + } catch { + } + } + if (newWarnings) { + onEndWarnings.push(...newWarnings); + try { + result.warnings.push(...newWarnings); + } catch { + } + } + } + done(onEndErrors, onEndWarnings); + })(); + }; + } + let scheduleOnDisposeCallbacks = () => { + for (const cb of onDisposeCallbacks) { + setTimeout(() => cb(), 0); + } + }; + isSetupDone = true; + return { + ok: true, + requestPlugins, + runOnEndCallbacks, + scheduleOnDisposeCallbacks + }; +}; +function createObjectStash() { + const map = /* @__PURE__ */ new Map(); + let nextID = 0; + return { + load(id) { + return map.get(id); + }, + store(value) { + if (value === void 0) + return -1; + const id = nextID++; + map.set(id, value); + return id; + } + }; +} +function extractCallerV8(e, streamIn, ident) { + let note; + let tried = false; + return () => { + if (tried) + return note; + tried = true; + try { + let lines = (e.stack + "").split("\n"); + lines.splice(1, 1); + let location = parseStackLinesV8(streamIn, lines, ident); + if (location) { + note = { text: e.message, location }; + return note; + } + } catch { + } + }; +} +function extractErrorMessageV8(e, streamIn, stash, note, pluginName) { + let text = "Internal error"; + let location = null; + try { + text = (e && e.message || e) + ""; + } catch { + } + try { + location = parseStackLinesV8(streamIn, (e.stack + "").split("\n"), ""); + } catch { + } + return { id: "", pluginName, text, location, notes: note ? [note] : [], detail: stash ? stash.store(e) : -1 }; +} +function parseStackLinesV8(streamIn, lines, ident) { + let at = " at "; + if (streamIn.readFileSync && !lines[0].startsWith(at) && lines[1].startsWith(at)) { + for (let i = 1; i < lines.length; i++) { + let line = lines[i]; + if (!line.startsWith(at)) + continue; + line = line.slice(at.length); + while (true) { + let match = /^(?:new |async )?\S+ \((.*)\)$/.exec(line); + if (match) { + line = match[1]; + continue; + } + match = /^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(line); + if (match) { + line = match[1]; + continue; + } + match = /^(\S+):(\d+):(\d+)$/.exec(line); + if (match) { + let contents; + try { + contents = streamIn.readFileSync(match[1], "utf8"); + } catch { + break; + } + let lineText = contents.split(/\r\n|\r|\n|\u2028|\u2029/)[+match[2] - 1] || ""; + let column = +match[3] - 1; + let length = lineText.slice(column, column + ident.length) === ident ? ident.length : 0; + return { + file: match[1], + namespace: "file", + line: +match[2], + column: encodeUTF8(lineText.slice(0, column)).length, + length: encodeUTF8(lineText.slice(column, column + length)).length, + lineText: lineText + "\n" + lines.slice(1).join("\n"), + suggestion: "" + }; + } + break; + } + } + } + return null; +} +function failureErrorWithLog(text, errors, warnings) { + let limit = 5; + let summary = errors.length < 1 ? "" : ` with ${errors.length} error${errors.length < 2 ? "" : "s"}:` + errors.slice(0, limit + 1).map((e, i) => { + if (i === limit) + return "\n..."; + if (!e.location) + return ` +error: ${e.text}`; + let { file, line, column } = e.location; + let pluginText = e.pluginName ? `[plugin: ${e.pluginName}] ` : ""; + return ` +${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`; + }).join(""); + let error = new Error(`${text}${summary}`); + error.errors = errors; + error.warnings = warnings; + return error; +} +function replaceDetailsInMessages(messages, stash) { + for (const message of messages) { + message.detail = stash.load(message.detail); + } + return messages; +} +function sanitizeLocation(location, where) { + if (location == null) + return null; + let keys = {}; + let file = getFlag(location, keys, "file", mustBeString); + let namespace = getFlag(location, keys, "namespace", mustBeString); + let line = getFlag(location, keys, "line", mustBeInteger); + let column = getFlag(location, keys, "column", mustBeInteger); + let length = getFlag(location, keys, "length", mustBeInteger); + let lineText = getFlag(location, keys, "lineText", mustBeString); + let suggestion = getFlag(location, keys, "suggestion", mustBeString); + checkForInvalidFlags(location, keys, where); + return { + file: file || "", + namespace: namespace || "", + line: line || 0, + column: column || 0, + length: length || 0, + lineText: lineText || "", + suggestion: suggestion || "" + }; +} +function sanitizeMessages(messages, property, stash, fallbackPluginName) { + let messagesClone = []; + let index = 0; + for (const message of messages) { + let keys = {}; + let id = getFlag(message, keys, "id", mustBeString); + let pluginName = getFlag(message, keys, "pluginName", mustBeString); + let text = getFlag(message, keys, "text", mustBeString); + let location = getFlag(message, keys, "location", mustBeObjectOrNull); + let notes = getFlag(message, keys, "notes", mustBeArray); + let detail = getFlag(message, keys, "detail", canBeAnything); + let where = `in element ${index} of "${property}"`; + checkForInvalidFlags(message, keys, where); + let notesClone = []; + if (notes) { + for (const note of notes) { + let noteKeys = {}; + let noteText = getFlag(note, noteKeys, "text", mustBeString); + let noteLocation = getFlag(note, noteKeys, "location", mustBeObjectOrNull); + checkForInvalidFlags(note, noteKeys, where); + notesClone.push({ + text: noteText || "", + location: sanitizeLocation(noteLocation, where) + }); + } + } + messagesClone.push({ + id: id || "", + pluginName: pluginName || fallbackPluginName, + text: text || "", + location: sanitizeLocation(location, where), + notes: notesClone, + detail: stash ? stash.store(detail) : -1 + }); + index++; + } + return messagesClone; +} +function sanitizeStringArray(values, property) { + const result = []; + for (const value of values) { + if (typeof value !== "string") + throw new Error(`${quote(property)} must be an array of strings`); + result.push(value); + } + return result; +} +function convertOutputFiles({ path: path3, contents, hash }) { + let text = null; + return { + path: path3, + contents, + hash, + get text() { + const binary = this.contents; + if (text === null || binary !== contents) { + contents = binary; + text = decodeUTF8(binary); + } + return text; + } + }; +} + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var packageDarwin_arm64 = "@esbuild/darwin-arm64"; +var packageDarwin_x64 = "@esbuild/darwin-x64"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM }; +} +function pkgForSomeOtherPlatform() { + const libMainJS = require.resolve("esbuild"); + const nodeModulesDirectory = path.dirname(path.dirname(path.dirname(libMainJS))); + if (path.basename(nodeModulesDirectory) === "node_modules") { + for (const unixKey in knownUnixlikePackages) { + try { + const pkg = knownUnixlikePackages[unixKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + for (const windowsKey in knownWindowsPackages) { + try { + const pkg = knownWindowsPackages[windowsKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + } + return null; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} +function generateBinPath() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + return { binPath: ESBUILD_BINARY_PATH, isWASM: false }; + } + } + const { pkg, subpath, isWASM } = pkgAndSubpathForCurrentPlatform(); + let binPath; + try { + binPath = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + binPath = downloadedBinPath(pkg, subpath); + if (!fs.existsSync(binPath)) { + try { + require.resolve(pkg); + } catch { + const otherPkg = pkgForSomeOtherPlatform(); + if (otherPkg) { + let suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild on Windows or macOS and copying "node_modules" +into a Docker image that runs Linux, or by copying "node_modules" between +Windows and WSL environments. + +If you are installing with npm, you can try not copying the "node_modules" +directory when you copy the files over, and running "npm ci" or "npm install" +on the destination platform after the copy. Or you could consider using yarn +instead of npm which has built-in support for installing a package on multiple +platforms simultaneously. + +If you are installing with yarn, you can try listing both this platform and the +other platform in your ".yarnrc.yml" file using the "supportedArchitectures" +feature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + if (pkg === packageDarwin_x64 && otherPkg === packageDarwin_arm64 || pkg === packageDarwin_arm64 && otherPkg === packageDarwin_x64) { + suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild with npm running inside of Rosetta 2 and then +trying to use it with node running outside of Rosetta 2, or vice versa (Rosetta +2 is Apple's on-the-fly x86_64-to-arm64 translation service). + +If you are installing with npm, you can try ensuring that both npm and node are +not running under Rosetta 2 and then reinstalling esbuild. This likely involves +changing how you installed npm and/or node. For example, installing node with +the universal installer here should work: https://nodejs.org/en/download/. Or +you could consider using yarn instead of npm which has built-in support for +installing a package on multiple platforms simultaneously. + +If you are installing with yarn, you can try listing both "arm64" and "x64" +in your ".yarnrc.yml" file using the "supportedArchitectures" feature: +https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + } + throw new Error(` +You installed esbuild for another platform than the one you're currently using. +This won't work because esbuild is written with native code and needs to +install a platform-specific binary executable. +${suggestions} +Another alternative is to use the "esbuild-wasm" package instead, which works +the same way on all platforms. But it comes with a heavy performance cost and +can sometimes be 10x slower than the "esbuild" package, so you may also not +want to do that. +`); + } + throw new Error(`The package "${pkg}" could not be found, and is needed by esbuild. + +If you are installing esbuild with npm, make sure that you don't specify the +"--no-optional" or "--omit=optional" flags. The "optionalDependencies" feature +of "package.json" is used by esbuild to install the correct binary executable +for your current platform.`); + } + throw e; + } + } + if (/\.zip\//.test(binPath)) { + let pnpapi; + try { + pnpapi = require("pnpapi"); + } catch (e) { + } + if (pnpapi) { + const root = pnpapi.getPackageInformation(pnpapi.topLevel).packageLocation; + const binTargetPath = path.join( + root, + "node_modules", + ".cache", + "esbuild", + `pnpapi-${pkg.replace("/", "-")}-${"0.18.20"}-${path.basename(subpath)}` + ); + if (!fs.existsSync(binTargetPath)) { + fs.mkdirSync(path.dirname(binTargetPath), { recursive: true }); + fs.copyFileSync(binPath, binTargetPath); + fs.chmodSync(binTargetPath, 493); + } + return { binPath: binTargetPath, isWASM }; + } + } + return { binPath, isWASM }; +} + +// lib/npm/node.ts +var child_process = require("child_process"); +var crypto = require("crypto"); +var path2 = require("path"); +var fs2 = require("fs"); +var os2 = require("os"); +var tty = require("tty"); +var worker_threads; +if (process.env.ESBUILD_WORKER_THREADS !== "0") { + try { + worker_threads = require("worker_threads"); + } catch { + } + let [major, minor] = process.versions.node.split("."); + if ( + // { + if ((!ESBUILD_BINARY_PATH || false) && (path2.basename(__filename) !== "main.js" || path2.basename(__dirname) !== "lib")) { + throw new Error( + `The esbuild JavaScript API cannot be bundled. Please mark the "esbuild" package as external so it's not included in the bundle. + +More information: The file containing the code for esbuild's JavaScript API (${__filename}) does not appear to be inside the esbuild package on the file system, which usually means that the esbuild package was bundled into another file. This is problematic because the API needs to run a binary executable inside the esbuild package which is located using a relative path from the API code to the executable. If the esbuild package is bundled, the relative path will be incorrect and the executable won't be found.` + ); + } + if (false) { + return ["node", [path2.join(__dirname, "..", "bin", "esbuild")]]; + } else { + const { binPath, isWASM } = generateBinPath(); + if (isWASM) { + return ["node", [binPath]]; + } else { + return [binPath, []]; + } + } +}; +var isTTY = () => tty.isatty(2); +var fsSync = { + readFile(tempFile, callback) { + try { + let contents = fs2.readFileSync(tempFile, "utf8"); + try { + fs2.unlinkSync(tempFile); + } catch { + } + callback(null, contents); + } catch (err) { + callback(err, null); + } + }, + writeFile(contents, callback) { + try { + let tempFile = randomFileName(); + fs2.writeFileSync(tempFile, contents); + callback(tempFile); + } catch { + callback(null); + } + } +}; +var fsAsync = { + readFile(tempFile, callback) { + try { + fs2.readFile(tempFile, "utf8", (err, contents) => { + try { + fs2.unlink(tempFile, () => callback(err, contents)); + } catch { + callback(err, contents); + } + }); + } catch (err) { + callback(err, null); + } + }, + writeFile(contents, callback) { + try { + let tempFile = randomFileName(); + fs2.writeFile(tempFile, contents, (err) => err !== null ? callback(null) : callback(tempFile)); + } catch { + callback(null); + } + } +}; +var version = "0.18.20"; +var build = (options) => ensureServiceIsRunning().build(options); +var context = (buildOptions) => ensureServiceIsRunning().context(buildOptions); +var transform = (input, options) => ensureServiceIsRunning().transform(input, options); +var formatMessages = (messages, options) => ensureServiceIsRunning().formatMessages(messages, options); +var analyzeMetafile = (messages, options) => ensureServiceIsRunning().analyzeMetafile(messages, options); +var buildSync = (options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.buildSync(options); + } + let result; + runServiceSync((service) => service.buildOrContext({ + callName: "buildSync", + refs: null, + options, + isTTY: isTTY(), + defaultWD, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var transformSync = (input, options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.transformSync(input, options); + } + let result; + runServiceSync((service) => service.transform({ + callName: "transformSync", + refs: null, + input, + options: options || {}, + isTTY: isTTY(), + fs: fsSync, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var formatMessagesSync = (messages, options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.formatMessagesSync(messages, options); + } + let result; + runServiceSync((service) => service.formatMessages({ + callName: "formatMessagesSync", + refs: null, + messages, + options, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var analyzeMetafileSync = (metafile, options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.analyzeMetafileSync(metafile, options); + } + let result; + runServiceSync((service) => service.analyzeMetafile({ + callName: "analyzeMetafileSync", + refs: null, + metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), + options, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var initializeWasCalled = false; +var initialize = (options) => { + options = validateInitializeOptions(options || {}); + if (options.wasmURL) + throw new Error(`The "wasmURL" option only works in the browser`); + if (options.wasmModule) + throw new Error(`The "wasmModule" option only works in the browser`); + if (options.worker) + throw new Error(`The "worker" option only works in the browser`); + if (initializeWasCalled) + throw new Error('Cannot call "initialize" more than once'); + ensureServiceIsRunning(); + initializeWasCalled = true; + return Promise.resolve(); +}; +var defaultWD = process.cwd(); +var longLivedService; +var ensureServiceIsRunning = () => { + if (longLivedService) + return longLivedService; + let [command, args] = esbuildCommandAndArgs(); + let child = child_process.spawn(command, args.concat(`--service=${"0.18.20"}`, "--ping"), { + windowsHide: true, + stdio: ["pipe", "pipe", "inherit"], + cwd: defaultWD + }); + let { readFromStdout, afterClose, service } = createChannel({ + writeToStdin(bytes) { + child.stdin.write(bytes, (err) => { + if (err) + afterClose(err); + }); + }, + readFileSync: fs2.readFileSync, + isSync: false, + hasFS: true, + esbuild: node_exports + }); + child.stdin.on("error", afterClose); + child.on("error", afterClose); + const stdin = child.stdin; + const stdout = child.stdout; + stdout.on("data", readFromStdout); + stdout.on("end", afterClose); + let refCount = 0; + child.unref(); + if (stdin.unref) { + stdin.unref(); + } + if (stdout.unref) { + stdout.unref(); + } + const refs = { + ref() { + if (++refCount === 1) + child.ref(); + }, + unref() { + if (--refCount === 0) + child.unref(); + } + }; + longLivedService = { + build: (options) => new Promise((resolve, reject) => { + service.buildOrContext({ + callName: "build", + refs, + options, + isTTY: isTTY(), + defaultWD, + callback: (err, res) => err ? reject(err) : resolve(res) + }); + }), + context: (options) => new Promise((resolve, reject) => service.buildOrContext({ + callName: "context", + refs, + options, + isTTY: isTTY(), + defaultWD, + callback: (err, res) => err ? reject(err) : resolve(res) + })), + transform: (input, options) => new Promise((resolve, reject) => service.transform({ + callName: "transform", + refs, + input, + options: options || {}, + isTTY: isTTY(), + fs: fsAsync, + callback: (err, res) => err ? reject(err) : resolve(res) + })), + formatMessages: (messages, options) => new Promise((resolve, reject) => service.formatMessages({ + callName: "formatMessages", + refs, + messages, + options, + callback: (err, res) => err ? reject(err) : resolve(res) + })), + analyzeMetafile: (metafile, options) => new Promise((resolve, reject) => service.analyzeMetafile({ + callName: "analyzeMetafile", + refs, + metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), + options, + callback: (err, res) => err ? reject(err) : resolve(res) + })) + }; + return longLivedService; +}; +var runServiceSync = (callback) => { + let [command, args] = esbuildCommandAndArgs(); + let stdin = new Uint8Array(); + let { readFromStdout, afterClose, service } = createChannel({ + writeToStdin(bytes) { + if (stdin.length !== 0) + throw new Error("Must run at most one command"); + stdin = bytes; + }, + isSync: true, + hasFS: true, + esbuild: node_exports + }); + callback(service); + let stdout = child_process.execFileSync(command, args.concat(`--service=${"0.18.20"}`), { + cwd: defaultWD, + windowsHide: true, + input: stdin, + // We don't know how large the output could be. If it's too large, the + // command will fail with ENOBUFS. Reserve 16mb for now since that feels + // like it should be enough. Also allow overriding this with an environment + // variable. + maxBuffer: +process.env.ESBUILD_MAX_BUFFER || 16 * 1024 * 1024 + }); + readFromStdout(stdout); + afterClose(null); +}; +var randomFileName = () => { + return path2.join(os2.tmpdir(), `esbuild-${crypto.randomBytes(32).toString("hex")}`); +}; +var workerThreadService = null; +var startWorkerThreadService = (worker_threads2) => { + let { port1: mainPort, port2: workerPort } = new worker_threads2.MessageChannel(); + let worker = new worker_threads2.Worker(__filename, { + workerData: { workerPort, defaultWD, esbuildVersion: "0.18.20" }, + transferList: [workerPort], + // From node's documentation: https://nodejs.org/api/worker_threads.html + // + // Take care when launching worker threads from preload scripts (scripts loaded + // and run using the `-r` command line flag). Unless the `execArgv` option is + // explicitly set, new Worker threads automatically inherit the command line flags + // from the running process and will preload the same preload scripts as the main + // thread. If the preload script unconditionally launches a worker thread, every + // thread spawned will spawn another until the application crashes. + // + execArgv: [] + }); + let nextID = 0; + let fakeBuildError = (text) => { + let error = new Error(`Build failed with 1 error: +error: ${text}`); + let errors = [{ id: "", pluginName: "", text, location: null, notes: [], detail: void 0 }]; + error.errors = errors; + error.warnings = []; + return error; + }; + let validateBuildSyncOptions = (options) => { + if (!options) + return; + let plugins = options.plugins; + if (plugins && plugins.length > 0) + throw fakeBuildError(`Cannot use plugins in synchronous API calls`); + }; + let applyProperties = (object, properties) => { + for (let key in properties) { + object[key] = properties[key]; + } + }; + let runCallSync = (command, args) => { + let id = nextID++; + let sharedBuffer = new SharedArrayBuffer(8); + let sharedBufferView = new Int32Array(sharedBuffer); + let msg = { sharedBuffer, id, command, args }; + worker.postMessage(msg); + let status = Atomics.wait(sharedBufferView, 0, 0); + if (status !== "ok" && status !== "not-equal") + throw new Error("Internal error: Atomics.wait() failed: " + status); + let { message: { id: id2, resolve, reject, properties } } = worker_threads2.receiveMessageOnPort(mainPort); + if (id !== id2) + throw new Error(`Internal error: Expected id ${id} but got id ${id2}`); + if (reject) { + applyProperties(reject, properties); + throw reject; + } + return resolve; + }; + worker.unref(); + return { + buildSync(options) { + validateBuildSyncOptions(options); + return runCallSync("build", [options]); + }, + transformSync(input, options) { + return runCallSync("transform", [input, options]); + }, + formatMessagesSync(messages, options) { + return runCallSync("formatMessages", [messages, options]); + }, + analyzeMetafileSync(metafile, options) { + return runCallSync("analyzeMetafile", [metafile, options]); + } + }; +}; +var startSyncServiceWorker = () => { + let workerPort = worker_threads.workerData.workerPort; + let parentPort = worker_threads.parentPort; + let extractProperties = (object) => { + let properties = {}; + if (object && typeof object === "object") { + for (let key in object) { + properties[key] = object[key]; + } + } + return properties; + }; + try { + let service = ensureServiceIsRunning(); + defaultWD = worker_threads.workerData.defaultWD; + parentPort.on("message", (msg) => { + (async () => { + let { sharedBuffer, id, command, args } = msg; + let sharedBufferView = new Int32Array(sharedBuffer); + try { + switch (command) { + case "build": + workerPort.postMessage({ id, resolve: await service.build(args[0]) }); + break; + case "transform": + workerPort.postMessage({ id, resolve: await service.transform(args[0], args[1]) }); + break; + case "formatMessages": + workerPort.postMessage({ id, resolve: await service.formatMessages(args[0], args[1]) }); + break; + case "analyzeMetafile": + workerPort.postMessage({ id, resolve: await service.analyzeMetafile(args[0], args[1]) }); + break; + default: + throw new Error(`Invalid command: ${command}`); + } + } catch (reject) { + workerPort.postMessage({ id, reject, properties: extractProperties(reject) }); + } + Atomics.add(sharedBufferView, 0, 1); + Atomics.notify(sharedBufferView, 0, Infinity); + })(); + }); + } catch (reject) { + parentPort.on("message", (msg) => { + let { sharedBuffer, id } = msg; + let sharedBufferView = new Int32Array(sharedBuffer); + workerPort.postMessage({ id, reject, properties: extractProperties(reject) }); + Atomics.add(sharedBufferView, 0, 1); + Atomics.notify(sharedBufferView, 0, Infinity); + }); + } +}; +if (isInternalWorkerThread) { + startSyncServiceWorker(); +} +var node_default = node_exports; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + analyzeMetafile, + analyzeMetafileSync, + build, + buildSync, + context, + formatMessages, + formatMessagesSync, + initialize, + transform, + transformSync, + version +}); diff --git a/node_modules/esbuild/package.json b/node_modules/esbuild/package.json new file mode 100644 index 0000000..fa879aa --- /dev/null +++ b/node_modules/esbuild/package.json @@ -0,0 +1,42 @@ +{ + "name": "esbuild", + "version": "0.18.20", + "description": "An extremely fast JavaScript and CSS bundler and minifier.", + "repository": "https://github.com/evanw/esbuild", + "scripts": { + "postinstall": "node install.js" + }, + "main": "lib/main.js", + "types": "lib/main.d.ts", + "engines": { + "node": ">=12" + }, + "bin": { + "esbuild": "bin/esbuild" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + }, + "license": "MIT" +} diff --git a/node_modules/fast-glob/LICENSE b/node_modules/fast-glob/LICENSE new file mode 100644 index 0000000..65a9994 --- /dev/null +++ b/node_modules/fast-glob/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/fast-glob/README.md b/node_modules/fast-glob/README.md new file mode 100644 index 0000000..be60874 --- /dev/null +++ b/node_modules/fast-glob/README.md @@ -0,0 +1,830 @@ +# fast-glob + +> It's a very fast and efficient [glob][glob_definition] library for [Node.js][node_js]. + +This package provides methods for traversing the file system and returning pathnames that matched a defined set of a specified pattern according to the rules used by the Unix Bash shell with some simplifications, meanwhile results are returned in **arbitrary order**. Quick, simple, effective. + +## Table of Contents + +
    +Details + +* [Highlights](#highlights) +* [Old and modern mode](#old-and-modern-mode) +* [Pattern syntax](#pattern-syntax) + * [Basic syntax](#basic-syntax) + * [Advanced syntax](#advanced-syntax) +* [Installation](#installation) +* [API](#api) + * [Asynchronous](#asynchronous) + * [Synchronous](#synchronous) + * [Stream](#stream) + * [patterns](#patterns) + * [[options]](#options) + * [Helpers](#helpers) + * [generateTasks](#generatetaskspatterns-options) + * [isDynamicPattern](#isdynamicpatternpattern-options) + * [escapePath](#escapepathpath) + * [convertPathToPattern](#convertpathtopatternpath) +* [Options](#options-3) + * [Common](#common) + * [concurrency](#concurrency) + * [cwd](#cwd) + * [deep](#deep) + * [followSymbolicLinks](#followsymboliclinks) + * [fs](#fs) + * [ignore](#ignore) + * [suppressErrors](#suppresserrors) + * [throwErrorOnBrokenSymbolicLink](#throwerroronbrokensymboliclink) + * [Output control](#output-control) + * [absolute](#absolute) + * [markDirectories](#markdirectories) + * [objectMode](#objectmode) + * [onlyDirectories](#onlydirectories) + * [onlyFiles](#onlyfiles) + * [stats](#stats) + * [unique](#unique) + * [Matching control](#matching-control) + * [braceExpansion](#braceexpansion) + * [caseSensitiveMatch](#casesensitivematch) + * [dot](#dot) + * [extglob](#extglob) + * [globstar](#globstar) + * [baseNameMatch](#basenamematch) +* [FAQ](#faq) + * [What is a static or dynamic pattern?](#what-is-a-static-or-dynamic-pattern) + * [How to write patterns on Windows?](#how-to-write-patterns-on-windows) + * [Why are parentheses match wrong?](#why-are-parentheses-match-wrong) + * [How to exclude directory from reading?](#how-to-exclude-directory-from-reading) + * [How to use UNC path?](#how-to-use-unc-path) + * [Compatible with `node-glob`?](#compatible-with-node-glob) +* [Benchmarks](#benchmarks) + * [Server](#server) + * [Nettop](#nettop) +* [Changelog](#changelog) +* [License](#license) + +
    + +## Highlights + +* Fast. Probably the fastest. +* Supports multiple and negative patterns. +* Synchronous, Promise and Stream API. +* Object mode. Can return more than just strings. +* Error-tolerant. + +## Old and modern mode + +This package works in two modes, depending on the environment in which it is used. + +* **Old mode**. Node.js below 10.10 or when the [`stats`](#stats) option is *enabled*. +* **Modern mode**. Node.js 10.10+ and the [`stats`](#stats) option is *disabled*. + +The modern mode is faster. Learn more about the [internal mechanism][nodelib_fs_scandir_old_and_modern_modern]. + +## Pattern syntax + +> :warning: Always use forward-slashes in glob expressions (patterns and [`ignore`](#ignore) option). Use backslashes for escaping characters. + +There is more than one form of syntax: basic and advanced. Below is a brief overview of the supported features. Also pay attention to our [FAQ](#faq). + +> :book: This package uses [`micromatch`][micromatch] as a library for pattern matching. + +### Basic syntax + +* An asterisk (`*`) — matches everything except slashes (path separators), hidden files (names starting with `.`). +* A double star or globstar (`**`) — matches zero or more directories. +* Question mark (`?`) – matches any single character except slashes (path separators). +* Sequence (`[seq]`) — matches any character in sequence. + +> :book: A few additional words about the [basic matching behavior][picomatch_matching_behavior]. + +Some examples: + +* `src/**/*.js` — matches all files in the `src` directory (any level of nesting) that have the `.js` extension. +* `src/*.??` — matches all files in the `src` directory (only first level of nesting) that have a two-character extension. +* `file-[01].js` — matches files: `file-0.js`, `file-1.js`. + +### Advanced syntax + +* [Escapes characters][micromatch_backslashes] (`\\`) — matching special characters (`$^*+?()[]`) as literals. +* [POSIX character classes][picomatch_posix_brackets] (`[[:digit:]]`). +* [Extended globs][micromatch_extglobs] (`?(pattern-list)`). +* [Bash style brace expansions][micromatch_braces] (`{}`). +* [Regexp character classes][micromatch_regex_character_classes] (`[1-5]`). +* [Regex groups][regular_expressions_brackets] (`(a|b)`). + +> :book: A few additional words about the [advanced matching behavior][micromatch_extended_globbing]. + +Some examples: + +* `src/**/*.{css,scss}` — matches all files in the `src` directory (any level of nesting) that have the `.css` or `.scss` extension. +* `file-[[:digit:]].js` — matches files: `file-0.js`, `file-1.js`, …, `file-9.js`. +* `file-{1..3}.js` — matches files: `file-1.js`, `file-2.js`, `file-3.js`. +* `file-(1|2)` — matches files: `file-1.js`, `file-2.js`. + +## Installation + +```console +npm install fast-glob +``` + +## API + +### Asynchronous + +```js +fg(patterns, [options]) +fg.async(patterns, [options]) +fg.glob(patterns, [options]) +``` + +Returns a `Promise` with an array of matching entries. + +```js +const fg = require('fast-glob'); + +const entries = await fg(['.editorconfig', '**/index.js'], { dot: true }); + +// ['.editorconfig', 'services/index.js'] +``` + +### Synchronous + +```js +fg.sync(patterns, [options]) +fg.globSync(patterns, [options]) +``` + +Returns an array of matching entries. + +```js +const fg = require('fast-glob'); + +const entries = fg.sync(['.editorconfig', '**/index.js'], { dot: true }); + +// ['.editorconfig', 'services/index.js'] +``` + +### Stream + +```js +fg.stream(patterns, [options]) +fg.globStream(patterns, [options]) +``` + +Returns a [`ReadableStream`][node_js_stream_readable_streams] when the `data` event will be emitted with matching entry. + +```js +const fg = require('fast-glob'); + +const stream = fg.stream(['.editorconfig', '**/index.js'], { dot: true }); + +for await (const entry of stream) { + // .editorconfig + // services/index.js +} +``` + +#### patterns + +* Required: `true` +* Type: `string | string[]` + +Any correct pattern(s). + +> :1234: [Pattern syntax](#pattern-syntax) +> +> :warning: This package does not respect the order of patterns. First, all the negative patterns are applied, and only then the positive patterns. If you want to get a certain order of records, use sorting or split calls. + +#### [options] + +* Required: `false` +* Type: [`Options`](#options-3) + +See [Options](#options-3) section. + +### Helpers + +#### `generateTasks(patterns, [options])` + +Returns the internal representation of patterns ([`Task`](./src/managers/tasks.ts) is a combining patterns by base directory). + +```js +fg.generateTasks('*'); + +[{ + base: '.', // Parent directory for all patterns inside this task + dynamic: true, // Dynamic or static patterns are in this task + patterns: ['*'], + positive: ['*'], + negative: [] +}] +``` + +##### patterns + +* Required: `true` +* Type: `string | string[]` + +Any correct pattern(s). + +##### [options] + +* Required: `false` +* Type: [`Options`](#options-3) + +See [Options](#options-3) section. + +#### `isDynamicPattern(pattern, [options])` + +Returns `true` if the passed pattern is a dynamic pattern. + +> :1234: [What is a static or dynamic pattern?](#what-is-a-static-or-dynamic-pattern) + +```js +fg.isDynamicPattern('*'); // true +fg.isDynamicPattern('abc'); // false +``` + +##### pattern + +* Required: `true` +* Type: `string` + +Any correct pattern. + +##### [options] + +* Required: `false` +* Type: [`Options`](#options-3) + +See [Options](#options-3) section. + +#### `escapePath(path)` + +Returns the path with escaped special characters depending on the platform. + +* Posix: + * `*?|(){}[]`; + * `!` at the beginning of line; + * `@+!` before the opening parenthesis; + * `\\` before non-special characters; +* Windows: + * `(){}` + * `!` at the beginning of line; + * `@+!` before the opening parenthesis; + * Characters like `*?|[]` cannot be used in the path ([windows_naming_conventions][windows_naming_conventions]), so they will not be escaped; + +```js +fg.escapePath('!abc'); +// \\!abc +fg.escapePath('[OpenSource] mrmlnc – fast-glob (Deluxe Edition) 2014') + '/*.flac' +// \\[OpenSource\\] mrmlnc – fast-glob \\(Deluxe Edition\\) 2014/*.flac + +fg.posix.escapePath('C:\\Program Files (x86)\\**\\*'); +// C:\\\\Program Files \\(x86\\)\\*\\*\\* +fg.win32.escapePath('C:\\Program Files (x86)\\**\\*'); +// Windows: C:\\Program Files \\(x86\\)\\**\\* +``` + +#### `convertPathToPattern(path)` + +Converts a path to a pattern depending on the platform, including special character escaping. + +* Posix. Works similarly to the `fg.posix.escapePath` method. +* Windows. Works similarly to the `fg.win32.escapePath` method, additionally converting backslashes to forward slashes in cases where they are not escape characters (`!()+@{}`). + +```js +fg.convertPathToPattern('[OpenSource] mrmlnc – fast-glob (Deluxe Edition) 2014') + '/*.flac'; +// \\[OpenSource\\] mrmlnc – fast-glob \\(Deluxe Edition\\) 2014/*.flac + +fg.convertPathToPattern('C:/Program Files (x86)/**/*'); +// Posix: C:/Program Files \\(x86\\)/\\*\\*/\\* +// Windows: C:/Program Files \\(x86\\)/**/* + +fg.convertPathToPattern('C:\\Program Files (x86)\\**\\*'); +// Posix: C:\\\\Program Files \\(x86\\)\\*\\*\\* +// Windows: C:/Program Files \\(x86\\)/**/* + +fg.posix.convertPathToPattern('\\\\?\\c:\\Program Files (x86)') + '/**/*'; +// Posix: \\\\\\?\\\\c:\\\\Program Files \\(x86\\)/**/* (broken pattern) +fg.win32.convertPathToPattern('\\\\?\\c:\\Program Files (x86)') + '/**/*'; +// Windows: //?/c:/Program Files \\(x86\\)/**/* +``` + +## Options + +### Common options + +#### concurrency + +* Type: `number` +* Default: `os.cpus().length` + +Specifies the maximum number of concurrent requests from a reader to read directories. + +> :book: The higher the number, the higher the performance and load on the file system. If you want to read in quiet mode, set the value to a comfortable number or `1`. + +
    + +More details + +In Node, there are [two types of threads][nodejs_thread_pool]: Event Loop (code) and a Thread Pool (fs, dns, …). The thread pool size controlled by the `UV_THREADPOOL_SIZE` environment variable. Its default size is 4 ([documentation][libuv_thread_pool]). The pool is one for all tasks within a single Node process. + +Any code can make 4 real concurrent accesses to the file system. The rest of the FS requests will wait in the queue. + +> :book: Each new instance of FG in the same Node process will use the same Thread pool. + +But this package also has the `concurrency` option. This option allows you to control the number of concurrent accesses to the FS at the package level. By default, this package has a value equal to the number of cores available for the current Node process. This allows you to set a value smaller than the pool size (`concurrency: 1`) or, conversely, to prepare tasks for the pool queue more quickly (`concurrency: Number.POSITIVE_INFINITY`). + +So, in fact, this package can **only make 4 concurrent requests to the FS**. You can increase this value by using an environment variable (`UV_THREADPOOL_SIZE`), but in practice this does not give a multiple advantage. + +
    + +#### cwd + +* Type: `string` +* Default: `process.cwd()` + +The current working directory in which to search. + +#### deep + +* Type: `number` +* Default: `Infinity` + +Specifies the maximum depth of a read directory relative to the start directory. + +For example, you have the following tree: + +```js +dir/ +└── one/ // 1 + └── two/ // 2 + └── file.js // 3 +``` + +```js +// With base directory +fg.sync('dir/**', { onlyFiles: false, deep: 1 }); // ['dir/one'] +fg.sync('dir/**', { onlyFiles: false, deep: 2 }); // ['dir/one', 'dir/one/two'] + +// With cwd option +fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 1 }); // ['one'] +fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 2 }); // ['one', 'one/two'] +``` + +> :book: If you specify a pattern with some base directory, this directory will not participate in the calculation of the depth of the found directories. Think of it as a [`cwd`](#cwd) option. + +#### followSymbolicLinks + +* Type: `boolean` +* Default: `true` + +Indicates whether to traverse descendants of symbolic link directories when expanding `**` patterns. + +> :book: Note that this option does not affect the base directory of the pattern. For example, if `./a` is a symlink to directory `./b` and you specified `['./a**', './b/**']` patterns, then directory `./a` will still be read. + +> :book: If the [`stats`](#stats) option is specified, the information about the symbolic link (`fs.lstat`) will be replaced with information about the entry (`fs.stat`) behind it. + +#### fs + +* Type: `FileSystemAdapter` +* Default: `fs.*` + +Custom implementation of methods for working with the file system. + +```ts +export interface FileSystemAdapter { + lstat?: typeof fs.lstat; + stat?: typeof fs.stat; + lstatSync?: typeof fs.lstatSync; + statSync?: typeof fs.statSync; + readdir?: typeof fs.readdir; + readdirSync?: typeof fs.readdirSync; +} +``` + +#### ignore + +* Type: `string[]` +* Default: `[]` + +An array of glob patterns to exclude matches. This is an alternative way to use negative patterns. + +```js +dir/ +├── package-lock.json +└── package.json +``` + +```js +fg.sync(['*.json', '!package-lock.json']); // ['package.json'] +fg.sync('*.json', { ignore: ['package-lock.json'] }); // ['package.json'] +``` + +#### suppressErrors + +* Type: `boolean` +* Default: `false` + +By default this package suppress only `ENOENT` errors. Set to `true` to suppress any error. + +> :book: Can be useful when the directory has entries with a special level of access. + +#### throwErrorOnBrokenSymbolicLink + +* Type: `boolean` +* Default: `false` + +Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`. + +> :book: This option has no effect on errors when reading the symbolic link directory. + +### Output control + +#### absolute + +* Type: `boolean` +* Default: `false` + +Return the absolute path for entries. + +```js +fg.sync('*.js', { absolute: false }); // ['index.js'] +fg.sync('*.js', { absolute: true }); // ['/home/user/index.js'] +``` + +> :book: This option is required if you want to use negative patterns with absolute path, for example, `!${__dirname}/*.js`. + +#### markDirectories + +* Type: `boolean` +* Default: `false` + +Mark the directory path with the final slash. + +```js +fg.sync('*', { onlyFiles: false, markDirectories: false }); // ['index.js', 'controllers'] +fg.sync('*', { onlyFiles: false, markDirectories: true }); // ['index.js', 'controllers/'] +``` + +#### objectMode + +* Type: `boolean` +* Default: `false` + +Returns objects (instead of strings) describing entries. + +```js +fg.sync('*', { objectMode: false }); // ['src/index.js'] +fg.sync('*', { objectMode: true }); // [{ name: 'index.js', path: 'src/index.js', dirent: }] +``` + +The object has the following fields: + +* name (`string`) — the last part of the path (basename) +* path (`string`) — full path relative to the pattern base directory +* dirent ([`fs.Dirent`][node_js_fs_class_fs_dirent]) — instance of `fs.Dirent` + +> :book: An object is an internal representation of entry, so getting it does not affect performance. + +#### onlyDirectories + +* Type: `boolean` +* Default: `false` + +Return only directories. + +```js +fg.sync('*', { onlyDirectories: false }); // ['index.js', 'src'] +fg.sync('*', { onlyDirectories: true }); // ['src'] +``` + +> :book: If `true`, the [`onlyFiles`](#onlyfiles) option is automatically `false`. + +#### onlyFiles + +* Type: `boolean` +* Default: `true` + +Return only files. + +```js +fg.sync('*', { onlyFiles: false }); // ['index.js', 'src'] +fg.sync('*', { onlyFiles: true }); // ['index.js'] +``` + +#### stats + +* Type: `boolean` +* Default: `false` + +Enables an [object mode](#objectmode) with an additional field: + +* stats ([`fs.Stats`][node_js_fs_class_fs_stats]) — instance of `fs.Stats` + +```js +fg.sync('*', { stats: false }); // ['src/index.js'] +fg.sync('*', { stats: true }); // [{ name: 'index.js', path: 'src/index.js', dirent: , stats: }] +``` + +> :book: Returns `fs.stat` instead of `fs.lstat` for symbolic links when the [`followSymbolicLinks`](#followsymboliclinks) option is specified. +> +> :warning: Unlike [object mode](#objectmode) this mode requires additional calls to the file system. On average, this mode is slower at least twice. See [old and modern mode](#old-and-modern-mode) for more details. + +#### unique + +* Type: `boolean` +* Default: `true` + +Ensures that the returned entries are unique. + +```js +fg.sync(['*.json', 'package.json'], { unique: false }); // ['package.json', 'package.json'] +fg.sync(['*.json', 'package.json'], { unique: true }); // ['package.json'] +``` + +If `true` and similar entries are found, the result is the first found. + +### Matching control + +#### braceExpansion + +* Type: `boolean` +* Default: `true` + +Enables Bash-like brace expansion. + +> :1234: [Syntax description][bash_hackers_syntax_expansion_brace] or more [detailed description][micromatch_braces]. + +```js +dir/ +├── abd +├── acd +└── a{b,c}d +``` + +```js +fg.sync('a{b,c}d', { braceExpansion: false }); // ['a{b,c}d'] +fg.sync('a{b,c}d', { braceExpansion: true }); // ['abd', 'acd'] +``` + +#### caseSensitiveMatch + +* Type: `boolean` +* Default: `true` + +Enables a [case-sensitive][wikipedia_case_sensitivity] mode for matching files. + +```js +dir/ +├── file.txt +└── File.txt +``` + +```js +fg.sync('file.txt', { caseSensitiveMatch: false }); // ['file.txt', 'File.txt'] +fg.sync('file.txt', { caseSensitiveMatch: true }); // ['file.txt'] +``` + +#### dot + +* Type: `boolean` +* Default: `false` + +Allow patterns to match entries that begin with a period (`.`). + +> :book: Note that an explicit dot in a portion of the pattern will always match dot files. + +```js +dir/ +├── .editorconfig +└── package.json +``` + +```js +fg.sync('*', { dot: false }); // ['package.json'] +fg.sync('*', { dot: true }); // ['.editorconfig', 'package.json'] +``` + +#### extglob + +* Type: `boolean` +* Default: `true` + +Enables Bash-like `extglob` functionality. + +> :1234: [Syntax description][micromatch_extglobs]. + +```js +dir/ +├── README.md +└── package.json +``` + +```js +fg.sync('*.+(json|md)', { extglob: false }); // [] +fg.sync('*.+(json|md)', { extglob: true }); // ['README.md', 'package.json'] +``` + +#### globstar + +* Type: `boolean` +* Default: `true` + +Enables recursively repeats a pattern containing `**`. If `false`, `**` behaves exactly like `*`. + +```js +dir/ +└── a + └── b +``` + +```js +fg.sync('**', { onlyFiles: false, globstar: false }); // ['a'] +fg.sync('**', { onlyFiles: false, globstar: true }); // ['a', 'a/b'] +``` + +#### baseNameMatch + +* Type: `boolean` +* Default: `false` + +If set to `true`, then patterns without slashes will be matched against the basename of the path if it contains slashes. + +```js +dir/ +└── one/ + └── file.md +``` + +```js +fg.sync('*.md', { baseNameMatch: false }); // [] +fg.sync('*.md', { baseNameMatch: true }); // ['one/file.md'] +``` + +## FAQ + +## What is a static or dynamic pattern? + +All patterns can be divided into two types: + +* **static**. A pattern is considered static if it can be used to get an entry on the file system without using matching mechanisms. For example, the `file.js` pattern is a static pattern because we can just verify that it exists on the file system. +* **dynamic**. A pattern is considered dynamic if it cannot be used directly to find occurrences without using a matching mechanisms. For example, the `*` pattern is a dynamic pattern because we cannot use this pattern directly. + +A pattern is considered dynamic if it contains the following characters (`…` — any characters or their absence) or options: + +* The [`caseSensitiveMatch`](#casesensitivematch) option is disabled +* `\\` (the escape character) +* `*`, `?`, `!` (at the beginning of line) +* `[…]` +* `(…|…)` +* `@(…)`, `!(…)`, `*(…)`, `?(…)`, `+(…)` (respects the [`extglob`](#extglob) option) +* `{…,…}`, `{…..…}` (respects the [`braceExpansion`](#braceexpansion) option) + +## How to write patterns on Windows? + +Always use forward-slashes in glob expressions (patterns and [`ignore`](#ignore) option). Use backslashes for escaping characters. With the [`cwd`](#cwd) option use a convenient format. + +**Bad** + +```ts +[ + 'directory\\*', + path.join(process.cwd(), '**') +] +``` + +**Good** + +```ts +[ + 'directory/*', + fg.convertPathToPattern(process.cwd()) + '/**' +] +``` + +> :book: Use the [`.convertPathToPattern`](#convertpathtopatternpath) package to convert Windows-style path to a Unix-style path. + +Read more about [matching with backslashes][micromatch_backslashes]. + +## Why are parentheses match wrong? + +```js +dir/ +└── (special-*file).txt +``` + +```js +fg.sync(['(special-*file).txt']) // [] +``` + +Refers to Bash. You need to escape special characters: + +```js +fg.sync(['\\(special-*file\\).txt']) // ['(special-*file).txt'] +``` + +Read more about [matching special characters as literals][picomatch_matching_special_characters_as_literals]. Or use the [`.escapePath`](#escapepathpath). + +## How to exclude directory from reading? + +You can use a negative pattern like this: `!**/node_modules` or `!**/node_modules/**`. Also you can use [`ignore`](#ignore) option. Just look at the example below. + +```js +first/ +├── file.md +└── second/ + └── file.txt +``` + +If you don't want to read the `second` directory, you must write the following pattern: `!**/second` or `!**/second/**`. + +```js +fg.sync(['**/*.md', '!**/second']); // ['first/file.md'] +fg.sync(['**/*.md'], { ignore: ['**/second/**'] }); // ['first/file.md'] +``` + +> :warning: When you write `!**/second/**/*` it means that the directory will be **read**, but all the entries will not be included in the results. + +You have to understand that if you write the pattern to exclude directories, then the directory will not be read under any circumstances. + +## How to use UNC path? + +You cannot use [Uniform Naming Convention (UNC)][unc_path] paths as patterns (due to syntax) directly, but you can use them as [`cwd`](#cwd) directory or use the `fg.convertPathToPattern` method. + +```ts +// cwd +fg.sync('*', { cwd: '\\\\?\\C:\\Python27' /* or //?/C:/Python27 */ }); +fg.sync('Python27/*', { cwd: '\\\\?\\C:\\' /* or //?/C:/ */ }); + +// .convertPathToPattern +fg.sync(fg.convertPathToPattern('\\\\?\\c:\\Python27') + '/*'); +``` + +## Compatible with `node-glob`? + +| node-glob | fast-glob | +| :----------: | :-------: | +| `cwd` | [`cwd`](#cwd) | +| `root` | – | +| `dot` | [`dot`](#dot) | +| `nomount` | – | +| `mark` | [`markDirectories`](#markdirectories) | +| `nosort` | – | +| `nounique` | [`unique`](#unique) | +| `nobrace` | [`braceExpansion`](#braceexpansion) | +| `noglobstar` | [`globstar`](#globstar) | +| `noext` | [`extglob`](#extglob) | +| `nocase` | [`caseSensitiveMatch`](#casesensitivematch) | +| `matchBase` | [`baseNameMatch`](#basenamematch) | +| `nodir` | [`onlyFiles`](#onlyfiles) | +| `ignore` | [`ignore`](#ignore) | +| `follow` | [`followSymbolicLinks`](#followsymboliclinks) | +| `realpath` | – | +| `absolute` | [`absolute`](#absolute) | + +## Benchmarks + +You can see results [here](https://github.com/mrmlnc/fast-glob/actions/workflows/benchmark.yml?query=branch%3Amaster) for every commit into the `main` branch. + +* **Product benchmark** – comparison with the main competitors. +* **Regress benchmark** – regression between the current version and the version from the npm registry. + +## Changelog + +See the [Releases section of our GitHub project][github_releases] for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. + +[bash_hackers_syntax_expansion_brace]: https://wiki.bash-hackers.org/syntax/expansion/brace +[github_releases]: https://github.com/mrmlnc/fast-glob/releases +[glob_definition]: https://en.wikipedia.org/wiki/Glob_(programming) +[glob_linux_man]: http://man7.org/linux/man-pages/man3/glob.3.html +[micromatch_backslashes]: https://github.com/micromatch/micromatch#backslashes +[micromatch_braces]: https://github.com/micromatch/braces +[micromatch_extended_globbing]: https://github.com/micromatch/micromatch#extended-globbing +[micromatch_extglobs]: https://github.com/micromatch/micromatch#extglobs +[micromatch_regex_character_classes]: https://github.com/micromatch/micromatch#regex-character-classes +[micromatch]: https://github.com/micromatch/micromatch +[node_js_fs_class_fs_dirent]: https://nodejs.org/api/fs.html#fs_class_fs_dirent +[node_js_fs_class_fs_stats]: https://nodejs.org/api/fs.html#fs_class_fs_stats +[node_js_stream_readable_streams]: https://nodejs.org/api/stream.html#stream_readable_streams +[node_js]: https://nodejs.org/en +[nodelib_fs_scandir_old_and_modern_modern]: https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode +[npm_normalize_path]: https://www.npmjs.com/package/normalize-path +[npm_unixify]: https://www.npmjs.com/package/unixify +[picomatch_matching_behavior]: https://github.com/micromatch/picomatch#matching-behavior-vs-bash +[picomatch_matching_special_characters_as_literals]: https://github.com/micromatch/picomatch#matching-special-characters-as-literals +[picomatch_posix_brackets]: https://github.com/micromatch/picomatch#posix-brackets +[regular_expressions_brackets]: https://www.regular-expressions.info/brackets.html +[unc_path]: https://learn.microsoft.com/openspecs/windows_protocols/ms-dtyp/62e862f4-2a51-452e-8eeb-dc4ff5ee33cc +[wikipedia_case_sensitivity]: https://en.wikipedia.org/wiki/Case_sensitivity +[nodejs_thread_pool]: https://nodejs.org/en/docs/guides/dont-block-the-event-loop +[libuv_thread_pool]: http://docs.libuv.org/en/v1.x/threadpool.html +[windows_naming_conventions]: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions diff --git a/node_modules/fast-glob/out/index.d.ts b/node_modules/fast-glob/out/index.d.ts new file mode 100644 index 0000000..46823bb --- /dev/null +++ b/node_modules/fast-glob/out/index.d.ts @@ -0,0 +1,40 @@ +/// +import * as taskManager from './managers/tasks'; +import { Options as OptionsInternal } from './settings'; +import { Entry as EntryInternal, FileSystemAdapter as FileSystemAdapterInternal, Pattern as PatternInternal } from './types'; +type EntryObjectModePredicate = { + [TKey in keyof Pick]-?: true; +}; +type EntryStatsPredicate = { + [TKey in keyof Pick]-?: true; +}; +type EntryObjectPredicate = EntryObjectModePredicate | EntryStatsPredicate; +declare function FastGlob(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): Promise; +declare function FastGlob(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Promise; +declare namespace FastGlob { + type Options = OptionsInternal; + type Entry = EntryInternal; + type Task = taskManager.Task; + type Pattern = PatternInternal; + type FileSystemAdapter = FileSystemAdapterInternal; + const glob: typeof FastGlob; + const globSync: typeof sync; + const globStream: typeof stream; + const async: typeof FastGlob; + function sync(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): EntryInternal[]; + function sync(source: PatternInternal | PatternInternal[], options?: OptionsInternal): string[]; + function stream(source: PatternInternal | PatternInternal[], options?: OptionsInternal): NodeJS.ReadableStream; + function generateTasks(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Task[]; + function isDynamicPattern(source: PatternInternal, options?: OptionsInternal): boolean; + function escapePath(source: string): PatternInternal; + function convertPathToPattern(source: string): PatternInternal; + namespace posix { + function escapePath(source: string): PatternInternal; + function convertPathToPattern(source: string): PatternInternal; + } + namespace win32 { + function escapePath(source: string): PatternInternal; + function convertPathToPattern(source: string): PatternInternal; + } +} +export = FastGlob; diff --git a/node_modules/fast-glob/out/index.js b/node_modules/fast-glob/out/index.js new file mode 100644 index 0000000..90365d4 --- /dev/null +++ b/node_modules/fast-glob/out/index.js @@ -0,0 +1,102 @@ +"use strict"; +const taskManager = require("./managers/tasks"); +const async_1 = require("./providers/async"); +const stream_1 = require("./providers/stream"); +const sync_1 = require("./providers/sync"); +const settings_1 = require("./settings"); +const utils = require("./utils"); +async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); +} +// https://github.com/typescript-eslint/typescript-eslint/issues/60 +// eslint-disable-next-line no-redeclare +(function (FastGlob) { + FastGlob.glob = FastGlob; + FastGlob.globSync = sync; + FastGlob.globStream = stream; + FastGlob.async = FastGlob; + function sync(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob.sync = sync; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + /** + * The stream returned by the provider cannot work with an asynchronous iterator. + * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. + * This affects performance (+25%). I don't see best solution right now. + */ + return utils.stream.merge(works); + } + FastGlob.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = [].concat(source); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertPathToPattern(source); + } + FastGlob.convertPathToPattern = convertPathToPattern; + let posix; + (function (posix) { + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escapePosixPath(source); + } + posix.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertPosixPathToPattern(source); + } + posix.convertPathToPattern = convertPathToPattern; + })(posix = FastGlob.posix || (FastGlob.posix = {})); + let win32; + (function (win32) { + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escapeWindowsPath(source); + } + win32.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertWindowsPathToPattern(source); + } + win32.convertPathToPattern = convertPathToPattern; + })(win32 = FastGlob.win32 || (FastGlob.win32 = {})); +})(FastGlob || (FastGlob = {})); +function getWorks(source, _Provider, options) { + const patterns = [].concat(source); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); +} +function assertPatternsInput(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError('Patterns must be a string (non empty) or an array of strings'); + } +} +module.exports = FastGlob; diff --git a/node_modules/fast-glob/out/managers/tasks.d.ts b/node_modules/fast-glob/out/managers/tasks.d.ts new file mode 100644 index 0000000..59d2c42 --- /dev/null +++ b/node_modules/fast-glob/out/managers/tasks.d.ts @@ -0,0 +1,22 @@ +import Settings from '../settings'; +import { Pattern, PatternsGroup } from '../types'; +export type Task = { + base: string; + dynamic: boolean; + patterns: Pattern[]; + positive: Pattern[]; + negative: Pattern[]; +}; +export declare function generate(input: Pattern[], settings: Settings): Task[]; +/** + * Returns tasks grouped by basic pattern directories. + * + * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. + * This is necessary because directory traversal starts at the base directory and goes deeper. + */ +export declare function convertPatternsToTasks(positive: Pattern[], negative: Pattern[], dynamic: boolean): Task[]; +export declare function getPositivePatterns(patterns: Pattern[]): Pattern[]; +export declare function getNegativePatternsAsPositive(patterns: Pattern[], ignore: Pattern[]): Pattern[]; +export declare function groupPatternsByBaseDirectory(patterns: Pattern[]): PatternsGroup; +export declare function convertPatternGroupsToTasks(positive: PatternsGroup, negative: Pattern[], dynamic: boolean): Task[]; +export declare function convertPatternGroupToTask(base: string, positive: Pattern[], negative: Pattern[], dynamic: boolean): Task; diff --git a/node_modules/fast-glob/out/managers/tasks.js b/node_modules/fast-glob/out/managers/tasks.js new file mode 100644 index 0000000..335a765 --- /dev/null +++ b/node_modules/fast-glob/out/managers/tasks.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; +const utils = require("../utils"); +function generate(input, settings) { + const patterns = processPatterns(input, settings); + const ignore = processPatterns(settings.ignore, settings); + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); + return staticTasks.concat(dynamicTasks); +} +exports.generate = generate; +function processPatterns(input, settings) { + let patterns = input; + /** + * The original pattern like `{,*,**,a/*}` can lead to problems checking the depth when matching entry + * and some problems with the micromatch package (see fast-glob issues: #365, #394). + * + * To solve this problem, we expand all patterns containing brace expansion. This can lead to a slight slowdown + * in matching in the case of a large set of patterns after expansion. + */ + if (settings.braceExpansion) { + patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); + } + /** + * If the `baseNameMatch` option is enabled, we must add globstar to patterns, so that they can be used + * at any nesting level. + * + * We do this here, because otherwise we have to complicate the filtering logic. For example, we need to change + * the pattern in the filter before creating a regular expression. There is no need to change the patterns + * in the application. Only on the input. + */ + if (settings.baseNameMatch) { + patterns = patterns.map((pattern) => pattern.includes('/') ? pattern : `**/${pattern}`); + } + /** + * This method also removes duplicate slashes that may have been in the pattern or formed as a result of expansion. + */ + return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); +} +/** + * Returns tasks grouped by basic pattern directories. + * + * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. + * This is necessary because directory traversal starts at the base directory and goes deeper. + */ +function convertPatternsToTasks(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + /* + * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory + * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest. + */ + if ('.' in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); + } + else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + } + return tasks; +} +exports.convertPatternsToTasks = convertPatternsToTasks; +function getPositivePatterns(patterns) { + return utils.pattern.getPositivePatterns(patterns); +} +exports.getPositivePatterns = getPositivePatterns; +function getNegativePatternsAsPositive(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; +} +exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; +function groupPatternsByBaseDirectory(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } + else { + collection[base] = [pattern]; + } + return collection; + }, group); +} +exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; +function convertPatternGroupsToTasks(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); +} +exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; +function convertPatternGroupToTask(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; +} +exports.convertPatternGroupToTask = convertPatternGroupToTask; diff --git a/node_modules/fast-glob/out/providers/async.d.ts b/node_modules/fast-glob/out/providers/async.d.ts new file mode 100644 index 0000000..2742616 --- /dev/null +++ b/node_modules/fast-glob/out/providers/async.d.ts @@ -0,0 +1,9 @@ +import { Task } from '../managers/tasks'; +import { Entry, EntryItem, ReaderOptions } from '../types'; +import ReaderAsync from '../readers/async'; +import Provider from './provider'; +export default class ProviderAsync extends Provider> { + protected _reader: ReaderAsync; + read(task: Task): Promise; + api(root: string, task: Task, options: ReaderOptions): Promise; +} diff --git a/node_modules/fast-glob/out/providers/async.js b/node_modules/fast-glob/out/providers/async.js new file mode 100644 index 0000000..0c5286e --- /dev/null +++ b/node_modules/fast-glob/out/providers/async.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const async_1 = require("../readers/async"); +const provider_1 = require("./provider"); +class ProviderAsync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new async_1.default(this._settings); + } + async read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = await this.api(root, task, options); + return entries.map((entry) => options.transform(entry)); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderAsync; diff --git a/node_modules/fast-glob/out/providers/filters/deep.d.ts b/node_modules/fast-glob/out/providers/filters/deep.d.ts new file mode 100644 index 0000000..377fab8 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/deep.d.ts @@ -0,0 +1,16 @@ +import { MicromatchOptions, EntryFilterFunction, Pattern } from '../../types'; +import Settings from '../../settings'; +export default class DeepFilter { + private readonly _settings; + private readonly _micromatchOptions; + constructor(_settings: Settings, _micromatchOptions: MicromatchOptions); + getFilter(basePath: string, positive: Pattern[], negative: Pattern[]): EntryFilterFunction; + private _getMatcher; + private _getNegativePatternsRe; + private _filter; + private _isSkippedByDeep; + private _getEntryLevel; + private _isSkippedSymbolicLink; + private _isSkippedByPositivePatterns; + private _isSkippedByNegativePatterns; +} diff --git a/node_modules/fast-glob/out/providers/filters/deep.js b/node_modules/fast-glob/out/providers/filters/deep.js new file mode 100644 index 0000000..644bf41 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/deep.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +const partial_1 = require("../matchers/partial"); +class DeepFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + } + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); + } + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; + } + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); + } + _isSkippedByDeep(basePath, entryPath) { + /** + * Avoid unnecessary depth calculations when it doesn't matter. + */ + if (this._settings.deep === Infinity) { + return false; + } + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split('/').length; + if (basePath === '') { + return entryPathDepth; + } + const basePathDepth = basePath.split('/').length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } +} +exports.default = DeepFilter; diff --git a/node_modules/fast-glob/out/providers/filters/entry.d.ts b/node_modules/fast-glob/out/providers/filters/entry.d.ts new file mode 100644 index 0000000..ee71281 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/entry.d.ts @@ -0,0 +1,16 @@ +import Settings from '../../settings'; +import { EntryFilterFunction, MicromatchOptions, Pattern } from '../../types'; +export default class EntryFilter { + private readonly _settings; + private readonly _micromatchOptions; + readonly index: Map; + constructor(_settings: Settings, _micromatchOptions: MicromatchOptions); + getFilter(positive: Pattern[], negative: Pattern[]): EntryFilterFunction; + private _filter; + private _isDuplicateEntry; + private _createIndexRecord; + private _onlyFileFilter; + private _onlyDirectoryFilter; + private _isSkippedByAbsoluteNegativePatterns; + private _isMatchToPatterns; +} diff --git a/node_modules/fast-glob/out/providers/filters/entry.js b/node_modules/fast-glob/out/providers/filters/entry.js new file mode 100644 index 0000000..361a7b4 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/entry.js @@ -0,0 +1,63 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class EntryFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = new Map(); + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._settings.unique && this._isDuplicateEntry(filepath)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) { + return false; + } + const isDirectory = entry.dirent.isDirectory(); + const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory); + if (this._settings.unique && isMatched) { + this._createIndexRecord(filepath); + } + return isMatched; + } + _isDuplicateEntry(filepath) { + return this.index.has(filepath); + } + _createIndexRecord(filepath) { + this.index.set(filepath, undefined); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(filepath, patternsRe, isDirectory) { + // Trying to match files and directories by patterns. + const isMatched = utils.pattern.matchAny(filepath, patternsRe); + // A pattern with a trailling slash can be used for directory matching. + // To apply such pattern, we need to add a tralling slash to the path. + if (!isMatched && isDirectory) { + return utils.pattern.matchAny(filepath + '/', patternsRe); + } + return isMatched; + } +} +exports.default = EntryFilter; diff --git a/node_modules/fast-glob/out/providers/filters/error.d.ts b/node_modules/fast-glob/out/providers/filters/error.d.ts new file mode 100644 index 0000000..170eb25 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/error.d.ts @@ -0,0 +1,8 @@ +import Settings from '../../settings'; +import { ErrorFilterFunction } from '../../types'; +export default class ErrorFilter { + private readonly _settings; + constructor(_settings: Settings); + getFilter(): ErrorFilterFunction; + private _isNonFatalError; +} diff --git a/node_modules/fast-glob/out/providers/filters/error.js b/node_modules/fast-glob/out/providers/filters/error.js new file mode 100644 index 0000000..1c6f241 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/error.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class ErrorFilter { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error) => this._isNonFatalError(error); + } + _isNonFatalError(error) { + return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors; + } +} +exports.default = ErrorFilter; diff --git a/node_modules/fast-glob/out/providers/matchers/matcher.d.ts b/node_modules/fast-glob/out/providers/matchers/matcher.d.ts new file mode 100644 index 0000000..d04c232 --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/matcher.d.ts @@ -0,0 +1,33 @@ +import { Pattern, MicromatchOptions, PatternRe } from '../../types'; +import Settings from '../../settings'; +export type PatternSegment = StaticPatternSegment | DynamicPatternSegment; +type StaticPatternSegment = { + dynamic: false; + pattern: Pattern; +}; +type DynamicPatternSegment = { + dynamic: true; + pattern: Pattern; + patternRe: PatternRe; +}; +export type PatternSection = PatternSegment[]; +export type PatternInfo = { + /** + * Indicates that the pattern has a globstar (more than a single section). + */ + complete: boolean; + pattern: Pattern; + segments: PatternSegment[]; + sections: PatternSection[]; +}; +export default abstract class Matcher { + private readonly _patterns; + private readonly _settings; + private readonly _micromatchOptions; + protected readonly _storage: PatternInfo[]; + constructor(_patterns: Pattern[], _settings: Settings, _micromatchOptions: MicromatchOptions); + private _fillStorage; + private _getPatternSegments; + private _splitSegmentsIntoSections; +} +export {}; diff --git a/node_modules/fast-glob/out/providers/matchers/matcher.js b/node_modules/fast-glob/out/providers/matchers/matcher.js new file mode 100644 index 0000000..eae67c9 --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/matcher.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class Matcher { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); + } + _fillStorage() { + for (const pattern of this._patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); + } + } + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); + } +} +exports.default = Matcher; diff --git a/node_modules/fast-glob/out/providers/matchers/partial.d.ts b/node_modules/fast-glob/out/providers/matchers/partial.d.ts new file mode 100644 index 0000000..91520f6 --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/partial.d.ts @@ -0,0 +1,4 @@ +import Matcher from './matcher'; +export default class PartialMatcher extends Matcher { + match(filepath: string): boolean; +} diff --git a/node_modules/fast-glob/out/providers/matchers/partial.js b/node_modules/fast-glob/out/providers/matchers/partial.js new file mode 100644 index 0000000..1dfffeb --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/partial.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const matcher_1 = require("./matcher"); +class PartialMatcher extends matcher_1.default { + match(filepath) { + const parts = filepath.split('/'); + const levels = parts.length; + const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + /** + * In this case, the pattern has a globstar and we must read all directories unconditionally, + * but only if the level has reached the end of the first group. + * + * fixtures/{a,b}/** + * ^ true/false ^ always true + */ + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } +} +exports.default = PartialMatcher; diff --git a/node_modules/fast-glob/out/providers/provider.d.ts b/node_modules/fast-glob/out/providers/provider.d.ts new file mode 100644 index 0000000..1053460 --- /dev/null +++ b/node_modules/fast-glob/out/providers/provider.d.ts @@ -0,0 +1,19 @@ +import { Task } from '../managers/tasks'; +import Settings from '../settings'; +import { MicromatchOptions, ReaderOptions } from '../types'; +import DeepFilter from './filters/deep'; +import EntryFilter from './filters/entry'; +import ErrorFilter from './filters/error'; +import EntryTransformer from './transformers/entry'; +export default abstract class Provider { + protected readonly _settings: Settings; + readonly errorFilter: ErrorFilter; + readonly entryFilter: EntryFilter; + readonly deepFilter: DeepFilter; + readonly entryTransformer: EntryTransformer; + constructor(_settings: Settings); + abstract read(_task: Task): T; + protected _getRootDirectory(task: Task): string; + protected _getReaderOptions(task: Task): ReaderOptions; + protected _getMicromatchOptions(): MicromatchOptions; +} diff --git a/node_modules/fast-glob/out/providers/provider.js b/node_modules/fast-glob/out/providers/provider.js new file mode 100644 index 0000000..da88ee0 --- /dev/null +++ b/node_modules/fast-glob/out/providers/provider.js @@ -0,0 +1,48 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const deep_1 = require("./filters/deep"); +const entry_1 = require("./filters/entry"); +const error_1 = require("./filters/error"); +const entry_2 = require("./transformers/entry"); +class Provider { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === '.' ? '' : task.base; + return { + basePath, + pathSegmentSeparator: '/', + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; + } +} +exports.default = Provider; diff --git a/node_modules/fast-glob/out/providers/stream.d.ts b/node_modules/fast-glob/out/providers/stream.d.ts new file mode 100644 index 0000000..3d02a1f --- /dev/null +++ b/node_modules/fast-glob/out/providers/stream.d.ts @@ -0,0 +1,11 @@ +/// +import { Readable } from 'stream'; +import { Task } from '../managers/tasks'; +import ReaderStream from '../readers/stream'; +import { ReaderOptions } from '../types'; +import Provider from './provider'; +export default class ProviderStream extends Provider { + protected _reader: ReaderStream; + read(task: Task): Readable; + api(root: string, task: Task, options: ReaderOptions): Readable; +} diff --git a/node_modules/fast-glob/out/providers/stream.js b/node_modules/fast-glob/out/providers/stream.js new file mode 100644 index 0000000..85da62e --- /dev/null +++ b/node_modules/fast-glob/out/providers/stream.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const stream_2 = require("../readers/stream"); +const provider_1 = require("./provider"); +class ProviderStream extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); + source + .once('error', (error) => destination.emit('error', error)) + .on('data', (entry) => destination.emit('data', options.transform(entry))) + .once('end', () => destination.emit('end')); + destination + .once('close', () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderStream; diff --git a/node_modules/fast-glob/out/providers/sync.d.ts b/node_modules/fast-glob/out/providers/sync.d.ts new file mode 100644 index 0000000..9c0fe1e --- /dev/null +++ b/node_modules/fast-glob/out/providers/sync.d.ts @@ -0,0 +1,9 @@ +import { Task } from '../managers/tasks'; +import ReaderSync from '../readers/sync'; +import { Entry, EntryItem, ReaderOptions } from '../types'; +import Provider from './provider'; +export default class ProviderSync extends Provider { + protected _reader: ReaderSync; + read(task: Task): EntryItem[]; + api(root: string, task: Task, options: ReaderOptions): Entry[]; +} diff --git a/node_modules/fast-glob/out/providers/sync.js b/node_modules/fast-glob/out/providers/sync.js new file mode 100644 index 0000000..d70aa1b --- /dev/null +++ b/node_modules/fast-glob/out/providers/sync.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = require("../readers/sync"); +const provider_1 = require("./provider"); +class ProviderSync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderSync; diff --git a/node_modules/fast-glob/out/providers/transformers/entry.d.ts b/node_modules/fast-glob/out/providers/transformers/entry.d.ts new file mode 100644 index 0000000..e9b85fa --- /dev/null +++ b/node_modules/fast-glob/out/providers/transformers/entry.d.ts @@ -0,0 +1,8 @@ +import Settings from '../../settings'; +import { EntryTransformerFunction } from '../../types'; +export default class EntryTransformer { + private readonly _settings; + constructor(_settings: Settings); + getTransformer(): EntryTransformerFunction; + private _transform; +} diff --git a/node_modules/fast-glob/out/providers/transformers/entry.js b/node_modules/fast-glob/out/providers/transformers/entry.js new file mode 100644 index 0000000..d11903c --- /dev/null +++ b/node_modules/fast-glob/out/providers/transformers/entry.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class EntryTransformer { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += '/'; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { path: filepath }); + } +} +exports.default = EntryTransformer; diff --git a/node_modules/fast-glob/out/readers/async.d.ts b/node_modules/fast-glob/out/readers/async.d.ts new file mode 100644 index 0000000..fbca428 --- /dev/null +++ b/node_modules/fast-glob/out/readers/async.d.ts @@ -0,0 +1,10 @@ +import * as fsWalk from '@nodelib/fs.walk'; +import { Entry, ReaderOptions, Pattern } from '../types'; +import Reader from './reader'; +import ReaderStream from './stream'; +export default class ReaderAsync extends Reader> { + protected _walkAsync: typeof fsWalk.walk; + protected _readerStream: ReaderStream; + dynamic(root: string, options: ReaderOptions): Promise; + static(patterns: Pattern[], options: ReaderOptions): Promise; +} diff --git a/node_modules/fast-glob/out/readers/async.js b/node_modules/fast-glob/out/readers/async.js new file mode 100644 index 0000000..d024145 --- /dev/null +++ b/node_modules/fast-glob/out/readers/async.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsWalk = require("@nodelib/fs.walk"); +const reader_1 = require("./reader"); +const stream_1 = require("./stream"); +class ReaderAsync extends reader_1.default { + constructor() { + super(...arguments); + this._walkAsync = fsWalk.walk; + this._readerStream = new stream_1.default(this._settings); + } + dynamic(root, options) { + return new Promise((resolve, reject) => { + this._walkAsync(root, options, (error, entries) => { + if (error === null) { + resolve(entries); + } + else { + reject(error); + } + }); + }); + } + async static(patterns, options) { + const entries = []; + const stream = this._readerStream.static(patterns, options); + // After #235, replace it with an asynchronous iterator. + return new Promise((resolve, reject) => { + stream.once('error', reject); + stream.on('data', (entry) => entries.push(entry)); + stream.once('end', () => resolve(entries)); + }); + } +} +exports.default = ReaderAsync; diff --git a/node_modules/fast-glob/out/readers/reader.d.ts b/node_modules/fast-glob/out/readers/reader.d.ts new file mode 100644 index 0000000..2af16b6 --- /dev/null +++ b/node_modules/fast-glob/out/readers/reader.d.ts @@ -0,0 +1,15 @@ +/// +import * as fs from 'fs'; +import * as fsStat from '@nodelib/fs.stat'; +import Settings from '../settings'; +import { Entry, ErrnoException, Pattern, ReaderOptions } from '../types'; +export default abstract class Reader { + protected readonly _settings: Settings; + protected readonly _fsStatSettings: fsStat.Settings; + constructor(_settings: Settings); + abstract dynamic(root: string, options: ReaderOptions): T; + abstract static(patterns: Pattern[], options: ReaderOptions): T; + protected _getFullEntryPath(filepath: string): string; + protected _makeEntry(stats: fs.Stats, pattern: Pattern): Entry; + protected _isFatalError(error: ErrnoException): boolean; +} diff --git a/node_modules/fast-glob/out/readers/reader.js b/node_modules/fast-glob/out/readers/reader.js new file mode 100644 index 0000000..7b40255 --- /dev/null +++ b/node_modules/fast-glob/out/readers/reader.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const fsStat = require("@nodelib/fs.stat"); +const utils = require("../utils"); +class Reader { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error) { + return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors; + } +} +exports.default = Reader; diff --git a/node_modules/fast-glob/out/readers/stream.d.ts b/node_modules/fast-glob/out/readers/stream.d.ts new file mode 100644 index 0000000..1c74cac --- /dev/null +++ b/node_modules/fast-glob/out/readers/stream.d.ts @@ -0,0 +1,14 @@ +/// +import { Readable } from 'stream'; +import * as fsStat from '@nodelib/fs.stat'; +import * as fsWalk from '@nodelib/fs.walk'; +import { Pattern, ReaderOptions } from '../types'; +import Reader from './reader'; +export default class ReaderStream extends Reader { + protected _walkStream: typeof fsWalk.walkStream; + protected _stat: typeof fsStat.stat; + dynamic(root: string, options: ReaderOptions): Readable; + static(patterns: Pattern[], options: ReaderOptions): Readable; + private _getEntry; + private _getStat; +} diff --git a/node_modules/fast-glob/out/readers/stream.js b/node_modules/fast-glob/out/readers/stream.js new file mode 100644 index 0000000..317c6d5 --- /dev/null +++ b/node_modules/fast-glob/out/readers/stream.js @@ -0,0 +1,55 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const fsStat = require("@nodelib/fs.stat"); +const fsWalk = require("@nodelib/fs.walk"); +const reader_1 = require("./reader"); +class ReaderStream extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ objectMode: true }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options) + .then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }) + .catch(done); + }; + for (let i = 0; i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath) + .then((stats) => this._makeEntry(stats, pattern)) + .catch((error) => { + if (options.errorFilter(error)) { + return null; + } + throw error; + }); + } + _getStat(filepath) { + return new Promise((resolve, reject) => { + this._stat(filepath, this._fsStatSettings, (error, stats) => { + return error === null ? resolve(stats) : reject(error); + }); + }); + } +} +exports.default = ReaderStream; diff --git a/node_modules/fast-glob/out/readers/sync.d.ts b/node_modules/fast-glob/out/readers/sync.d.ts new file mode 100644 index 0000000..c96ffee --- /dev/null +++ b/node_modules/fast-glob/out/readers/sync.d.ts @@ -0,0 +1,12 @@ +import * as fsStat from '@nodelib/fs.stat'; +import * as fsWalk from '@nodelib/fs.walk'; +import { Entry, Pattern, ReaderOptions } from '../types'; +import Reader from './reader'; +export default class ReaderSync extends Reader { + protected _walkSync: typeof fsWalk.walkSync; + protected _statSync: typeof fsStat.statSync; + dynamic(root: string, options: ReaderOptions): Entry[]; + static(patterns: Pattern[], options: ReaderOptions): Entry[]; + private _getEntry; + private _getStat; +} diff --git a/node_modules/fast-glob/out/readers/sync.js b/node_modules/fast-glob/out/readers/sync.js new file mode 100644 index 0000000..4704d65 --- /dev/null +++ b/node_modules/fast-glob/out/readers/sync.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsStat = require("@nodelib/fs.stat"); +const fsWalk = require("@nodelib/fs.walk"); +const reader_1 = require("./reader"); +class ReaderSync extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } + catch (error) { + if (options.errorFilter(error)) { + return null; + } + throw error; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } +} +exports.default = ReaderSync; diff --git a/node_modules/fast-glob/out/settings.d.ts b/node_modules/fast-glob/out/settings.d.ts new file mode 100644 index 0000000..76a74f8 --- /dev/null +++ b/node_modules/fast-glob/out/settings.d.ts @@ -0,0 +1,164 @@ +import { FileSystemAdapter, Pattern } from './types'; +export declare const DEFAULT_FILE_SYSTEM_ADAPTER: FileSystemAdapter; +export type Options = { + /** + * Return the absolute path for entries. + * + * @default false + */ + absolute?: boolean; + /** + * If set to `true`, then patterns without slashes will be matched against + * the basename of the path if it contains slashes. + * + * @default false + */ + baseNameMatch?: boolean; + /** + * Enables Bash-like brace expansion. + * + * @default true + */ + braceExpansion?: boolean; + /** + * Enables a case-sensitive mode for matching files. + * + * @default true + */ + caseSensitiveMatch?: boolean; + /** + * Specifies the maximum number of concurrent requests from a reader to read + * directories. + * + * @default os.cpus().length + */ + concurrency?: number; + /** + * The current working directory in which to search. + * + * @default process.cwd() + */ + cwd?: string; + /** + * Specifies the maximum depth of a read directory relative to the start + * directory. + * + * @default Infinity + */ + deep?: number; + /** + * Allow patterns to match entries that begin with a period (`.`). + * + * @default false + */ + dot?: boolean; + /** + * Enables Bash-like `extglob` functionality. + * + * @default true + */ + extglob?: boolean; + /** + * Indicates whether to traverse descendants of symbolic link directories. + * + * @default true + */ + followSymbolicLinks?: boolean; + /** + * Custom implementation of methods for working with the file system. + * + * @default fs.* + */ + fs?: Partial; + /** + * Enables recursively repeats a pattern containing `**`. + * If `false`, `**` behaves exactly like `*`. + * + * @default true + */ + globstar?: boolean; + /** + * An array of glob patterns to exclude matches. + * This is an alternative way to use negative patterns. + * + * @default [] + */ + ignore?: Pattern[]; + /** + * Mark the directory path with the final slash. + * + * @default false + */ + markDirectories?: boolean; + /** + * Returns objects (instead of strings) describing entries. + * + * @default false + */ + objectMode?: boolean; + /** + * Return only directories. + * + * @default false + */ + onlyDirectories?: boolean; + /** + * Return only files. + * + * @default true + */ + onlyFiles?: boolean; + /** + * Enables an object mode (`objectMode`) with an additional `stats` field. + * + * @default false + */ + stats?: boolean; + /** + * By default this package suppress only `ENOENT` errors. + * Set to `true` to suppress any error. + * + * @default false + */ + suppressErrors?: boolean; + /** + * Throw an error when symbolic link is broken if `true` or safely + * return `lstat` call if `false`. + * + * @default false + */ + throwErrorOnBrokenSymbolicLink?: boolean; + /** + * Ensures that the returned entries are unique. + * + * @default true + */ + unique?: boolean; +}; +export default class Settings { + private readonly _options; + readonly absolute: boolean; + readonly baseNameMatch: boolean; + readonly braceExpansion: boolean; + readonly caseSensitiveMatch: boolean; + readonly concurrency: number; + readonly cwd: string; + readonly deep: number; + readonly dot: boolean; + readonly extglob: boolean; + readonly followSymbolicLinks: boolean; + readonly fs: FileSystemAdapter; + readonly globstar: boolean; + readonly ignore: Pattern[]; + readonly markDirectories: boolean; + readonly objectMode: boolean; + readonly onlyDirectories: boolean; + readonly onlyFiles: boolean; + readonly stats: boolean; + readonly suppressErrors: boolean; + readonly throwErrorOnBrokenSymbolicLink: boolean; + readonly unique: boolean; + constructor(_options?: Options); + private _getValue; + private _getFileSystemMethods; +} diff --git a/node_modules/fast-glob/out/settings.js b/node_modules/fast-glob/out/settings.js new file mode 100644 index 0000000..23f916c --- /dev/null +++ b/node_modules/fast-glob/out/settings.js @@ -0,0 +1,59 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; +const fs = require("fs"); +const os = require("os"); +/** + * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. + * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 + */ +const CPU_COUNT = Math.max(os.cpus().length, 1); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + lstatSync: fs.lstatSync, + stat: fs.stat, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +class Settings { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + // Remove the cast to the array in the next major (#404). + this.ignore = [].concat(this.ignore); + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } +} +exports.default = Settings; diff --git a/node_modules/fast-glob/out/types/index.d.ts b/node_modules/fast-glob/out/types/index.d.ts new file mode 100644 index 0000000..6506caf --- /dev/null +++ b/node_modules/fast-glob/out/types/index.d.ts @@ -0,0 +1,31 @@ +/// +import * as fsWalk from '@nodelib/fs.walk'; +export type ErrnoException = NodeJS.ErrnoException; +export type Entry = fsWalk.Entry; +export type EntryItem = string | Entry; +export type Pattern = string; +export type PatternRe = RegExp; +export type PatternsGroup = Record; +export type ReaderOptions = fsWalk.Options & { + transform(entry: Entry): EntryItem; + deepFilter: DeepFilterFunction; + entryFilter: EntryFilterFunction; + errorFilter: ErrorFilterFunction; + fs: FileSystemAdapter; + stats: boolean; +}; +export type ErrorFilterFunction = fsWalk.ErrorFilterFunction; +export type EntryFilterFunction = fsWalk.EntryFilterFunction; +export type DeepFilterFunction = fsWalk.DeepFilterFunction; +export type EntryTransformerFunction = (entry: Entry) => EntryItem; +export type MicromatchOptions = { + dot?: boolean; + matchBase?: boolean; + nobrace?: boolean; + nocase?: boolean; + noext?: boolean; + noglobstar?: boolean; + posix?: boolean; + strictSlashes?: boolean; +}; +export type FileSystemAdapter = fsWalk.FileSystemAdapter; diff --git a/node_modules/fast-glob/out/types/index.js b/node_modules/fast-glob/out/types/index.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/fast-glob/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/fast-glob/out/utils/array.d.ts b/node_modules/fast-glob/out/utils/array.d.ts new file mode 100644 index 0000000..98e7325 --- /dev/null +++ b/node_modules/fast-glob/out/utils/array.d.ts @@ -0,0 +1,2 @@ +export declare function flatten(items: T[][]): T[]; +export declare function splitWhen(items: T[], predicate: (item: T) => boolean): T[][]; diff --git a/node_modules/fast-glob/out/utils/array.js b/node_modules/fast-glob/out/utils/array.js new file mode 100644 index 0000000..50c406e --- /dev/null +++ b/node_modules/fast-glob/out/utils/array.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitWhen = exports.flatten = void 0; +function flatten(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); +} +exports.flatten = flatten; +function splitWhen(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } + else { + result[groupIndex].push(item); + } + } + return result; +} +exports.splitWhen = splitWhen; diff --git a/node_modules/fast-glob/out/utils/errno.d.ts b/node_modules/fast-glob/out/utils/errno.d.ts new file mode 100644 index 0000000..1c08d3b --- /dev/null +++ b/node_modules/fast-glob/out/utils/errno.d.ts @@ -0,0 +1,2 @@ +import { ErrnoException } from '../types'; +export declare function isEnoentCodeError(error: ErrnoException): boolean; diff --git a/node_modules/fast-glob/out/utils/errno.js b/node_modules/fast-glob/out/utils/errno.js new file mode 100644 index 0000000..f0bd801 --- /dev/null +++ b/node_modules/fast-glob/out/utils/errno.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEnoentCodeError = void 0; +function isEnoentCodeError(error) { + return error.code === 'ENOENT'; +} +exports.isEnoentCodeError = isEnoentCodeError; diff --git a/node_modules/fast-glob/out/utils/fs.d.ts b/node_modules/fast-glob/out/utils/fs.d.ts new file mode 100644 index 0000000..64c61ce --- /dev/null +++ b/node_modules/fast-glob/out/utils/fs.d.ts @@ -0,0 +1,4 @@ +/// +import * as fs from 'fs'; +import { Dirent } from '@nodelib/fs.walk'; +export declare function createDirentFromStats(name: string, stats: fs.Stats): Dirent; diff --git a/node_modules/fast-glob/out/utils/fs.js b/node_modules/fast-glob/out/utils/fs.js new file mode 100644 index 0000000..ace7c74 --- /dev/null +++ b/node_modules/fast-glob/out/utils/fs.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDirentFromStats = void 0; +class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } +} +function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); +} +exports.createDirentFromStats = createDirentFromStats; diff --git a/node_modules/fast-glob/out/utils/index.d.ts b/node_modules/fast-glob/out/utils/index.d.ts new file mode 100644 index 0000000..f634cad --- /dev/null +++ b/node_modules/fast-glob/out/utils/index.d.ts @@ -0,0 +1,8 @@ +import * as array from './array'; +import * as errno from './errno'; +import * as fs from './fs'; +import * as path from './path'; +import * as pattern from './pattern'; +import * as stream from './stream'; +import * as string from './string'; +export { array, errno, fs, path, pattern, stream, string }; diff --git a/node_modules/fast-glob/out/utils/index.js b/node_modules/fast-glob/out/utils/index.js new file mode 100644 index 0000000..0f92c16 --- /dev/null +++ b/node_modules/fast-glob/out/utils/index.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; +const array = require("./array"); +exports.array = array; +const errno = require("./errno"); +exports.errno = errno; +const fs = require("./fs"); +exports.fs = fs; +const path = require("./path"); +exports.path = path; +const pattern = require("./pattern"); +exports.pattern = pattern; +const stream = require("./stream"); +exports.stream = stream; +const string = require("./string"); +exports.string = string; diff --git a/node_modules/fast-glob/out/utils/path.d.ts b/node_modules/fast-glob/out/utils/path.d.ts new file mode 100644 index 0000000..0b13f4b --- /dev/null +++ b/node_modules/fast-glob/out/utils/path.d.ts @@ -0,0 +1,13 @@ +import { Pattern } from '../types'; +/** + * Designed to work only with simple paths: `dir\\file`. + */ +export declare function unixify(filepath: string): string; +export declare function makeAbsolute(cwd: string, filepath: string): string; +export declare function removeLeadingDotSegment(entry: string): string; +export declare const escape: typeof escapeWindowsPath; +export declare function escapeWindowsPath(pattern: Pattern): Pattern; +export declare function escapePosixPath(pattern: Pattern): Pattern; +export declare const convertPathToPattern: typeof convertWindowsPathToPattern; +export declare function convertWindowsPathToPattern(filepath: string): Pattern; +export declare function convertPosixPathToPattern(filepath: string): Pattern; diff --git a/node_modules/fast-glob/out/utils/path.js b/node_modules/fast-glob/out/utils/path.js new file mode 100644 index 0000000..97a7b49 --- /dev/null +++ b/node_modules/fast-glob/out/utils/path.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0; +const os = require("os"); +const path = require("path"); +const IS_WINDOWS_PLATFORM = os.platform() === 'win32'; +const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ +/** + * All non-escaped special characters. + * Posix: ()*?[\]{|}, !+@ before (, ! at the beginning, \\ before non-special characters. + * Windows: (){}, !+@ before (, ! at the beginning. + */ +const POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; +const WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([(){}]|^!|[!+@](?=\())/g; +/** + * The device path (\\.\ or \\?\). + * https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#dos-device-paths + */ +const DOS_DEVICE_PATH_RE = /^\\\\([.?])/; +/** + * All backslashes except those escaping special characters. + * Windows: !()+@{} + * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions + */ +const WINDOWS_BACKSLASHES_RE = /\\(?![!()+@{}])/g; +/** + * Designed to work only with simple paths: `dir\\file`. + */ +function unixify(filepath) { + return filepath.replace(/\\/g, '/'); +} +exports.unixify = unixify; +function makeAbsolute(cwd, filepath) { + return path.resolve(cwd, filepath); +} +exports.makeAbsolute = makeAbsolute; +function removeLeadingDotSegment(entry) { + // We do not use `startsWith` because this is 10x slower than current implementation for some cases. + // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with + if (entry.charAt(0) === '.') { + const secondCharactery = entry.charAt(1); + if (secondCharactery === '/' || secondCharactery === '\\') { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; +} +exports.removeLeadingDotSegment = removeLeadingDotSegment; +exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; +function escapeWindowsPath(pattern) { + return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escapeWindowsPath = escapeWindowsPath; +function escapePosixPath(pattern) { + return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escapePosixPath = escapePosixPath; +exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; +function convertWindowsPathToPattern(filepath) { + return escapeWindowsPath(filepath) + .replace(DOS_DEVICE_PATH_RE, '//$1') + .replace(WINDOWS_BACKSLASHES_RE, '/'); +} +exports.convertWindowsPathToPattern = convertWindowsPathToPattern; +function convertPosixPathToPattern(filepath) { + return escapePosixPath(filepath); +} +exports.convertPosixPathToPattern = convertPosixPathToPattern; diff --git a/node_modules/fast-glob/out/utils/pattern.d.ts b/node_modules/fast-glob/out/utils/pattern.d.ts new file mode 100644 index 0000000..e7ff07b --- /dev/null +++ b/node_modules/fast-glob/out/utils/pattern.d.ts @@ -0,0 +1,47 @@ +import { MicromatchOptions, Pattern, PatternRe } from '../types'; +type PatternTypeOptions = { + braceExpansion?: boolean; + caseSensitiveMatch?: boolean; + extglob?: boolean; +}; +export declare function isStaticPattern(pattern: Pattern, options?: PatternTypeOptions): boolean; +export declare function isDynamicPattern(pattern: Pattern, options?: PatternTypeOptions): boolean; +export declare function convertToPositivePattern(pattern: Pattern): Pattern; +export declare function convertToNegativePattern(pattern: Pattern): Pattern; +export declare function isNegativePattern(pattern: Pattern): boolean; +export declare function isPositivePattern(pattern: Pattern): boolean; +export declare function getNegativePatterns(patterns: Pattern[]): Pattern[]; +export declare function getPositivePatterns(patterns: Pattern[]): Pattern[]; +/** + * Returns patterns that can be applied inside the current directory. + * + * @example + * // ['./*', '*', 'a/*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +export declare function getPatternsInsideCurrentDirectory(patterns: Pattern[]): Pattern[]; +/** + * Returns patterns to be expanded relative to (outside) the current directory. + * + * @example + * // ['../*', './../*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +export declare function getPatternsOutsideCurrentDirectory(patterns: Pattern[]): Pattern[]; +export declare function isPatternRelatedToParentDirectory(pattern: Pattern): boolean; +export declare function getBaseDirectory(pattern: Pattern): string; +export declare function hasGlobStar(pattern: Pattern): boolean; +export declare function endsWithSlashGlobStar(pattern: Pattern): boolean; +export declare function isAffectDepthOfReadingPattern(pattern: Pattern): boolean; +export declare function expandPatternsWithBraceExpansion(patterns: Pattern[]): Pattern[]; +export declare function expandBraceExpansion(pattern: Pattern): Pattern[]; +export declare function getPatternParts(pattern: Pattern, options: MicromatchOptions): Pattern[]; +export declare function makeRe(pattern: Pattern, options: MicromatchOptions): PatternRe; +export declare function convertPatternsToRe(patterns: Pattern[], options: MicromatchOptions): PatternRe[]; +export declare function matchAny(entry: string, patternsRe: PatternRe[]): boolean; +/** + * This package only works with forward slashes as a path separator. + * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes. + */ +export declare function removeDuplicateSlashes(pattern: string): string; +export {}; diff --git a/node_modules/fast-glob/out/utils/pattern.js b/node_modules/fast-glob/out/utils/pattern.js new file mode 100644 index 0000000..0f5e9ca --- /dev/null +++ b/node_modules/fast-glob/out/utils/pattern.js @@ -0,0 +1,188 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; +const path = require("path"); +const globParent = require("glob-parent"); +const micromatch = require("micromatch"); +const GLOBSTAR = '**'; +const ESCAPE_SYMBOL = '\\'; +const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; +const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; +const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; +const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; +const BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; +/** + * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string. + * The latter is due to the presence of the device path at the beginning of the UNC path. + */ +const DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; +function isStaticPattern(pattern, options = {}) { + return !isDynamicPattern(pattern, options); +} +exports.isStaticPattern = isStaticPattern; +function isDynamicPattern(pattern, options = {}) { + /** + * A special case with an empty string is necessary for matching patterns that start with a forward slash. + * An empty string cannot be a dynamic pattern. + * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'. + */ + if (pattern === '') { + return false; + } + /** + * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check + * filepath directly (without read directory). + */ + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { + return true; + } + return false; +} +exports.isDynamicPattern = isDynamicPattern; +function hasBraceExpansion(pattern) { + const openingBraceIndex = pattern.indexOf('{'); + if (openingBraceIndex === -1) { + return false; + } + const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1); + if (closingBraceIndex === -1) { + return false; + } + const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); + return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); +} +function convertToPositivePattern(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; +} +exports.convertToPositivePattern = convertToPositivePattern; +function convertToNegativePattern(pattern) { + return '!' + pattern; +} +exports.convertToNegativePattern = convertToNegativePattern; +function isNegativePattern(pattern) { + return pattern.startsWith('!') && pattern[1] !== '('; +} +exports.isNegativePattern = isNegativePattern; +function isPositivePattern(pattern) { + return !isNegativePattern(pattern); +} +exports.isPositivePattern = isPositivePattern; +function getNegativePatterns(patterns) { + return patterns.filter(isNegativePattern); +} +exports.getNegativePatterns = getNegativePatterns; +function getPositivePatterns(patterns) { + return patterns.filter(isPositivePattern); +} +exports.getPositivePatterns = getPositivePatterns; +/** + * Returns patterns that can be applied inside the current directory. + * + * @example + * // ['./*', '*', 'a/*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +function getPatternsInsideCurrentDirectory(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); +} +exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; +/** + * Returns patterns to be expanded relative to (outside) the current directory. + * + * @example + * // ['../*', './../*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +function getPatternsOutsideCurrentDirectory(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); +} +exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; +function isPatternRelatedToParentDirectory(pattern) { + return pattern.startsWith('..') || pattern.startsWith('./..'); +} +exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; +function getBaseDirectory(pattern) { + return globParent(pattern, { flipBackslashes: false }); +} +exports.getBaseDirectory = getBaseDirectory; +function hasGlobStar(pattern) { + return pattern.includes(GLOBSTAR); +} +exports.hasGlobStar = hasGlobStar; +function endsWithSlashGlobStar(pattern) { + return pattern.endsWith('/' + GLOBSTAR); +} +exports.endsWithSlashGlobStar = endsWithSlashGlobStar; +function isAffectDepthOfReadingPattern(pattern) { + const basename = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); +} +exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; +function expandPatternsWithBraceExpansion(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); +} +exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; +function expandBraceExpansion(pattern) { + const patterns = micromatch.braces(pattern, { expand: true, nodupes: true }); + /** + * Sort the patterns by length so that the same depth patterns are processed side by side. + * `a/{b,}/{c,}/*` – `['a///*', 'a/b//*', 'a//c/*', 'a/b/c/*']` + */ + patterns.sort((a, b) => a.length - b.length); + /** + * Micromatch can return an empty string in the case of patterns like `{a,}`. + */ + return patterns.filter((pattern) => pattern !== ''); +} +exports.expandBraceExpansion = expandBraceExpansion; +function getPatternParts(pattern, options) { + let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); + /** + * The scan method returns an empty array in some cases. + * See micromatch/picomatch#58 for more details. + */ + if (parts.length === 0) { + parts = [pattern]; + } + /** + * The scan method does not return an empty part for the pattern with a forward slash. + * This is another part of micromatch/picomatch#58. + */ + if (parts[0].startsWith('/')) { + parts[0] = parts[0].slice(1); + parts.unshift(''); + } + return parts; +} +exports.getPatternParts = getPatternParts; +function makeRe(pattern, options) { + return micromatch.makeRe(pattern, options); +} +exports.makeRe = makeRe; +function convertPatternsToRe(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); +} +exports.convertPatternsToRe = convertPatternsToRe; +function matchAny(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); +} +exports.matchAny = matchAny; +/** + * This package only works with forward slashes as a path separator. + * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes. + */ +function removeDuplicateSlashes(pattern) { + return pattern.replace(DOUBLE_SLASH_RE, '/'); +} +exports.removeDuplicateSlashes = removeDuplicateSlashes; diff --git a/node_modules/fast-glob/out/utils/stream.d.ts b/node_modules/fast-glob/out/utils/stream.d.ts new file mode 100644 index 0000000..4daf913 --- /dev/null +++ b/node_modules/fast-glob/out/utils/stream.d.ts @@ -0,0 +1,4 @@ +/// +/// +import { Readable } from 'stream'; +export declare function merge(streams: Readable[]): NodeJS.ReadableStream; diff --git a/node_modules/fast-glob/out/utils/stream.js b/node_modules/fast-glob/out/utils/stream.js new file mode 100644 index 0000000..b32028c --- /dev/null +++ b/node_modules/fast-glob/out/utils/stream.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.merge = void 0; +const merge2 = require("merge2"); +function merge(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once('error', (error) => mergedStream.emit('error', error)); + }); + mergedStream.once('close', () => propagateCloseEventToSources(streams)); + mergedStream.once('end', () => propagateCloseEventToSources(streams)); + return mergedStream; +} +exports.merge = merge; +function propagateCloseEventToSources(streams) { + streams.forEach((stream) => stream.emit('close')); +} diff --git a/node_modules/fast-glob/out/utils/string.d.ts b/node_modules/fast-glob/out/utils/string.d.ts new file mode 100644 index 0000000..c884735 --- /dev/null +++ b/node_modules/fast-glob/out/utils/string.d.ts @@ -0,0 +1,2 @@ +export declare function isString(input: unknown): input is string; +export declare function isEmpty(input: string): boolean; diff --git a/node_modules/fast-glob/out/utils/string.js b/node_modules/fast-glob/out/utils/string.js new file mode 100644 index 0000000..76e7ea5 --- /dev/null +++ b/node_modules/fast-glob/out/utils/string.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEmpty = exports.isString = void 0; +function isString(input) { + return typeof input === 'string'; +} +exports.isString = isString; +function isEmpty(input) { + return input === ''; +} +exports.isEmpty = isEmpty; diff --git a/node_modules/fast-glob/package.json b/node_modules/fast-glob/package.json new file mode 100644 index 0000000..bbcc0ea --- /dev/null +++ b/node_modules/fast-glob/package.json @@ -0,0 +1,81 @@ +{ + "name": "fast-glob", + "version": "3.3.1", + "description": "It's a very fast and efficient glob library for Node.js", + "license": "MIT", + "repository": "mrmlnc/fast-glob", + "author": { + "name": "Denis Malinochkin", + "url": "https://mrmlnc.com" + }, + "engines": { + "node": ">=8.6.0" + }, + "main": "out/index.js", + "typings": "out/index.d.ts", + "files": [ + "out", + "!out/{benchmark,tests}", + "!out/**/*.map", + "!out/**/*.spec.*" + ], + "keywords": [ + "glob", + "patterns", + "fast", + "implementation" + ], + "devDependencies": { + "@nodelib/fs.macchiato": "^1.0.1", + "@types/glob-parent": "^5.1.0", + "@types/merge2": "^1.1.4", + "@types/micromatch": "^4.0.0", + "@types/mocha": "^5.2.7", + "@types/node": "^14.18.53", + "@types/picomatch": "^2.3.0", + "@types/sinon": "^7.5.0", + "bencho": "^0.1.1", + "eslint": "^6.5.1", + "eslint-config-mrmlnc": "^1.1.0", + "execa": "^7.1.1", + "fast-glob": "^3.0.4", + "fdir": "^6.0.1", + "glob": "^10.0.0", + "hereby": "^1.8.1", + "mocha": "^6.2.1", + "rimraf": "^5.0.0", + "sinon": "^7.5.0", + "snap-shot-it": "^7.9.10", + "typescript": "^4.9.5" + }, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "scripts": { + "clean": "rimraf out", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "test:e2e": "mocha \"out/**/*.e2e.js\" -s 0", + "test:e2e:sync": "mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(sync\\)\"", + "test:e2e:async": "mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(async\\)\"", + "test:e2e:stream": "mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(stream\\)\"", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile -- --sourceMap --watch", + "bench:async": "npm run bench:product:async && npm run bench:regression:async", + "bench:stream": "npm run bench:product:stream && npm run bench:regression:stream", + "bench:sync": "npm run bench:product:sync && npm run bench:regression:sync", + "bench:product": "npm run bench:product:async && npm run bench:product:sync && npm run bench:product:stream", + "bench:product:async": "hereby bench:product:async", + "bench:product:sync": "hereby bench:product:sync", + "bench:product:stream": "hereby bench:product:stream", + "bench:regression": "npm run bench:regression:async && npm run bench:regression:sync && npm run bench:regression:stream", + "bench:regression:async": "hereby bench:regression:async", + "bench:regression:sync": "hereby bench:regression:sync", + "bench:regression:stream": "hereby bench:regression:stream" + } +} diff --git a/node_modules/fastq/.github/dependabot.yml b/node_modules/fastq/.github/dependabot.yml new file mode 100644 index 0000000..7e7cbe1 --- /dev/null +++ b/node_modules/fastq/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + ignore: + - dependency-name: standard + versions: + - 16.0.3 diff --git a/node_modules/fastq/.github/workflows/ci.yml b/node_modules/fastq/.github/workflows/ci.yml new file mode 100644 index 0000000..50e66b5 --- /dev/null +++ b/node_modules/fastq/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: ci + +on: [push, pull_request] + +jobs: + legacy: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: ['0.10', '0.12', 4.x, 6.x, 8.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install + run: | + npm install --production && npm install tape + + - name: Run tests + run: | + npm run legacy + + test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [10.x, 12.x, 13.x, 14.x, 15.x, 16.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install + run: | + npm install + + - name: Run tests + run: | + npm run test diff --git a/node_modules/fastq/LICENSE b/node_modules/fastq/LICENSE new file mode 100644 index 0000000..27c7bb4 --- /dev/null +++ b/node_modules/fastq/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015-2020, Matteo Collina + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/fastq/README.md b/node_modules/fastq/README.md new file mode 100644 index 0000000..8a25fef --- /dev/null +++ b/node_modules/fastq/README.md @@ -0,0 +1,309 @@ +# fastq + +![ci][ci-url] +[![npm version][npm-badge]][npm-url] +[![Dependency Status][david-badge]][david-url] + +Fast, in memory work queue. + +Benchmarks (1 million tasks): + +* setImmediate: 812ms +* fastq: 854ms +* async.queue: 1298ms +* neoAsync.queue: 1249ms + +Obtained on node 12.16.1, on a dedicated server. + +If you need zero-overhead series function call, check out +[fastseries](http://npm.im/fastseries). For zero-overhead parallel +function call, check out [fastparallel](http://npm.im/fastparallel). + +[![js-standard-style](https://raw.githubusercontent.com/feross/standard/master/badge.png)](https://github.com/feross/standard) + + * Installation + * Usage + * API + * Licence & copyright + +## Install + +`npm i fastq --save` + +## Usage (callback API) + +```js +'use strict' + +const queue = require('fastq')(worker, 1) + +queue.push(42, function (err, result) { + if (err) { throw err } + console.log('the result is', result) +}) + +function worker (arg, cb) { + cb(null, arg * 2) +} +``` + +## Usage (promise API) + +```js +const queue = require('fastq').promise(worker, 1) + +async function worker (arg) { + return arg * 2 +} + +async function run () { + const result = await queue.push(42) + console.log('the result is', result) +} + +run() +``` + +### Setting "this" + +```js +'use strict' + +const that = { hello: 'world' } +const queue = require('fastq')(that, worker, 1) + +queue.push(42, function (err, result) { + if (err) { throw err } + console.log(this) + console.log('the result is', result) +}) + +function worker (arg, cb) { + console.log(this) + cb(null, arg * 2) +} +``` + +### Using with TypeScript (callback API) + +```ts +'use strict' + +import * as fastq from "fastq"; +import type { queue, done } from "fastq"; + +type Task = { + id: number +} + +const q: queue = fastq(worker, 1) + +q.push({ id: 42}) + +function worker (arg: Task, cb: done) { + console.log(arg.id) + cb(null) +} +``` + +### Using with TypeScript (promise API) + +```ts +'use strict' + +import * as fastq from "fastq"; +import type { queueAsPromised } from "fastq"; + +type Task = { + id: number +} + +const q: queueAsPromised = fastq.promise(asyncWorker, 1) + +q.push({ id: 42}).catch((err) => console.error(err)) + +async function asyncWorker (arg: Task): Promise { + // No need for a try-catch block, fastq handles errors automatically + console.log(arg.id) +} +``` + +## API + +* fastqueue() +* queue#push() +* queue#unshift() +* queue#pause() +* queue#resume() +* queue#idle() +* queue#length() +* queue#getQueue() +* queue#kill() +* queue#killAndDrain() +* queue#error() +* queue#concurrency +* queue#drain +* queue#empty +* queue#saturated +* fastqueue.promise() + +------------------------------------------------------- + +### fastqueue([that], worker, concurrency) + +Creates a new queue. + +Arguments: + +* `that`, optional context of the `worker` function. +* `worker`, worker function, it would be called with `that` as `this`, + if that is specified. +* `concurrency`, number of concurrent tasks that could be executed in + parallel. + +------------------------------------------------------- + +### queue.push(task, done) + +Add a task at the end of the queue. `done(err, result)` will be called +when the task was processed. + +------------------------------------------------------- + +### queue.unshift(task, done) + +Add a task at the beginning of the queue. `done(err, result)` will be called +when the task was processed. + +------------------------------------------------------- + +### queue.pause() + +Pause the processing of tasks. Currently worked tasks are not +stopped. + +------------------------------------------------------- + +### queue.resume() + +Resume the processing of tasks. + +------------------------------------------------------- + +### queue.idle() + +Returns `false` if there are tasks being processed or waiting to be processed. +`true` otherwise. + +------------------------------------------------------- + +### queue.length() + +Returns the number of tasks waiting to be processed (in the queue). + +------------------------------------------------------- + +### queue.getQueue() + +Returns all the tasks be processed (in the queue). Returns empty array when there are no tasks + +------------------------------------------------------- + +### queue.kill() + +Removes all tasks waiting to be processed, and reset `drain` to an empty +function. + +------------------------------------------------------- + +### queue.killAndDrain() + +Same than `kill` but the `drain` function will be called before reset to empty. + +------------------------------------------------------- + +### queue.error(handler) + +Set a global error handler. `handler(err, task)` will be called +each time a task is completed, `err` will be not null if the task has thrown an error. + +------------------------------------------------------- + +### queue.concurrency + +Property that returns the number of concurrent tasks that could be executed in +parallel. It can be altered at runtime. + +------------------------------------------------------- + +### queue.drain + +Function that will be called when the last +item from the queue has been processed by a worker. +It can be altered at runtime. + +------------------------------------------------------- + +### queue.empty + +Function that will be called when the last +item from the queue has been assigned to a worker. +It can be altered at runtime. + +------------------------------------------------------- + +### queue.saturated + +Function that will be called when the queue hits the concurrency +limit. +It can be altered at runtime. + +------------------------------------------------------- + +### fastqueue.promise([that], worker(arg), concurrency) + +Creates a new queue with `Promise` apis. It also offers all the methods +and properties of the object returned by [`fastqueue`](#fastqueue) with the modified +[`push`](#pushPromise) and [`unshift`](#unshiftPromise) methods. + +Node v10+ is required to use the promisified version. + +Arguments: +* `that`, optional context of the `worker` function. +* `worker`, worker function, it would be called with `that` as `this`, + if that is specified. It MUST return a `Promise`. +* `concurrency`, number of concurrent tasks that could be executed in + parallel. + + +#### queue.push(task) => Promise + +Add a task at the end of the queue. The returned `Promise` will be fulfilled (rejected) +when the task is completed successfully (unsuccessfully). + +This promise could be ignored as it will not lead to a `'unhandledRejection'`. + + +#### queue.unshift(task) => Promise + +Add a task at the beginning of the queue. The returned `Promise` will be fulfilled (rejected) +when the task is completed successfully (unsuccessfully). + +This promise could be ignored as it will not lead to a `'unhandledRejection'`. + + +#### queue.drained() => Promise + +Wait for the queue to be drained. The returned `Promise` will be resolved when all tasks in the queue have been processed by a worker. + +This promise could be ignored as it will not lead to a `'unhandledRejection'`. + +## License + +ISC + +[ci-url]: https://github.com/mcollina/fastq/workflows/ci/badge.svg +[npm-badge]: https://badge.fury.io/js/fastq.svg +[npm-url]: https://badge.fury.io/js/fastq +[david-badge]: https://david-dm.org/mcollina/fastq.svg +[david-url]: https://david-dm.org/mcollina/fastq diff --git a/node_modules/fastq/bench.js b/node_modules/fastq/bench.js new file mode 100644 index 0000000..4eaa829 --- /dev/null +++ b/node_modules/fastq/bench.js @@ -0,0 +1,66 @@ +'use strict' + +const max = 1000000 +const fastqueue = require('./')(worker, 1) +const { promisify } = require('util') +const immediate = promisify(setImmediate) +const qPromise = require('./').promise(immediate, 1) +const async = require('async') +const neo = require('neo-async') +const asyncqueue = async.queue(worker, 1) +const neoqueue = neo.queue(worker, 1) + +function bench (func, done) { + const key = max + '*' + func.name + let count = -1 + + console.time(key) + end() + + function end () { + if (++count < max) { + func(end) + } else { + console.timeEnd(key) + if (done) { + done() + } + } + } +} + +function benchFastQ (done) { + fastqueue.push(42, done) +} + +function benchAsyncQueue (done) { + asyncqueue.push(42, done) +} + +function benchNeoQueue (done) { + neoqueue.push(42, done) +} + +function worker (arg, cb) { + setImmediate(cb) +} + +function benchSetImmediate (cb) { + worker(42, cb) +} + +function benchFastQPromise (done) { + qPromise.push(42).then(function () { done() }, done) +} + +function runBench (done) { + async.eachSeries([ + benchSetImmediate, + benchFastQ, + benchNeoQueue, + benchAsyncQueue, + benchFastQPromise + ], bench, done) +} + +runBench(runBench) diff --git a/node_modules/fastq/example.js b/node_modules/fastq/example.js new file mode 100644 index 0000000..665fdc8 --- /dev/null +++ b/node_modules/fastq/example.js @@ -0,0 +1,14 @@ +'use strict' + +/* eslint-disable no-var */ + +var queue = require('./')(worker, 1) + +queue.push(42, function (err, result) { + if (err) { throw err } + console.log('the result is', result) +}) + +function worker (arg, cb) { + cb(null, 42 * 2) +} diff --git a/node_modules/fastq/example.mjs b/node_modules/fastq/example.mjs new file mode 100644 index 0000000..81be789 --- /dev/null +++ b/node_modules/fastq/example.mjs @@ -0,0 +1,11 @@ +import { promise as queueAsPromised } from './queue.js' + +/* eslint-disable */ + +const queue = queueAsPromised(worker, 1) + +console.log('the result is', await queue.push(42)) + +async function worker (arg) { + return 42 * 2 +} diff --git a/node_modules/fastq/index.d.ts b/node_modules/fastq/index.d.ts new file mode 100644 index 0000000..65ebe65 --- /dev/null +++ b/node_modules/fastq/index.d.ts @@ -0,0 +1,37 @@ +declare function fastq(context: C, worker: fastq.worker, concurrency: number): fastq.queue +declare function fastq(worker: fastq.worker, concurrency: number): fastq.queue + +declare namespace fastq { + type worker = (this: C, task: T, cb: fastq.done) => void + type asyncWorker = (this: C, task: T) => Promise + type done = (err: Error | null, result?: R) => void + type errorHandler = (err: Error, task: T) => void + + interface queue { + push(task: T, done?: done): void + unshift(task: T, done?: done): void + pause(): any + resume(): any + idle(): boolean + length(): number + getQueue(): T[] + kill(): any + killAndDrain(): any + error(handler: errorHandler): void + concurrency: number + drain(): any + empty: () => void + saturated: () => void + } + + interface queueAsPromised extends queue { + push(task: T): Promise + unshift(task: T): Promise + drained(): Promise + } + + function promise(context: C, worker: fastq.asyncWorker, concurrency: number): fastq.queueAsPromised + function promise(worker: fastq.asyncWorker, concurrency: number): fastq.queueAsPromised +} + +export = fastq diff --git a/node_modules/fastq/package.json b/node_modules/fastq/package.json new file mode 100644 index 0000000..bf572e3 --- /dev/null +++ b/node_modules/fastq/package.json @@ -0,0 +1,52 @@ +{ + "name": "fastq", + "version": "1.15.0", + "description": "Fast, in memory work queue", + "main": "queue.js", + "scripts": { + "lint": "standard --verbose | snazzy", + "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test/test.js test/promise.js", + "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js test/promise.js", + "test:report": "npm run lint && npm run unit:report", + "test": "npm run lint && npm run unit && npm run typescript", + "typescript": "tsc --project ./test/tsconfig.json", + "legacy": "tape test/test.js" + }, + "pre-commit": [ + "test" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/mcollina/fastq.git" + }, + "keywords": [ + "fast", + "queue", + "async", + "worker" + ], + "author": "Matteo Collina ", + "license": "ISC", + "bugs": { + "url": "https://github.com/mcollina/fastq/issues" + }, + "homepage": "https://github.com/mcollina/fastq#readme", + "devDependencies": { + "async": "^3.1.0", + "neo-async": "^2.6.1", + "nyc": "^15.0.0", + "pre-commit": "^1.2.2", + "snazzy": "^9.0.0", + "standard": "^16.0.0", + "tape": "^5.0.0", + "typescript": "^4.0.2" + }, + "dependencies": { + "reusify": "^1.0.4" + }, + "standard": { + "ignore": [ + "example.mjs" + ] + } +} diff --git a/node_modules/fastq/queue.js b/node_modules/fastq/queue.js new file mode 100644 index 0000000..03fe112 --- /dev/null +++ b/node_modules/fastq/queue.js @@ -0,0 +1,289 @@ +'use strict' + +/* eslint-disable no-var */ + +var reusify = require('reusify') + +function fastqueue (context, worker, concurrency) { + if (typeof context === 'function') { + concurrency = worker + worker = context + context = null + } + + if (concurrency < 1) { + throw new Error('fastqueue concurrency must be greater than 1') + } + + var cache = reusify(Task) + var queueHead = null + var queueTail = null + var _running = 0 + var errorHandler = null + + var self = { + push: push, + drain: noop, + saturated: noop, + pause: pause, + paused: false, + concurrency: concurrency, + running: running, + resume: resume, + idle: idle, + length: length, + getQueue: getQueue, + unshift: unshift, + empty: noop, + kill: kill, + killAndDrain: killAndDrain, + error: error + } + + return self + + function running () { + return _running + } + + function pause () { + self.paused = true + } + + function length () { + var current = queueHead + var counter = 0 + + while (current) { + current = current.next + counter++ + } + + return counter + } + + function getQueue () { + var current = queueHead + var tasks = [] + + while (current) { + tasks.push(current.value) + current = current.next + } + + return tasks + } + + function resume () { + if (!self.paused) return + self.paused = false + for (var i = 0; i < self.concurrency; i++) { + _running++ + release() + } + } + + function idle () { + return _running === 0 && self.length() === 0 + } + + function push (value, done) { + var current = cache.get() + + current.context = context + current.release = release + current.value = value + current.callback = done || noop + current.errorHandler = errorHandler + + if (_running === self.concurrency || self.paused) { + if (queueTail) { + queueTail.next = current + queueTail = current + } else { + queueHead = current + queueTail = current + self.saturated() + } + } else { + _running++ + worker.call(context, current.value, current.worked) + } + } + + function unshift (value, done) { + var current = cache.get() + + current.context = context + current.release = release + current.value = value + current.callback = done || noop + + if (_running === self.concurrency || self.paused) { + if (queueHead) { + current.next = queueHead + queueHead = current + } else { + queueHead = current + queueTail = current + self.saturated() + } + } else { + _running++ + worker.call(context, current.value, current.worked) + } + } + + function release (holder) { + if (holder) { + cache.release(holder) + } + var next = queueHead + if (next) { + if (!self.paused) { + if (queueTail === queueHead) { + queueTail = null + } + queueHead = next.next + next.next = null + worker.call(context, next.value, next.worked) + if (queueTail === null) { + self.empty() + } + } else { + _running-- + } + } else if (--_running === 0) { + self.drain() + } + } + + function kill () { + queueHead = null + queueTail = null + self.drain = noop + } + + function killAndDrain () { + queueHead = null + queueTail = null + self.drain() + self.drain = noop + } + + function error (handler) { + errorHandler = handler + } +} + +function noop () {} + +function Task () { + this.value = null + this.callback = noop + this.next = null + this.release = noop + this.context = null + this.errorHandler = null + + var self = this + + this.worked = function worked (err, result) { + var callback = self.callback + var errorHandler = self.errorHandler + var val = self.value + self.value = null + self.callback = noop + if (self.errorHandler) { + errorHandler(err, val) + } + callback.call(self.context, err, result) + self.release(self) + } +} + +function queueAsPromised (context, worker, concurrency) { + if (typeof context === 'function') { + concurrency = worker + worker = context + context = null + } + + function asyncWrapper (arg, cb) { + worker.call(this, arg) + .then(function (res) { + cb(null, res) + }, cb) + } + + var queue = fastqueue(context, asyncWrapper, concurrency) + + var pushCb = queue.push + var unshiftCb = queue.unshift + + queue.push = push + queue.unshift = unshift + queue.drained = drained + + return queue + + function push (value) { + var p = new Promise(function (resolve, reject) { + pushCb(value, function (err, result) { + if (err) { + reject(err) + return + } + resolve(result) + }) + }) + + // Let's fork the promise chain to + // make the error bubble up to the user but + // not lead to a unhandledRejection + p.catch(noop) + + return p + } + + function unshift (value) { + var p = new Promise(function (resolve, reject) { + unshiftCb(value, function (err, result) { + if (err) { + reject(err) + return + } + resolve(result) + }) + }) + + // Let's fork the promise chain to + // make the error bubble up to the user but + // not lead to a unhandledRejection + p.catch(noop) + + return p + } + + function drained () { + if (queue.idle()) { + return new Promise(function (resolve) { + resolve() + }) + } + + var previousDrain = queue.drain + + var p = new Promise(function (resolve) { + queue.drain = function () { + previousDrain() + resolve() + } + }) + + return p + } +} + +module.exports = fastqueue +module.exports.promise = queueAsPromised diff --git a/node_modules/fastq/test/example.ts b/node_modules/fastq/test/example.ts new file mode 100644 index 0000000..c454e9d --- /dev/null +++ b/node_modules/fastq/test/example.ts @@ -0,0 +1,81 @@ +import * as fastq from '../' +import { promise as queueAsPromised } from '../' + +// Basic example + +const queue = fastq(worker, 1) + +queue.push('world', (err, result) => { + if (err) throw err + console.log('the result is', result) +}) + +queue.push('push without cb') + +queue.concurrency + +queue.drain() + +queue.empty = () => undefined + +console.log('the queue tasks are', queue.getQueue()) + +queue.idle() + +queue.kill() + +queue.killAndDrain() + +queue.length + +queue.pause() + +queue.resume() + +queue.saturated = () => undefined + +queue.unshift('world', (err, result) => { + if (err) throw err + console.log('the result is', result) +}) + +queue.unshift('unshift without cb') + +function worker(task: any, cb: fastq.done) { + cb(null, 'hello ' + task) +} + +// Generics example + +interface GenericsContext { + base: number; +} + +const genericsQueue = fastq({ base: 6 }, genericsWorker, 1) + +genericsQueue.push(7, (err, done) => { + if (err) throw err + console.log('the result is', done) +}) + +genericsQueue.unshift(7, (err, done) => { + if (err) throw err + console.log('the result is', done) +}) + +function genericsWorker(this: GenericsContext, task: number, cb: fastq.done) { + cb(null, 'the meaning of life is ' + (this.base * task)) +} + +const queue2 = queueAsPromised(asyncWorker, 1) + +async function asyncWorker(task: any) { + return 'hello ' + task +} + +async function run () { + await queue.push(42) + await queue.unshift(42) +} + +run() diff --git a/node_modules/fastq/test/promise.js b/node_modules/fastq/test/promise.js new file mode 100644 index 0000000..fe014ff --- /dev/null +++ b/node_modules/fastq/test/promise.js @@ -0,0 +1,248 @@ +'use strict' + +const test = require('tape') +const buildQueue = require('../').promise +const { promisify } = require('util') +const sleep = promisify(setTimeout) +const immediate = promisify(setImmediate) + +test('concurrency', function (t) { + t.plan(2) + t.throws(buildQueue.bind(null, worker, 0)) + t.doesNotThrow(buildQueue.bind(null, worker, 1)) + + async function worker (arg) { + return true + } +}) + +test('worker execution', async function (t) { + const queue = buildQueue(worker, 1) + + const result = await queue.push(42) + + t.equal(result, true, 'result matches') + + async function worker (arg) { + t.equal(arg, 42) + return true + } +}) + +test('limit', async function (t) { + const queue = buildQueue(worker, 1) + + const [res1, res2] = await Promise.all([queue.push(10), queue.push(0)]) + t.equal(res1, 10, 'the result matches') + t.equal(res2, 0, 'the result matches') + + async function worker (arg) { + await sleep(arg) + return arg + } +}) + +test('multiple executions', async function (t) { + const queue = buildQueue(worker, 1) + const toExec = [1, 2, 3, 4, 5] + const expected = ['a', 'b', 'c', 'd', 'e'] + let count = 0 + + await Promise.all(toExec.map(async function (task, i) { + const result = await queue.push(task) + t.equal(result, expected[i], 'the result matches') + })) + + async function worker (arg) { + t.equal(arg, toExec[count], 'arg matches') + return expected[count++] + } +}) + +test('drained', async function (t) { + const queue = buildQueue(worker, 2) + + const toExec = new Array(10).fill(10) + let count = 0 + + async function worker (arg) { + await sleep(arg) + count++ + } + + toExec.forEach(function (i) { + queue.push(i) + }) + + await queue.drained() + + t.equal(count, toExec.length) + + toExec.forEach(function (i) { + queue.push(i) + }) + + await queue.drained() + + t.equal(count, toExec.length * 2) +}) + +test('drained with exception should not throw', async function (t) { + const queue = buildQueue(worker, 2) + + const toExec = new Array(10).fill(10) + + async function worker () { + throw new Error('foo') + } + + toExec.forEach(function (i) { + queue.push(i) + }) + + await queue.drained() +}) + +test('drained with drain function', async function (t) { + let drainCalled = false + const queue = buildQueue(worker, 2) + + queue.drain = function () { + drainCalled = true + } + + const toExec = new Array(10).fill(10) + let count = 0 + + async function worker (arg) { + await sleep(arg) + count++ + } + + toExec.forEach(function () { + queue.push() + }) + + await queue.drained() + + t.equal(count, toExec.length) + t.equal(drainCalled, true) +}) + +test('drained while idle should resolve', async function (t) { + const queue = buildQueue(worker, 2) + + async function worker (arg) { + await sleep(arg) + } + + await queue.drained() +}) + +test('drained while idle should not call the drain function', async function (t) { + let drainCalled = false + const queue = buildQueue(worker, 2) + + queue.drain = function () { + drainCalled = true + } + + async function worker (arg) { + await sleep(arg) + } + + await queue.drained() + + t.equal(drainCalled, false) +}) + +test('set this', async function (t) { + t.plan(1) + const that = {} + const queue = buildQueue(that, worker, 1) + + await queue.push(42) + + async function worker (arg) { + t.equal(this, that, 'this matches') + } +}) + +test('unshift', async function (t) { + const queue = buildQueue(worker, 1) + const expected = [1, 2, 3, 4] + + await Promise.all([ + queue.push(1), + queue.push(4), + queue.unshift(3), + queue.unshift(2) + ]) + + t.is(expected.length, 0) + + async function worker (arg) { + t.equal(expected.shift(), arg, 'tasks come in order') + } +}) + +test('push with worker throwing error', async function (t) { + t.plan(5) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + q.error(function (err, task) { + t.ok(err instanceof Error, 'global error handler should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + t.equal(task, 42, 'The task executed should be passed') + }) + try { + await q.push(42) + } catch (err) { + t.ok(err instanceof Error, 'push callback should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + } +}) + +test('unshift with worker throwing error', async function (t) { + t.plan(2) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + try { + await q.unshift(42) + } catch (err) { + t.ok(err instanceof Error, 'push callback should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + } +}) + +test('no unhandledRejection (push)', async function (t) { + function handleRejection () { + t.fail('unhandledRejection') + } + process.once('unhandledRejection', handleRejection) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + + q.push(42) + + await immediate() + process.removeListener('unhandledRejection', handleRejection) +}) + +test('no unhandledRejection (unshift)', async function (t) { + function handleRejection () { + t.fail('unhandledRejection') + } + process.once('unhandledRejection', handleRejection) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + + q.unshift(42) + + await immediate() + process.removeListener('unhandledRejection', handleRejection) +}) diff --git a/node_modules/fastq/test/test.js b/node_modules/fastq/test/test.js new file mode 100644 index 0000000..1cc78a5 --- /dev/null +++ b/node_modules/fastq/test/test.js @@ -0,0 +1,566 @@ +'use strict' + +/* eslint-disable no-var */ + +var test = require('tape') +var buildQueue = require('../') + +test('concurrency', function (t) { + t.plan(2) + t.throws(buildQueue.bind(null, worker, 0)) + t.doesNotThrow(buildQueue.bind(null, worker, 1)) + + function worker (arg, cb) { + cb(null, true) + } +}) + +test('worker execution', function (t) { + t.plan(3) + + var queue = buildQueue(worker, 1) + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + function worker (arg, cb) { + t.equal(arg, 42) + cb(null, true) + } +}) + +test('limit', function (t) { + t.plan(4) + + var expected = [10, 0] + var queue = buildQueue(worker, 1) + + queue.push(10, result) + queue.push(0, result) + + function result (err, arg) { + t.error(err, 'no error') + t.equal(arg, expected.shift(), 'the result matches') + } + + function worker (arg, cb) { + setTimeout(cb, arg, null, arg) + } +}) + +test('multiple executions', function (t) { + t.plan(15) + + var queue = buildQueue(worker, 1) + var toExec = [1, 2, 3, 4, 5] + var count = 0 + + toExec.forEach(function (task) { + queue.push(task, done) + }) + + function done (err, result) { + t.error(err, 'no error') + t.equal(result, toExec[count - 1], 'the result matches') + } + + function worker (arg, cb) { + t.equal(arg, toExec[count], 'arg matches') + count++ + setImmediate(cb, null, arg) + } +}) + +test('multiple executions, one after another', function (t) { + t.plan(15) + + var queue = buildQueue(worker, 1) + var toExec = [1, 2, 3, 4, 5] + var count = 0 + + queue.push(toExec[0], done) + + function done (err, result) { + t.error(err, 'no error') + t.equal(result, toExec[count - 1], 'the result matches') + if (count < toExec.length) { + queue.push(toExec[count], done) + } + } + + function worker (arg, cb) { + t.equal(arg, toExec[count], 'arg matches') + count++ + setImmediate(cb, null, arg) + } +}) + +test('set this', function (t) { + t.plan(3) + + var that = {} + var queue = buildQueue(that, worker, 1) + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(this, that, 'this matches') + }) + + function worker (arg, cb) { + t.equal(this, that, 'this matches') + cb(null, true) + } +}) + +test('drain', function (t) { + t.plan(4) + + var queue = buildQueue(worker, 1) + var worked = false + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + queue.drain = function () { + t.equal(true, worked, 'drained') + } + + function worker (arg, cb) { + t.equal(arg, 42) + worked = true + setImmediate(cb, null, true) + } +}) + +test('pause && resume', function (t) { + t.plan(7) + + var queue = buildQueue(worker, 1) + var worked = false + + t.notOk(queue.paused, 'it should not be paused') + + queue.pause() + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + t.notOk(worked, 'it should be paused') + t.ok(queue.paused, 'it should be paused') + + queue.resume() + queue.resume() // second resume is a no-op + + t.notOk(queue.paused, 'it should not be paused') + + function worker (arg, cb) { + t.equal(arg, 42) + worked = true + cb(null, true) + } +}) + +test('pause in flight && resume', function (t) { + t.plan(9) + + var queue = buildQueue(worker, 1) + var expected = [42, 24] + + t.notOk(queue.paused, 'it should not be paused') + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + t.ok(queue.paused, 'it should be paused') + process.nextTick(function () { queue.resume() }) + }) + + queue.push(24, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + t.notOk(queue.paused, 'it should not be paused') + }) + + queue.pause() + + function worker (arg, cb) { + t.equal(arg, expected.shift()) + process.nextTick(function () { cb(null, true) }) + } +}) + +test('altering concurrency', function (t) { + t.plan(7) + + var queue = buildQueue(worker, 1) + var count = 0 + + queue.pause() + + queue.push(24, workDone) + queue.push(24, workDone) + + queue.concurrency = 2 + + queue.resume() + + t.equal(queue.running(), 2, '2 jobs running') + + function workDone (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + } + + function worker (arg, cb) { + t.equal(0, count, 'works in parallel') + setImmediate(function () { + count++ + cb(null, true) + }) + } +}) + +test('idle()', function (t) { + t.plan(12) + + var queue = buildQueue(worker, 1) + + t.ok(queue.idle(), 'queue is idle') + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + t.notOk(queue.idle(), 'queue is not idle') + }) + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + // it will go idle after executing this function + setImmediate(function () { + t.ok(queue.idle(), 'queue is now idle') + }) + }) + + t.notOk(queue.idle(), 'queue is not idle') + + function worker (arg, cb) { + t.notOk(queue.idle(), 'queue is not idle') + t.equal(arg, 42) + setImmediate(cb, null, true) + } +}) + +test('saturated', function (t) { + t.plan(9) + + var queue = buildQueue(worker, 1) + var preworked = 0 + var worked = 0 + + queue.saturated = function () { + t.pass('saturated') + t.equal(preworked, 1, 'started 1 task') + t.equal(worked, 0, 'worked zero task') + } + + queue.push(42, done) + queue.push(42, done) + + function done (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + } + + function worker (arg, cb) { + t.equal(arg, 42) + preworked++ + setImmediate(function () { + worked++ + cb(null, true) + }) + } +}) + +test('length', function (t) { + t.plan(7) + + var queue = buildQueue(worker, 1) + + t.equal(queue.length(), 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.length(), 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.length(), 1, 'one task waiting') + queue.push(42, done) + t.equal(queue.length(), 2, 'two tasks waiting') + + function done (err, result) { + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('getQueue', function (t) { + t.plan(10) + + var queue = buildQueue(worker, 1) + + t.equal(queue.getQueue().length, 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.getQueue().length, 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.getQueue().length, 1, 'one task waiting') + t.equal(queue.getQueue()[0], 42, 'should be equal') + queue.push(43, done) + t.equal(queue.getQueue().length, 2, 'two tasks waiting') + t.equal(queue.getQueue()[0], 42, 'should be equal') + t.equal(queue.getQueue()[1], 43, 'should be equal') + + function done (err, result) { + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('unshift', function (t) { + t.plan(8) + + var queue = buildQueue(worker, 1) + var expected = [1, 2, 3, 4] + + queue.push(1, done) + queue.push(4, done) + queue.unshift(3, done) + queue.unshift(2, done) + + function done (err, result) { + t.error(err, 'no error') + } + + function worker (arg, cb) { + t.equal(expected.shift(), arg, 'tasks come in order') + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('unshift && empty', function (t) { + t.plan(2) + + var queue = buildQueue(worker, 1) + var completed = false + + queue.pause() + + queue.empty = function () { + t.notOk(completed, 'the task has not completed yet') + } + + queue.unshift(1, done) + + queue.resume() + + function done (err, result) { + completed = true + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('push && empty', function (t) { + t.plan(2) + + var queue = buildQueue(worker, 1) + var completed = false + + queue.pause() + + queue.empty = function () { + t.notOk(completed, 'the task has not completed yet') + } + + queue.push(1, done) + + queue.resume() + + function done (err, result) { + completed = true + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('kill', function (t) { + t.plan(5) + + var queue = buildQueue(worker, 1) + var expected = [1] + + var predrain = queue.drain + + queue.drain = function drain () { + t.fail('drain should never be called') + } + + queue.push(1, done) + queue.push(4, done) + queue.unshift(3, done) + queue.unshift(2, done) + queue.kill() + + function done (err, result) { + t.error(err, 'no error') + setImmediate(function () { + t.equal(queue.length(), 0, 'no queued tasks') + t.equal(queue.running(), 0, 'no running tasks') + t.equal(queue.drain, predrain, 'drain is back to default') + }) + } + + function worker (arg, cb) { + t.equal(expected.shift(), arg, 'tasks come in order') + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('killAndDrain', function (t) { + t.plan(6) + + var queue = buildQueue(worker, 1) + var expected = [1] + + var predrain = queue.drain + + queue.drain = function drain () { + t.pass('drain has been called') + } + + queue.push(1, done) + queue.push(4, done) + queue.unshift(3, done) + queue.unshift(2, done) + queue.killAndDrain() + + function done (err, result) { + t.error(err, 'no error') + setImmediate(function () { + t.equal(queue.length(), 0, 'no queued tasks') + t.equal(queue.running(), 0, 'no running tasks') + t.equal(queue.drain, predrain, 'drain is back to default') + }) + } + + function worker (arg, cb) { + t.equal(expected.shift(), arg, 'tasks come in order') + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('pause && idle', function (t) { + t.plan(11) + + var queue = buildQueue(worker, 1) + var worked = false + + t.notOk(queue.paused, 'it should not be paused') + t.ok(queue.idle(), 'should be idle') + + queue.pause() + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + t.notOk(worked, 'it should be paused') + t.ok(queue.paused, 'it should be paused') + t.notOk(queue.idle(), 'should not be idle') + + queue.resume() + + t.notOk(queue.paused, 'it should not be paused') + t.notOk(queue.idle(), 'it should not be idle') + + function worker (arg, cb) { + t.equal(arg, 42) + worked = true + process.nextTick(cb.bind(null, null, true)) + process.nextTick(function () { + t.ok(queue.idle(), 'is should be idle') + }) + } +}) + +test('push without cb', function (t) { + t.plan(1) + + var queue = buildQueue(worker, 1) + + queue.push(42) + + function worker (arg, cb) { + t.equal(arg, 42) + cb() + } +}) + +test('unshift without cb', function (t) { + t.plan(1) + + var queue = buildQueue(worker, 1) + + queue.unshift(42) + + function worker (arg, cb) { + t.equal(arg, 42) + cb() + } +}) + +test('push with worker throwing error', function (t) { + t.plan(5) + var q = buildQueue(function (task, cb) { + cb(new Error('test error'), null) + }, 1) + q.error(function (err, task) { + t.ok(err instanceof Error, 'global error handler should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + t.equal(task, 42, 'The task executed should be passed') + }) + q.push(42, function (err) { + t.ok(err instanceof Error, 'push callback should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + }) +}) diff --git a/node_modules/fastq/test/tsconfig.json b/node_modules/fastq/test/tsconfig.json new file mode 100644 index 0000000..66e16e9 --- /dev/null +++ b/node_modules/fastq/test/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "noEmit": true, + "strict": true + }, + "files": [ + "./example.ts" + ] +} diff --git a/node_modules/fill-range/LICENSE b/node_modules/fill-range/LICENSE new file mode 100644 index 0000000..9af4a67 --- /dev/null +++ b/node_modules/fill-range/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/fill-range/README.md b/node_modules/fill-range/README.md new file mode 100644 index 0000000..8d756fe --- /dev/null +++ b/node_modules/fill-range/README.md @@ -0,0 +1,237 @@ +# fill-range [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/fill-range.svg?style=flat)](https://www.npmjs.com/package/fill-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![NPM total downloads](https://img.shields.io/npm/dt/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/fill-range.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/fill-range) + +> Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex` + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save fill-range +``` + +## Usage + +Expands numbers and letters, optionally using a `step` as the last argument. _(Numbers may be defined as JavaScript numbers or strings)_. + +```js +const fill = require('fill-range'); +// fill(from, to[, step, options]); + +console.log(fill('1', '10')); //=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] +console.log(fill('1', '10', { toRegex: true })); //=> [1-9]|10 +``` + +**Params** + +* `from`: **{String|Number}** the number or letter to start with +* `to`: **{String|Number}** the number or letter to end with +* `step`: **{String|Number|Object|Function}** Optionally pass a [step](#optionsstep) to use. +* `options`: **{Object|Function}**: See all available [options](#options) + +## Examples + +By default, an array of values is returned. + +**Alphabetical ranges** + +```js +console.log(fill('a', 'e')); //=> ['a', 'b', 'c', 'd', 'e'] +console.log(fill('A', 'E')); //=> [ 'A', 'B', 'C', 'D', 'E' ] +``` + +**Numerical ranges** + +Numbers can be defined as actual numbers or strings. + +```js +console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] +console.log(fill('1', '5')); //=> [ 1, 2, 3, 4, 5 ] +``` + +**Negative ranges** + +Numbers can be defined as actual numbers or strings. + +```js +console.log(fill('-5', '-1')); //=> [ '-5', '-4', '-3', '-2', '-1' ] +console.log(fill('-5', '5')); //=> [ '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5' ] +``` + +**Steps (increments)** + +```js +// numerical ranges with increments +console.log(fill('0', '25', 4)); //=> [ '0', '4', '8', '12', '16', '20', '24' ] +console.log(fill('0', '25', 5)); //=> [ '0', '5', '10', '15', '20', '25' ] +console.log(fill('0', '25', 6)); //=> [ '0', '6', '12', '18', '24' ] + +// alphabetical ranges with increments +console.log(fill('a', 'z', 4)); //=> [ 'a', 'e', 'i', 'm', 'q', 'u', 'y' ] +console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] +console.log(fill('a', 'z', 6)); //=> [ 'a', 'g', 'm', 's', 'y' ] +``` + +## Options + +### options.step + +**Type**: `number` (formatted as a string or number) + +**Default**: `undefined` + +**Description**: The increment to use for the range. Can be used with letters or numbers. + +**Example(s)** + +```js +// numbers +console.log(fill('1', '10', 2)); //=> [ '1', '3', '5', '7', '9' ] +console.log(fill('1', '10', 3)); //=> [ '1', '4', '7', '10' ] +console.log(fill('1', '10', 4)); //=> [ '1', '5', '9' ] + +// letters +console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] +console.log(fill('a', 'z', 7)); //=> [ 'a', 'h', 'o', 'v' ] +console.log(fill('a', 'z', 9)); //=> [ 'a', 'j', 's' ] +``` + +### options.strictRanges + +**Type**: `boolean` + +**Default**: `false` + +**Description**: By default, `null` is returned when an invalid range is passed. Enable this option to throw a `RangeError` on invalid ranges. + +**Example(s)** + +The following are all invalid: + +```js +fill('1.1', '2'); // decimals not supported in ranges +fill('a', '2'); // incompatible range values +fill(1, 10, 'foo'); // invalid "step" argument +``` + +### options.stringify + +**Type**: `boolean` + +**Default**: `undefined` + +**Description**: Cast all returned values to strings. By default, integers are returned as numbers. + +**Example(s)** + +```js +console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] +console.log(fill(1, 5, { stringify: true })); //=> [ '1', '2', '3', '4', '5' ] +``` + +### options.toRegex + +**Type**: `boolean` + +**Default**: `undefined` + +**Description**: Create a regex-compatible source string, instead of expanding values to an array. + +**Example(s)** + +```js +// alphabetical range +console.log(fill('a', 'e', { toRegex: true })); //=> '[a-e]' +// alphabetical with step +console.log(fill('a', 'z', 3, { toRegex: true })); //=> 'a|d|g|j|m|p|s|v|y' +// numerical range +console.log(fill('1', '100', { toRegex: true })); //=> '[1-9]|[1-9][0-9]|100' +// numerical range with zero padding +console.log(fill('000001', '100000', { toRegex: true })); +//=> '0{5}[1-9]|0{4}[1-9][0-9]|0{3}[1-9][0-9]{2}|0{2}[1-9][0-9]{3}|0[1-9][0-9]{4}|100000' +``` + +### options.transform + +**Type**: `function` + +**Default**: `undefined` + +**Description**: Customize each value in the returned array (or [string](#optionstoRegex)). _(you can also pass this function as the last argument to `fill()`)_. + +**Example(s)** + +```js +// add zero padding +console.log(fill(1, 5, value => String(value).padStart(4, '0'))); +//=> ['0001', '0002', '0003', '0004', '0005'] +``` + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 116 | [jonschlinkert](https://github.com/jonschlinkert) | +| 4 | [paulmillr](https://github.com/paulmillr) | +| 2 | [realityking](https://github.com/realityking) | +| 2 | [bluelovers](https://github.com/bluelovers) | +| 1 | [edorivai](https://github.com/edorivai) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +Please consider supporting me on Patreon, or [start your own Patreon page](https://patreon.com/invite/bxpbvm)! + + + + + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file diff --git a/node_modules/fill-range/index.js b/node_modules/fill-range/index.js new file mode 100644 index 0000000..97ce35a --- /dev/null +++ b/node_modules/fill-range/index.js @@ -0,0 +1,249 @@ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +const util = require('util'); +const toRegexRange = require('to-regex-range'); + +const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); + +const transform = toNumber => { + return value => toNumber === true ? Number(value) : String(value); +}; + +const isValidValue = value => { + return typeof value === 'number' || (typeof value === 'string' && value !== ''); +}; + +const isNumber = num => Number.isInteger(+num); + +const zeros = input => { + let value = `${input}`; + let index = -1; + if (value[0] === '-') value = value.slice(1); + if (value === '0') return false; + while (value[++index] === '0'); + return index > 0; +}; + +const stringify = (start, end, options) => { + if (typeof start === 'string' || typeof end === 'string') { + return true; + } + return options.stringify === true; +}; + +const pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === '-' ? '-' : ''; + if (dash) input = input.slice(1); + input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); + } + if (toNumber === false) { + return String(input); + } + return input; +}; + +const toMaxLen = (input, maxLength) => { + let negative = input[0] === '-' ? '-' : ''; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) input = '0' + input; + return negative ? ('-' + input) : input; +}; + +const toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + + let prefix = options.capture ? '' : '?:'; + let positives = ''; + let negatives = ''; + let result; + + if (parts.positives.length) { + positives = parts.positives.join('|'); + } + + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join('|')})`; + } + + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + + if (options.wrap) { + return `(${prefix}${result})`; + } + + return result; +}; + +const toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); + } + + let start = String.fromCharCode(a); + if (a === b) return start; + + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; +}; + +const toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? '' : '?:'; + return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + } + return toRegexRange(start, end, options); +}; + +const rangeError = (...args) => { + return new RangeError('Invalid range arguments: ' + util.inspect(...args)); +}; + +const invalidRange = (start, end, options) => { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; +}; + +const invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); + } + return []; +}; + +const fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; + } + + // fix negative zero + if (a === 0) a = 0; + if (b === 0) b = 0; + + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); + + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format = options.transform || transform(toNumber); + + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + + let parts = { negatives: [], positives: [] }; + let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return step > 1 + ? toSequence(parts, options) + : toRegex(range, null, { wrap: false, ...options }); + } + + return range; +}; + +const fillLetters = (start, end, step = 1, options = {}) => { + if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) { + return invalidRange(start, end, options); + } + + + let format = options.transform || (val => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } + + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + range.push(format(a, index)); + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + + return range; +}; + +const fill = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + + if (typeof step === 'function') { + return fill(start, end, 1, { transform: step }); + } + + if (isObject(step)) { + return fill(start, end, 0, step); + } + + let opts = { ...options }; + if (opts.capture === true) opts.wrap = true; + step = step || opts.step || 1; + + if (!isNumber(step)) { + if (step != null && !isObject(step)) return invalidStep(step, opts); + return fill(start, end, 1, step); + } + + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step, opts); + } + + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); +}; + +module.exports = fill; diff --git a/node_modules/fill-range/package.json b/node_modules/fill-range/package.json new file mode 100644 index 0000000..07d3076 --- /dev/null +++ b/node_modules/fill-range/package.json @@ -0,0 +1,69 @@ +{ + "name": "fill-range", + "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`", + "version": "7.0.1", + "homepage": "https://github.com/jonschlinkert/fill-range", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Edo Rivai (edo.rivai.nl)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Paul Miller (paulmillr.com)", + "Rouven Weßling (www.rouvenwessling.de)", + "(https://github.com/wtgtybhertgeghgtwtg)" + ], + "repository": "jonschlinkert/fill-range", + "bugs": { + "url": "https://github.com/jonschlinkert/fill-range/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "devDependencies": { + "gulp-format-md": "^2.0.0", + "mocha": "^6.1.1" + }, + "keywords": [ + "alpha", + "alphabetical", + "array", + "bash", + "brace", + "expand", + "expansion", + "fill", + "glob", + "match", + "matches", + "matching", + "number", + "numerical", + "range", + "ranges", + "regex", + "sh" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/fs-extra/LICENSE b/node_modules/fs-extra/LICENSE new file mode 100644 index 0000000..93546df --- /dev/null +++ b/node_modules/fs-extra/LICENSE @@ -0,0 +1,15 @@ +(The MIT License) + +Copyright (c) 2011-2017 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/fs-extra/README.md b/node_modules/fs-extra/README.md new file mode 100644 index 0000000..245de66 --- /dev/null +++ b/node_modules/fs-extra/README.md @@ -0,0 +1,292 @@ +Node.js: fs-extra +================= + +`fs-extra` adds file system methods that aren't included in the native `fs` module and adds promise support to the `fs` methods. It also uses [`graceful-fs`](https://github.com/isaacs/node-graceful-fs) to prevent `EMFILE` errors. It should be a drop in replacement for `fs`. + +[![npm Package](https://img.shields.io/npm/v/fs-extra.svg)](https://www.npmjs.org/package/fs-extra) +[![License](https://img.shields.io/npm/l/fs-extra.svg)](https://github.com/jprichardson/node-fs-extra/blob/master/LICENSE) +[![build status](https://img.shields.io/github/actions/workflow/status/jprichardson/node-fs-extra/ci.yml?branch=master)](https://github.com/jprichardson/node-fs-extra/actions/workflows/ci.yml?query=branch%3Amaster) +[![downloads per month](http://img.shields.io/npm/dm/fs-extra.svg)](https://www.npmjs.org/package/fs-extra) +[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) + +Why? +---- + +I got tired of including `mkdirp`, `rimraf`, and `ncp` in most of my projects. + + + + +Installation +------------ + + npm install fs-extra + + + +Usage +----- + +### CommonJS + +`fs-extra` is a drop in replacement for native `fs`. All methods in `fs` are attached to `fs-extra`. All `fs` methods return promises if the callback isn't passed. + +You don't ever need to include the original `fs` module again: + +```js +const fs = require('fs') // this is no longer necessary +``` + +you can now do this: + +```js +const fs = require('fs-extra') +``` + +or if you prefer to make it clear that you're using `fs-extra` and not `fs`, you may want +to name your `fs` variable `fse` like so: + +```js +const fse = require('fs-extra') +``` + +you can also keep both, but it's redundant: + +```js +const fs = require('fs') +const fse = require('fs-extra') +``` + +### ESM + +There is also an `fs-extra/esm` import, that supports both default and named exports. However, note that `fs` methods are not included in `fs-extra/esm`; you still need to import `fs` and/or `fs/promises` seperately: + +```js +import { readFileSync } from 'fs' +import { readFile } from 'fs/promises' +import { outputFile, outputFileSync } from 'fs-extra/esm' +``` + +Default exports are supported: + +```js +import fs from 'fs' +import fse from 'fs-extra/esm' +// fse.readFileSync is not a function; must use fs.readFileSync +``` + +but you probably want to just use regular `fs-extra` instead of `fs-extra/esm` for default exports: + +```js +import fs from 'fs-extra' +// both fs and fs-extra methods are defined +``` + +Sync vs Async vs Async/Await +------------- +Most methods are async by default. All async methods will return a promise if the callback isn't passed. + +Sync methods on the other hand will throw if an error occurs. + +Also Async/Await will throw an error if one occurs. + +Example: + +```js +const fs = require('fs-extra') + +// Async with promises: +fs.copy('/tmp/myfile', '/tmp/mynewfile') + .then(() => console.log('success!')) + .catch(err => console.error(err)) + +// Async with callbacks: +fs.copy('/tmp/myfile', '/tmp/mynewfile', err => { + if (err) return console.error(err) + console.log('success!') +}) + +// Sync: +try { + fs.copySync('/tmp/myfile', '/tmp/mynewfile') + console.log('success!') +} catch (err) { + console.error(err) +} + +// Async/Await: +async function copyFiles () { + try { + await fs.copy('/tmp/myfile', '/tmp/mynewfile') + console.log('success!') + } catch (err) { + console.error(err) + } +} + +copyFiles() +``` + + +Methods +------- + +### Async + +- [copy](docs/copy.md) +- [emptyDir](docs/emptyDir.md) +- [ensureFile](docs/ensureFile.md) +- [ensureDir](docs/ensureDir.md) +- [ensureLink](docs/ensureLink.md) +- [ensureSymlink](docs/ensureSymlink.md) +- [mkdirp](docs/ensureDir.md) +- [mkdirs](docs/ensureDir.md) +- [move](docs/move.md) +- [outputFile](docs/outputFile.md) +- [outputJson](docs/outputJson.md) +- [pathExists](docs/pathExists.md) +- [readJson](docs/readJson.md) +- [remove](docs/remove.md) +- [writeJson](docs/writeJson.md) + +### Sync + +- [copySync](docs/copy-sync.md) +- [emptyDirSync](docs/emptyDir-sync.md) +- [ensureFileSync](docs/ensureFile-sync.md) +- [ensureDirSync](docs/ensureDir-sync.md) +- [ensureLinkSync](docs/ensureLink-sync.md) +- [ensureSymlinkSync](docs/ensureSymlink-sync.md) +- [mkdirpSync](docs/ensureDir-sync.md) +- [mkdirsSync](docs/ensureDir-sync.md) +- [moveSync](docs/move-sync.md) +- [outputFileSync](docs/outputFile-sync.md) +- [outputJsonSync](docs/outputJson-sync.md) +- [pathExistsSync](docs/pathExists-sync.md) +- [readJsonSync](docs/readJson-sync.md) +- [removeSync](docs/remove-sync.md) +- [writeJsonSync](docs/writeJson-sync.md) + + +**NOTE:** You can still use the native Node.js methods. They are promisified and copied over to `fs-extra`. See [notes on `fs.read()`, `fs.write()`, & `fs.writev()`](docs/fs-read-write-writev.md) + +### What happened to `walk()` and `walkSync()`? + +They were removed from `fs-extra` in v2.0.0. If you need the functionality, `walk` and `walkSync` are available as separate packages, [`klaw`](https://github.com/jprichardson/node-klaw) and [`klaw-sync`](https://github.com/manidlou/node-klaw-sync). + + +Third Party +----------- + +### CLI + +[fse-cli](https://www.npmjs.com/package/@atao60/fse-cli) allows you to run `fs-extra` from a console or from [npm](https://www.npmjs.com) scripts. + +### TypeScript + +If you like TypeScript, you can use `fs-extra` with it: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/fs-extra + + +### File / Directory Watching + +If you want to watch for changes to files or directories, then you should use [chokidar](https://github.com/paulmillr/chokidar). + +### Obtain Filesystem (Devices, Partitions) Information + +[fs-filesystem](https://github.com/arthurintelligence/node-fs-filesystem) allows you to read the state of the filesystem of the host on which it is run. It returns information about both the devices and the partitions (volumes) of the system. + +### Misc. + +- [fs-extra-debug](https://github.com/jdxcode/fs-extra-debug) - Send your fs-extra calls to [debug](https://npmjs.org/package/debug). +- [mfs](https://github.com/cadorn/mfs) - Monitor your fs-extra calls. + + + +Hacking on fs-extra +------------------- + +Wanna hack on `fs-extra`? Great! Your help is needed! [fs-extra is one of the most depended upon Node.js packages](http://nodei.co/npm/fs-extra.png?downloads=true&downloadRank=true&stars=true). This project +uses [JavaScript Standard Style](https://github.com/feross/standard) - if the name or style choices bother you, +you're gonna have to get over it :) If `standard` is good enough for `npm`, it's good enough for `fs-extra`. + +[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) + +What's needed? +- First, take a look at existing issues. Those are probably going to be where the priority lies. +- More tests for edge cases. Specifically on different platforms. There can never be enough tests. +- Improve test coverage. + +Note: If you make any big changes, **you should definitely file an issue for discussion first.** + +### Running the Test Suite + +fs-extra contains hundreds of tests. + +- `npm run lint`: runs the linter ([standard](http://standardjs.com/)) +- `npm run unit`: runs the unit tests +- `npm run unit-esm`: runs tests for `fs-extra/esm` exports +- `npm test`: runs the linter and all tests + +When running unit tests, set the environment variable `CROSS_DEVICE_PATH` to the absolute path of an empty directory on another device (like a thumb drive) to enable cross-device move tests. + + +### Windows + +If you run the tests on the Windows and receive a lot of symbolic link `EPERM` permission errors, it's +because on Windows you need elevated privilege to create symbolic links. You can add this to your Windows's +account by following the instructions here: http://superuser.com/questions/104845/permission-to-make-symbolic-links-in-windows-7 +However, I didn't have much luck doing this. + +Since I develop on Mac OS X, I use VMWare Fusion for Windows testing. I create a shared folder that I map to a drive on Windows. +I open the `Node.js command prompt` and run as `Administrator`. I then map the network drive running the following command: + + net use z: "\\vmware-host\Shared Folders" + +I can then navigate to my `fs-extra` directory and run the tests. + + +Naming +------ + +I put a lot of thought into the naming of these functions. Inspired by @coolaj86's request. So he deserves much of the credit for raising the issue. See discussion(s) here: + +* https://github.com/jprichardson/node-fs-extra/issues/2 +* https://github.com/flatiron/utile/issues/11 +* https://github.com/ryanmcgrath/wrench-js/issues/29 +* https://github.com/substack/node-mkdirp/issues/17 + +First, I believe that in as many cases as possible, the [Node.js naming schemes](http://nodejs.org/api/fs.html) should be chosen. However, there are problems with the Node.js own naming schemes. + +For example, `fs.readFile()` and `fs.readdir()`: the **F** is capitalized in *File* and the **d** is not capitalized in *dir*. Perhaps a bit pedantic, but they should still be consistent. Also, Node.js has chosen a lot of POSIX naming schemes, which I believe is great. See: `fs.mkdir()`, `fs.rmdir()`, `fs.chown()`, etc. + +We have a dilemma though. How do you consistently name methods that perform the following POSIX commands: `cp`, `cp -r`, `mkdir -p`, and `rm -rf`? + +My perspective: when in doubt, err on the side of simplicity. A directory is just a hierarchical grouping of directories and files. Consider that for a moment. So when you want to copy it or remove it, in most cases you'll want to copy or remove all of its contents. When you want to create a directory, if the directory that it's suppose to be contained in does not exist, then in most cases you'll want to create that too. + +So, if you want to remove a file or a directory regardless of whether it has contents, just call `fs.remove(path)`. If you want to copy a file or a directory whether it has contents, just call `fs.copy(source, destination)`. If you want to create a directory regardless of whether its parent directories exist, just call `fs.mkdirs(path)` or `fs.mkdirp(path)`. + + +Credit +------ + +`fs-extra` wouldn't be possible without using the modules from the following authors: + +- [Isaac Shlueter](https://github.com/isaacs) +- [Charlie McConnel](https://github.com/avianflu) +- [James Halliday](https://github.com/substack) +- [Andrew Kelley](https://github.com/andrewrk) + + + + +License +------- + +Licensed under MIT + +Copyright (c) 2011-2017 [JP Richardson](https://github.com/jprichardson) + +[1]: http://nodejs.org/docs/latest/api/fs.html + + +[jsonfile]: https://github.com/jprichardson/node-jsonfile diff --git a/node_modules/fs-extra/lib/copy/copy-sync.js b/node_modules/fs-extra/lib/copy/copy-sync.js new file mode 100644 index 0000000..8bc6011 --- /dev/null +++ b/node_modules/fs-extra/lib/copy/copy-sync.js @@ -0,0 +1,161 @@ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const mkdirsSync = require('../mkdirs').mkdirsSync +const utimesMillisSync = require('../util/utimes').utimesMillisSync +const stat = require('../util/stat') + +function copySync (src, dest, opts) { + if (typeof opts === 'function') { + opts = { filter: opts } + } + + opts = opts || {} + opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now + opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber + + // Warn about using preserveTimestamps on 32-bit node + if (opts.preserveTimestamps && process.arch === 'ia32') { + process.emitWarning( + 'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' + + '\tsee https://github.com/jprichardson/node-fs-extra/issues/269', + 'Warning', 'fs-extra-WARN0002' + ) + } + + const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts) + stat.checkParentPathsSync(src, srcStat, dest, 'copy') + if (opts.filter && !opts.filter(src, dest)) return + const destParent = path.dirname(dest) + if (!fs.existsSync(destParent)) mkdirsSync(destParent) + return getStats(destStat, src, dest, opts) +} + +function getStats (destStat, src, dest, opts) { + const statSync = opts.dereference ? fs.statSync : fs.lstatSync + const srcStat = statSync(src) + + if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts) + else if (srcStat.isFile() || + srcStat.isCharacterDevice() || + srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts) + else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts) + else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`) + else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`) + throw new Error(`Unknown file: ${src}`) +} + +function onFile (srcStat, destStat, src, dest, opts) { + if (!destStat) return copyFile(srcStat, src, dest, opts) + return mayCopyFile(srcStat, src, dest, opts) +} + +function mayCopyFile (srcStat, src, dest, opts) { + if (opts.overwrite) { + fs.unlinkSync(dest) + return copyFile(srcStat, src, dest, opts) + } else if (opts.errorOnExist) { + throw new Error(`'${dest}' already exists`) + } +} + +function copyFile (srcStat, src, dest, opts) { + fs.copyFileSync(src, dest) + if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest) + return setDestMode(dest, srcStat.mode) +} + +function handleTimestamps (srcMode, src, dest) { + // Make sure the file is writable before setting the timestamp + // otherwise open fails with EPERM when invoked with 'r+' + // (through utimes call) + if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode) + return setDestTimestamps(src, dest) +} + +function fileIsNotWritable (srcMode) { + return (srcMode & 0o200) === 0 +} + +function makeFileWritable (dest, srcMode) { + return setDestMode(dest, srcMode | 0o200) +} + +function setDestMode (dest, srcMode) { + return fs.chmodSync(dest, srcMode) +} + +function setDestTimestamps (src, dest) { + // The initial srcStat.atime cannot be trusted + // because it is modified by the read(2) system call + // (See https://nodejs.org/api/fs.html#fs_stat_time_values) + const updatedSrcStat = fs.statSync(src) + return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime) +} + +function onDir (srcStat, destStat, src, dest, opts) { + if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts) + return copyDir(src, dest, opts) +} + +function mkDirAndCopy (srcMode, src, dest, opts) { + fs.mkdirSync(dest) + copyDir(src, dest, opts) + return setDestMode(dest, srcMode) +} + +function copyDir (src, dest, opts) { + fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts)) +} + +function copyDirItem (item, src, dest, opts) { + const srcItem = path.join(src, item) + const destItem = path.join(dest, item) + if (opts.filter && !opts.filter(srcItem, destItem)) return + const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts) + return getStats(destStat, srcItem, destItem, opts) +} + +function onLink (destStat, src, dest, opts) { + let resolvedSrc = fs.readlinkSync(src) + if (opts.dereference) { + resolvedSrc = path.resolve(process.cwd(), resolvedSrc) + } + + if (!destStat) { + return fs.symlinkSync(resolvedSrc, dest) + } else { + let resolvedDest + try { + resolvedDest = fs.readlinkSync(dest) + } catch (err) { + // dest exists and is a regular file or directory, + // Windows may throw UNKNOWN error. If dest already exists, + // fs throws error anyway, so no need to guard against it here. + if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest) + throw err + } + if (opts.dereference) { + resolvedDest = path.resolve(process.cwd(), resolvedDest) + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`) + } + + // prevent copy if src is a subdir of dest since unlinking + // dest in this case would result in removing src contents + // and therefore a broken symlink would be created. + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`) + } + return copyLink(resolvedSrc, dest) + } +} + +function copyLink (resolvedSrc, dest) { + fs.unlinkSync(dest) + return fs.symlinkSync(resolvedSrc, dest) +} + +module.exports = copySync diff --git a/node_modules/fs-extra/lib/copy/copy.js b/node_modules/fs-extra/lib/copy/copy.js new file mode 100644 index 0000000..bc188fb --- /dev/null +++ b/node_modules/fs-extra/lib/copy/copy.js @@ -0,0 +1,238 @@ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const mkdirs = require('../mkdirs').mkdirs +const pathExists = require('../path-exists').pathExists +const utimesMillis = require('../util/utimes').utimesMillis +const stat = require('../util/stat') + +function copy (src, dest, opts, cb) { + if (typeof opts === 'function' && !cb) { + cb = opts + opts = {} + } else if (typeof opts === 'function') { + opts = { filter: opts } + } + + cb = cb || function () {} + opts = opts || {} + + opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now + opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber + + // Warn about using preserveTimestamps on 32-bit node + if (opts.preserveTimestamps && process.arch === 'ia32') { + process.emitWarning( + 'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' + + '\tsee https://github.com/jprichardson/node-fs-extra/issues/269', + 'Warning', 'fs-extra-WARN0001' + ) + } + + stat.checkPaths(src, dest, 'copy', opts, (err, stats) => { + if (err) return cb(err) + const { srcStat, destStat } = stats + stat.checkParentPaths(src, srcStat, dest, 'copy', err => { + if (err) return cb(err) + runFilter(src, dest, opts, (err, include) => { + if (err) return cb(err) + if (!include) return cb() + + checkParentDir(destStat, src, dest, opts, cb) + }) + }) + }) +} + +function checkParentDir (destStat, src, dest, opts, cb) { + const destParent = path.dirname(dest) + pathExists(destParent, (err, dirExists) => { + if (err) return cb(err) + if (dirExists) return getStats(destStat, src, dest, opts, cb) + mkdirs(destParent, err => { + if (err) return cb(err) + return getStats(destStat, src, dest, opts, cb) + }) + }) +} + +function runFilter (src, dest, opts, cb) { + if (!opts.filter) return cb(null, true) + Promise.resolve(opts.filter(src, dest)) + .then(include => cb(null, include), error => cb(error)) +} + +function getStats (destStat, src, dest, opts, cb) { + const stat = opts.dereference ? fs.stat : fs.lstat + stat(src, (err, srcStat) => { + if (err) return cb(err) + + if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb) + else if (srcStat.isFile() || + srcStat.isCharacterDevice() || + srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb) + else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb) + else if (srcStat.isSocket()) return cb(new Error(`Cannot copy a socket file: ${src}`)) + else if (srcStat.isFIFO()) return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)) + return cb(new Error(`Unknown file: ${src}`)) + }) +} + +function onFile (srcStat, destStat, src, dest, opts, cb) { + if (!destStat) return copyFile(srcStat, src, dest, opts, cb) + return mayCopyFile(srcStat, src, dest, opts, cb) +} + +function mayCopyFile (srcStat, src, dest, opts, cb) { + if (opts.overwrite) { + fs.unlink(dest, err => { + if (err) return cb(err) + return copyFile(srcStat, src, dest, opts, cb) + }) + } else if (opts.errorOnExist) { + return cb(new Error(`'${dest}' already exists`)) + } else return cb() +} + +function copyFile (srcStat, src, dest, opts, cb) { + fs.copyFile(src, dest, err => { + if (err) return cb(err) + if (opts.preserveTimestamps) return handleTimestampsAndMode(srcStat.mode, src, dest, cb) + return setDestMode(dest, srcStat.mode, cb) + }) +} + +function handleTimestampsAndMode (srcMode, src, dest, cb) { + // Make sure the file is writable before setting the timestamp + // otherwise open fails with EPERM when invoked with 'r+' + // (through utimes call) + if (fileIsNotWritable(srcMode)) { + return makeFileWritable(dest, srcMode, err => { + if (err) return cb(err) + return setDestTimestampsAndMode(srcMode, src, dest, cb) + }) + } + return setDestTimestampsAndMode(srcMode, src, dest, cb) +} + +function fileIsNotWritable (srcMode) { + return (srcMode & 0o200) === 0 +} + +function makeFileWritable (dest, srcMode, cb) { + return setDestMode(dest, srcMode | 0o200, cb) +} + +function setDestTimestampsAndMode (srcMode, src, dest, cb) { + setDestTimestamps(src, dest, err => { + if (err) return cb(err) + return setDestMode(dest, srcMode, cb) + }) +} + +function setDestMode (dest, srcMode, cb) { + return fs.chmod(dest, srcMode, cb) +} + +function setDestTimestamps (src, dest, cb) { + // The initial srcStat.atime cannot be trusted + // because it is modified by the read(2) system call + // (See https://nodejs.org/api/fs.html#fs_stat_time_values) + fs.stat(src, (err, updatedSrcStat) => { + if (err) return cb(err) + return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb) + }) +} + +function onDir (srcStat, destStat, src, dest, opts, cb) { + if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts, cb) + return copyDir(src, dest, opts, cb) +} + +function mkDirAndCopy (srcMode, src, dest, opts, cb) { + fs.mkdir(dest, err => { + if (err) return cb(err) + copyDir(src, dest, opts, err => { + if (err) return cb(err) + return setDestMode(dest, srcMode, cb) + }) + }) +} + +function copyDir (src, dest, opts, cb) { + fs.readdir(src, (err, items) => { + if (err) return cb(err) + return copyDirItems(items, src, dest, opts, cb) + }) +} + +function copyDirItems (items, src, dest, opts, cb) { + const item = items.pop() + if (!item) return cb() + return copyDirItem(items, item, src, dest, opts, cb) +} + +function copyDirItem (items, item, src, dest, opts, cb) { + const srcItem = path.join(src, item) + const destItem = path.join(dest, item) + runFilter(srcItem, destItem, opts, (err, include) => { + if (err) return cb(err) + if (!include) return copyDirItems(items, src, dest, opts, cb) + + stat.checkPaths(srcItem, destItem, 'copy', opts, (err, stats) => { + if (err) return cb(err) + const { destStat } = stats + getStats(destStat, srcItem, destItem, opts, err => { + if (err) return cb(err) + return copyDirItems(items, src, dest, opts, cb) + }) + }) + }) +} + +function onLink (destStat, src, dest, opts, cb) { + fs.readlink(src, (err, resolvedSrc) => { + if (err) return cb(err) + if (opts.dereference) { + resolvedSrc = path.resolve(process.cwd(), resolvedSrc) + } + + if (!destStat) { + return fs.symlink(resolvedSrc, dest, cb) + } else { + fs.readlink(dest, (err, resolvedDest) => { + if (err) { + // dest exists and is a regular file or directory, + // Windows may throw UNKNOWN error. If dest already exists, + // fs throws error anyway, so no need to guard against it here. + if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest, cb) + return cb(err) + } + if (opts.dereference) { + resolvedDest = path.resolve(process.cwd(), resolvedDest) + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)) + } + + // do not copy if src is a subdir of dest since unlinking + // dest in this case would result in removing src contents + // and therefore a broken symlink would be created. + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)) + } + return copyLink(resolvedSrc, dest, cb) + }) + } + }) +} + +function copyLink (resolvedSrc, dest, cb) { + fs.unlink(dest, err => { + if (err) return cb(err) + return fs.symlink(resolvedSrc, dest, cb) + }) +} + +module.exports = copy diff --git a/node_modules/fs-extra/lib/copy/index.js b/node_modules/fs-extra/lib/copy/index.js new file mode 100644 index 0000000..45c07a2 --- /dev/null +++ b/node_modules/fs-extra/lib/copy/index.js @@ -0,0 +1,7 @@ +'use strict' + +const u = require('universalify').fromCallback +module.exports = { + copy: u(require('./copy')), + copySync: require('./copy-sync') +} diff --git a/node_modules/fs-extra/lib/empty/index.js b/node_modules/fs-extra/lib/empty/index.js new file mode 100644 index 0000000..b4a2e82 --- /dev/null +++ b/node_modules/fs-extra/lib/empty/index.js @@ -0,0 +1,39 @@ +'use strict' + +const u = require('universalify').fromPromise +const fs = require('../fs') +const path = require('path') +const mkdir = require('../mkdirs') +const remove = require('../remove') + +const emptyDir = u(async function emptyDir (dir) { + let items + try { + items = await fs.readdir(dir) + } catch { + return mkdir.mkdirs(dir) + } + + return Promise.all(items.map(item => remove.remove(path.join(dir, item)))) +}) + +function emptyDirSync (dir) { + let items + try { + items = fs.readdirSync(dir) + } catch { + return mkdir.mkdirsSync(dir) + } + + items.forEach(item => { + item = path.join(dir, item) + remove.removeSync(item) + }) +} + +module.exports = { + emptyDirSync, + emptydirSync: emptyDirSync, + emptyDir, + emptydir: emptyDir +} diff --git a/node_modules/fs-extra/lib/ensure/file.js b/node_modules/fs-extra/lib/ensure/file.js new file mode 100644 index 0000000..15cc473 --- /dev/null +++ b/node_modules/fs-extra/lib/ensure/file.js @@ -0,0 +1,69 @@ +'use strict' + +const u = require('universalify').fromCallback +const path = require('path') +const fs = require('graceful-fs') +const mkdir = require('../mkdirs') + +function createFile (file, callback) { + function makeFile () { + fs.writeFile(file, '', err => { + if (err) return callback(err) + callback() + }) + } + + fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err + if (!err && stats.isFile()) return callback() + const dir = path.dirname(file) + fs.stat(dir, (err, stats) => { + if (err) { + // if the directory doesn't exist, make it + if (err.code === 'ENOENT') { + return mkdir.mkdirs(dir, err => { + if (err) return callback(err) + makeFile() + }) + } + return callback(err) + } + + if (stats.isDirectory()) makeFile() + else { + // parent is not a directory + // This is just to cause an internal ENOTDIR error to be thrown + fs.readdir(dir, err => { + if (err) return callback(err) + }) + } + }) + }) +} + +function createFileSync (file) { + let stats + try { + stats = fs.statSync(file) + } catch {} + if (stats && stats.isFile()) return + + const dir = path.dirname(file) + try { + if (!fs.statSync(dir).isDirectory()) { + // parent is not a directory + // This is just to cause an internal ENOTDIR error to be thrown + fs.readdirSync(dir) + } + } catch (err) { + // If the stat call above failed because the directory doesn't exist, create it + if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir) + else throw err + } + + fs.writeFileSync(file, '') +} + +module.exports = { + createFile: u(createFile), + createFileSync +} diff --git a/node_modules/fs-extra/lib/ensure/index.js b/node_modules/fs-extra/lib/ensure/index.js new file mode 100644 index 0000000..ecbcdd0 --- /dev/null +++ b/node_modules/fs-extra/lib/ensure/index.js @@ -0,0 +1,23 @@ +'use strict' + +const { createFile, createFileSync } = require('./file') +const { createLink, createLinkSync } = require('./link') +const { createSymlink, createSymlinkSync } = require('./symlink') + +module.exports = { + // file + createFile, + createFileSync, + ensureFile: createFile, + ensureFileSync: createFileSync, + // link + createLink, + createLinkSync, + ensureLink: createLink, + ensureLinkSync: createLinkSync, + // symlink + createSymlink, + createSymlinkSync, + ensureSymlink: createSymlink, + ensureSymlinkSync: createSymlinkSync +} diff --git a/node_modules/fs-extra/lib/ensure/link.js b/node_modules/fs-extra/lib/ensure/link.js new file mode 100644 index 0000000..f6d6748 --- /dev/null +++ b/node_modules/fs-extra/lib/ensure/link.js @@ -0,0 +1,64 @@ +'use strict' + +const u = require('universalify').fromCallback +const path = require('path') +const fs = require('graceful-fs') +const mkdir = require('../mkdirs') +const pathExists = require('../path-exists').pathExists +const { areIdentical } = require('../util/stat') + +function createLink (srcpath, dstpath, callback) { + function makeLink (srcpath, dstpath) { + fs.link(srcpath, dstpath, err => { + if (err) return callback(err) + callback(null) + }) + } + + fs.lstat(dstpath, (_, dstStat) => { + fs.lstat(srcpath, (err, srcStat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureLink') + return callback(err) + } + if (dstStat && areIdentical(srcStat, dstStat)) return callback(null) + + const dir = path.dirname(dstpath) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return makeLink(srcpath, dstpath) + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + makeLink(srcpath, dstpath) + }) + }) + }) + }) +} + +function createLinkSync (srcpath, dstpath) { + let dstStat + try { + dstStat = fs.lstatSync(dstpath) + } catch {} + + try { + const srcStat = fs.lstatSync(srcpath) + if (dstStat && areIdentical(srcStat, dstStat)) return + } catch (err) { + err.message = err.message.replace('lstat', 'ensureLink') + throw err + } + + const dir = path.dirname(dstpath) + const dirExists = fs.existsSync(dir) + if (dirExists) return fs.linkSync(srcpath, dstpath) + mkdir.mkdirsSync(dir) + + return fs.linkSync(srcpath, dstpath) +} + +module.exports = { + createLink: u(createLink), + createLinkSync +} diff --git a/node_modules/fs-extra/lib/ensure/symlink-paths.js b/node_modules/fs-extra/lib/ensure/symlink-paths.js new file mode 100644 index 0000000..33cd760 --- /dev/null +++ b/node_modules/fs-extra/lib/ensure/symlink-paths.js @@ -0,0 +1,99 @@ +'use strict' + +const path = require('path') +const fs = require('graceful-fs') +const pathExists = require('../path-exists').pathExists + +/** + * Function that returns two types of paths, one relative to symlink, and one + * relative to the current working directory. Checks if path is absolute or + * relative. If the path is relative, this function checks if the path is + * relative to symlink or relative to current working directory. This is an + * initiative to find a smarter `srcpath` to supply when building symlinks. + * This allows you to determine which path to use out of one of three possible + * types of source paths. The first is an absolute path. This is detected by + * `path.isAbsolute()`. When an absolute path is provided, it is checked to + * see if it exists. If it does it's used, if not an error is returned + * (callback)/ thrown (sync). The other two options for `srcpath` are a + * relative url. By default Node's `fs.symlink` works by creating a symlink + * using `dstpath` and expects the `srcpath` to be relative to the newly + * created symlink. If you provide a `srcpath` that does not exist on the file + * system it results in a broken symlink. To minimize this, the function + * checks to see if the 'relative to symlink' source file exists, and if it + * does it will use it. If it does not, it checks if there's a file that + * exists that is relative to the current working directory, if does its used. + * This preserves the expectations of the original fs.symlink spec and adds + * the ability to pass in `relative to current working direcotry` paths. + */ + +function symlinkPaths (srcpath, dstpath, callback) { + if (path.isAbsolute(srcpath)) { + return fs.lstat(srcpath, (err) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureSymlink') + return callback(err) + } + return callback(null, { + toCwd: srcpath, + toDst: srcpath + }) + }) + } else { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + return pathExists(relativeToDst, (err, exists) => { + if (err) return callback(err) + if (exists) { + return callback(null, { + toCwd: relativeToDst, + toDst: srcpath + }) + } else { + return fs.lstat(srcpath, (err) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureSymlink') + return callback(err) + } + return callback(null, { + toCwd: srcpath, + toDst: path.relative(dstdir, srcpath) + }) + }) + } + }) + } +} + +function symlinkPathsSync (srcpath, dstpath) { + let exists + if (path.isAbsolute(srcpath)) { + exists = fs.existsSync(srcpath) + if (!exists) throw new Error('absolute srcpath does not exist') + return { + toCwd: srcpath, + toDst: srcpath + } + } else { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + exists = fs.existsSync(relativeToDst) + if (exists) { + return { + toCwd: relativeToDst, + toDst: srcpath + } + } else { + exists = fs.existsSync(srcpath) + if (!exists) throw new Error('relative srcpath does not exist') + return { + toCwd: srcpath, + toDst: path.relative(dstdir, srcpath) + } + } + } +} + +module.exports = { + symlinkPaths, + symlinkPathsSync +} diff --git a/node_modules/fs-extra/lib/ensure/symlink-type.js b/node_modules/fs-extra/lib/ensure/symlink-type.js new file mode 100644 index 0000000..42dc0ce --- /dev/null +++ b/node_modules/fs-extra/lib/ensure/symlink-type.js @@ -0,0 +1,31 @@ +'use strict' + +const fs = require('graceful-fs') + +function symlinkType (srcpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + if (type) return callback(null, type) + fs.lstat(srcpath, (err, stats) => { + if (err) return callback(null, 'file') + type = (stats && stats.isDirectory()) ? 'dir' : 'file' + callback(null, type) + }) +} + +function symlinkTypeSync (srcpath, type) { + let stats + + if (type) return type + try { + stats = fs.lstatSync(srcpath) + } catch { + return 'file' + } + return (stats && stats.isDirectory()) ? 'dir' : 'file' +} + +module.exports = { + symlinkType, + symlinkTypeSync +} diff --git a/node_modules/fs-extra/lib/ensure/symlink.js b/node_modules/fs-extra/lib/ensure/symlink.js new file mode 100644 index 0000000..2b93052 --- /dev/null +++ b/node_modules/fs-extra/lib/ensure/symlink.js @@ -0,0 +1,82 @@ +'use strict' + +const u = require('universalify').fromCallback +const path = require('path') +const fs = require('../fs') +const _mkdirs = require('../mkdirs') +const mkdirs = _mkdirs.mkdirs +const mkdirsSync = _mkdirs.mkdirsSync + +const _symlinkPaths = require('./symlink-paths') +const symlinkPaths = _symlinkPaths.symlinkPaths +const symlinkPathsSync = _symlinkPaths.symlinkPathsSync + +const _symlinkType = require('./symlink-type') +const symlinkType = _symlinkType.symlinkType +const symlinkTypeSync = _symlinkType.symlinkTypeSync + +const pathExists = require('../path-exists').pathExists + +const { areIdentical } = require('../util/stat') + +function createSymlink (srcpath, dstpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + + fs.lstat(dstpath, (err, stats) => { + if (!err && stats.isSymbolicLink()) { + Promise.all([ + fs.stat(srcpath), + fs.stat(dstpath) + ]).then(([srcStat, dstStat]) => { + if (areIdentical(srcStat, dstStat)) return callback(null) + _createSymlink(srcpath, dstpath, type, callback) + }) + } else _createSymlink(srcpath, dstpath, type, callback) + }) +} + +function _createSymlink (srcpath, dstpath, type, callback) { + symlinkPaths(srcpath, dstpath, (err, relative) => { + if (err) return callback(err) + srcpath = relative.toDst + symlinkType(relative.toCwd, type, (err, type) => { + if (err) return callback(err) + const dir = path.dirname(dstpath) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return fs.symlink(srcpath, dstpath, type, callback) + mkdirs(dir, err => { + if (err) return callback(err) + fs.symlink(srcpath, dstpath, type, callback) + }) + }) + }) + }) +} + +function createSymlinkSync (srcpath, dstpath, type) { + let stats + try { + stats = fs.lstatSync(dstpath) + } catch {} + if (stats && stats.isSymbolicLink()) { + const srcStat = fs.statSync(srcpath) + const dstStat = fs.statSync(dstpath) + if (areIdentical(srcStat, dstStat)) return + } + + const relative = symlinkPathsSync(srcpath, dstpath) + srcpath = relative.toDst + type = symlinkTypeSync(relative.toCwd, type) + const dir = path.dirname(dstpath) + const exists = fs.existsSync(dir) + if (exists) return fs.symlinkSync(srcpath, dstpath, type) + mkdirsSync(dir) + return fs.symlinkSync(srcpath, dstpath, type) +} + +module.exports = { + createSymlink: u(createSymlink), + createSymlinkSync +} diff --git a/node_modules/fs-extra/lib/esm.mjs b/node_modules/fs-extra/lib/esm.mjs new file mode 100644 index 0000000..27b7a1f --- /dev/null +++ b/node_modules/fs-extra/lib/esm.mjs @@ -0,0 +1,68 @@ +import _copy from './copy/index.js' +import _empty from './empty/index.js' +import _ensure from './ensure/index.js' +import _json from './json/index.js' +import _mkdirs from './mkdirs/index.js' +import _move from './move/index.js' +import _outputFile from './output-file/index.js' +import _pathExists from './path-exists/index.js' +import _remove from './remove/index.js' + +// NOTE: Only exports fs-extra's functions; fs functions must be imported from "node:fs" or "node:fs/promises" + +export const copy = _copy.copy +export const copySync = _copy.copySync +export const emptyDirSync = _empty.emptyDirSync +export const emptydirSync = _empty.emptydirSync +export const emptyDir = _empty.emptyDir +export const emptydir = _empty.emptydir +export const createFile = _ensure.createFile +export const createFileSync = _ensure.createFileSync +export const ensureFile = _ensure.ensureFile +export const ensureFileSync = _ensure.ensureFileSync +export const createLink = _ensure.createLink +export const createLinkSync = _ensure.createLinkSync +export const ensureLink = _ensure.ensureLink +export const ensureLinkSync = _ensure.ensureLinkSync +export const createSymlink = _ensure.createSymlink +export const createSymlinkSync = _ensure.createSymlinkSync +export const ensureSymlink = _ensure.ensureSymlink +export const ensureSymlinkSync = _ensure.ensureSymlinkSync +export const readJson = _json.readJson +export const readJSON = _json.readJSON +export const readJsonSync = _json.readJsonSync +export const readJSONSync = _json.readJSONSync +export const writeJson = _json.writeJson +export const writeJSON = _json.writeJSON +export const writeJsonSync = _json.writeJsonSync +export const writeJSONSync = _json.writeJSONSync +export const outputJson = _json.outputJson +export const outputJSON = _json.outputJSON +export const outputJsonSync = _json.outputJsonSync +export const outputJSONSync = _json.outputJSONSync +export const mkdirs = _mkdirs.mkdirs +export const mkdirsSync = _mkdirs.mkdirsSync +export const mkdirp = _mkdirs.mkdirp +export const mkdirpSync = _mkdirs.mkdirpSync +export const ensureDir = _mkdirs.ensureDir +export const ensureDirSync = _mkdirs.ensureDirSync +export const move = _move.move +export const moveSync = _move.moveSync +export const outputFile = _outputFile.outputFile +export const outputFileSync = _outputFile.outputFileSync +export const pathExists = _pathExists.pathExists +export const pathExistsSync = _pathExists.pathExistsSync +export const remove = _remove.remove +export const removeSync = _remove.removeSync + +export default { + ..._copy, + ..._empty, + ..._ensure, + ..._json, + ..._mkdirs, + ..._move, + ..._outputFile, + ..._pathExists, + ..._remove +} diff --git a/node_modules/fs-extra/lib/fs/index.js b/node_modules/fs-extra/lib/fs/index.js new file mode 100644 index 0000000..3c3ec51 --- /dev/null +++ b/node_modules/fs-extra/lib/fs/index.js @@ -0,0 +1,140 @@ +'use strict' +// This is adapted from https://github.com/normalize/mz +// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors +const u = require('universalify').fromCallback +const fs = require('graceful-fs') + +const api = [ + 'access', + 'appendFile', + 'chmod', + 'chown', + 'close', + 'copyFile', + 'fchmod', + 'fchown', + 'fdatasync', + 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'lchmod', + 'lchown', + 'link', + 'lstat', + 'mkdir', + 'mkdtemp', + 'open', + 'opendir', + 'readdir', + 'readFile', + 'readlink', + 'realpath', + 'rename', + 'rm', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'writeFile' +].filter(key => { + // Some commands are not available on some systems. Ex: + // fs.cp was added in Node.js v16.7.0 + // fs.lchown is not available on at least some Linux + return typeof fs[key] === 'function' +}) + +// Export cloned fs: +Object.assign(exports, fs) + +// Universalify async methods: +api.forEach(method => { + exports[method] = u(fs[method]) +}) + +// We differ from mz/fs in that we still ship the old, broken, fs.exists() +// since we are a drop-in replacement for the native module +exports.exists = function (filename, callback) { + if (typeof callback === 'function') { + return fs.exists(filename, callback) + } + return new Promise(resolve => { + return fs.exists(filename, resolve) + }) +} + +// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args + +exports.read = function (fd, buffer, offset, length, position, callback) { + if (typeof callback === 'function') { + return fs.read(fd, buffer, offset, length, position, callback) + } + return new Promise((resolve, reject) => { + fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => { + if (err) return reject(err) + resolve({ bytesRead, buffer }) + }) + }) +} + +// Function signature can be +// fs.write(fd, buffer[, offset[, length[, position]]], callback) +// OR +// fs.write(fd, string[, position[, encoding]], callback) +// We need to handle both cases, so we use ...args +exports.write = function (fd, buffer, ...args) { + if (typeof args[args.length - 1] === 'function') { + return fs.write(fd, buffer, ...args) + } + + return new Promise((resolve, reject) => { + fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => { + if (err) return reject(err) + resolve({ bytesWritten, buffer }) + }) + }) +} + +// Function signature is +// s.readv(fd, buffers[, position], callback) +// We need to handle the optional arg, so we use ...args +exports.readv = function (fd, buffers, ...args) { + if (typeof args[args.length - 1] === 'function') { + return fs.readv(fd, buffers, ...args) + } + + return new Promise((resolve, reject) => { + fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => { + if (err) return reject(err) + resolve({ bytesRead, buffers }) + }) + }) +} + +// Function signature is +// s.writev(fd, buffers[, position], callback) +// We need to handle the optional arg, so we use ...args +exports.writev = function (fd, buffers, ...args) { + if (typeof args[args.length - 1] === 'function') { + return fs.writev(fd, buffers, ...args) + } + + return new Promise((resolve, reject) => { + fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => { + if (err) return reject(err) + resolve({ bytesWritten, buffers }) + }) + }) +} + +// fs.realpath.native sometimes not available if fs is monkey-patched +if (typeof fs.realpath.native === 'function') { + exports.realpath.native = u(fs.realpath.native) +} else { + process.emitWarning( + 'fs.realpath.native is not a function. Is fs being monkey-patched?', + 'Warning', 'fs-extra-WARN0003' + ) +} diff --git a/node_modules/fs-extra/lib/index.js b/node_modules/fs-extra/lib/index.js new file mode 100644 index 0000000..da6711a --- /dev/null +++ b/node_modules/fs-extra/lib/index.js @@ -0,0 +1,16 @@ +'use strict' + +module.exports = { + // Export promiseified graceful-fs: + ...require('./fs'), + // Export extra methods: + ...require('./copy'), + ...require('./empty'), + ...require('./ensure'), + ...require('./json'), + ...require('./mkdirs'), + ...require('./move'), + ...require('./output-file'), + ...require('./path-exists'), + ...require('./remove') +} diff --git a/node_modules/fs-extra/lib/json/index.js b/node_modules/fs-extra/lib/json/index.js new file mode 100644 index 0000000..900126a --- /dev/null +++ b/node_modules/fs-extra/lib/json/index.js @@ -0,0 +1,16 @@ +'use strict' + +const u = require('universalify').fromPromise +const jsonFile = require('./jsonfile') + +jsonFile.outputJson = u(require('./output-json')) +jsonFile.outputJsonSync = require('./output-json-sync') +// aliases +jsonFile.outputJSON = jsonFile.outputJson +jsonFile.outputJSONSync = jsonFile.outputJsonSync +jsonFile.writeJSON = jsonFile.writeJson +jsonFile.writeJSONSync = jsonFile.writeJsonSync +jsonFile.readJSON = jsonFile.readJson +jsonFile.readJSONSync = jsonFile.readJsonSync + +module.exports = jsonFile diff --git a/node_modules/fs-extra/lib/json/jsonfile.js b/node_modules/fs-extra/lib/json/jsonfile.js new file mode 100644 index 0000000..f11d34d --- /dev/null +++ b/node_modules/fs-extra/lib/json/jsonfile.js @@ -0,0 +1,11 @@ +'use strict' + +const jsonFile = require('jsonfile') + +module.exports = { + // jsonfile exports + readJson: jsonFile.readFile, + readJsonSync: jsonFile.readFileSync, + writeJson: jsonFile.writeFile, + writeJsonSync: jsonFile.writeFileSync +} diff --git a/node_modules/fs-extra/lib/json/output-json-sync.js b/node_modules/fs-extra/lib/json/output-json-sync.js new file mode 100644 index 0000000..d4e564f --- /dev/null +++ b/node_modules/fs-extra/lib/json/output-json-sync.js @@ -0,0 +1,12 @@ +'use strict' + +const { stringify } = require('jsonfile/utils') +const { outputFileSync } = require('../output-file') + +function outputJsonSync (file, data, options) { + const str = stringify(data, options) + + outputFileSync(file, str, options) +} + +module.exports = outputJsonSync diff --git a/node_modules/fs-extra/lib/json/output-json.js b/node_modules/fs-extra/lib/json/output-json.js new file mode 100644 index 0000000..0afdeb6 --- /dev/null +++ b/node_modules/fs-extra/lib/json/output-json.js @@ -0,0 +1,12 @@ +'use strict' + +const { stringify } = require('jsonfile/utils') +const { outputFile } = require('../output-file') + +async function outputJson (file, data, options = {}) { + const str = stringify(data, options) + + await outputFile(file, str, options) +} + +module.exports = outputJson diff --git a/node_modules/fs-extra/lib/mkdirs/index.js b/node_modules/fs-extra/lib/mkdirs/index.js new file mode 100644 index 0000000..9edecee --- /dev/null +++ b/node_modules/fs-extra/lib/mkdirs/index.js @@ -0,0 +1,14 @@ +'use strict' +const u = require('universalify').fromPromise +const { makeDir: _makeDir, makeDirSync } = require('./make-dir') +const makeDir = u(_makeDir) + +module.exports = { + mkdirs: makeDir, + mkdirsSync: makeDirSync, + // alias + mkdirp: makeDir, + mkdirpSync: makeDirSync, + ensureDir: makeDir, + ensureDirSync: makeDirSync +} diff --git a/node_modules/fs-extra/lib/mkdirs/make-dir.js b/node_modules/fs-extra/lib/mkdirs/make-dir.js new file mode 100644 index 0000000..45ece64 --- /dev/null +++ b/node_modules/fs-extra/lib/mkdirs/make-dir.js @@ -0,0 +1,27 @@ +'use strict' +const fs = require('../fs') +const { checkPath } = require('./utils') + +const getMode = options => { + const defaults = { mode: 0o777 } + if (typeof options === 'number') return options + return ({ ...defaults, ...options }).mode +} + +module.exports.makeDir = async (dir, options) => { + checkPath(dir) + + return fs.mkdir(dir, { + mode: getMode(options), + recursive: true + }) +} + +module.exports.makeDirSync = (dir, options) => { + checkPath(dir) + + return fs.mkdirSync(dir, { + mode: getMode(options), + recursive: true + }) +} diff --git a/node_modules/fs-extra/lib/mkdirs/utils.js b/node_modules/fs-extra/lib/mkdirs/utils.js new file mode 100644 index 0000000..a4059ad --- /dev/null +++ b/node_modules/fs-extra/lib/mkdirs/utils.js @@ -0,0 +1,21 @@ +// Adapted from https://github.com/sindresorhus/make-dir +// Copyright (c) Sindre Sorhus (sindresorhus.com) +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +'use strict' +const path = require('path') + +// https://github.com/nodejs/node/issues/8987 +// https://github.com/libuv/libuv/pull/1088 +module.exports.checkPath = function checkPath (pth) { + if (process.platform === 'win32') { + const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, '')) + + if (pathHasInvalidWinCharacters) { + const error = new Error(`Path contains invalid characters: ${pth}`) + error.code = 'EINVAL' + throw error + } + } +} diff --git a/node_modules/fs-extra/lib/move/index.js b/node_modules/fs-extra/lib/move/index.js new file mode 100644 index 0000000..fcee73c --- /dev/null +++ b/node_modules/fs-extra/lib/move/index.js @@ -0,0 +1,7 @@ +'use strict' + +const u = require('universalify').fromCallback +module.exports = { + move: u(require('./move')), + moveSync: require('./move-sync') +} diff --git a/node_modules/fs-extra/lib/move/move-sync.js b/node_modules/fs-extra/lib/move/move-sync.js new file mode 100644 index 0000000..c456ab3 --- /dev/null +++ b/node_modules/fs-extra/lib/move/move-sync.js @@ -0,0 +1,55 @@ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const copySync = require('../copy').copySync +const removeSync = require('../remove').removeSync +const mkdirpSync = require('../mkdirs').mkdirpSync +const stat = require('../util/stat') + +function moveSync (src, dest, opts) { + opts = opts || {} + const overwrite = opts.overwrite || opts.clobber || false + + const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts) + stat.checkParentPathsSync(src, srcStat, dest, 'move') + if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest)) + return doRename(src, dest, overwrite, isChangingCase) +} + +function isParentRoot (dest) { + const parent = path.dirname(dest) + const parsedPath = path.parse(parent) + return parsedPath.root === parent +} + +function doRename (src, dest, overwrite, isChangingCase) { + if (isChangingCase) return rename(src, dest, overwrite) + if (overwrite) { + removeSync(dest) + return rename(src, dest, overwrite) + } + if (fs.existsSync(dest)) throw new Error('dest already exists.') + return rename(src, dest, overwrite) +} + +function rename (src, dest, overwrite) { + try { + fs.renameSync(src, dest) + } catch (err) { + if (err.code !== 'EXDEV') throw err + return moveAcrossDevice(src, dest, overwrite) + } +} + +function moveAcrossDevice (src, dest, overwrite) { + const opts = { + overwrite, + errorOnExist: true, + preserveTimestamps: true + } + copySync(src, dest, opts) + return removeSync(src) +} + +module.exports = moveSync diff --git a/node_modules/fs-extra/lib/move/move.js b/node_modules/fs-extra/lib/move/move.js new file mode 100644 index 0000000..5c4d74f --- /dev/null +++ b/node_modules/fs-extra/lib/move/move.js @@ -0,0 +1,76 @@ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const copy = require('../copy').copy +const remove = require('../remove').remove +const mkdirp = require('../mkdirs').mkdirp +const pathExists = require('../path-exists').pathExists +const stat = require('../util/stat') + +function move (src, dest, opts, cb) { + if (typeof opts === 'function') { + cb = opts + opts = {} + } + + opts = opts || {} + + const overwrite = opts.overwrite || opts.clobber || false + + stat.checkPaths(src, dest, 'move', opts, (err, stats) => { + if (err) return cb(err) + const { srcStat, isChangingCase = false } = stats + stat.checkParentPaths(src, srcStat, dest, 'move', err => { + if (err) return cb(err) + if (isParentRoot(dest)) return doRename(src, dest, overwrite, isChangingCase, cb) + mkdirp(path.dirname(dest), err => { + if (err) return cb(err) + return doRename(src, dest, overwrite, isChangingCase, cb) + }) + }) + }) +} + +function isParentRoot (dest) { + const parent = path.dirname(dest) + const parsedPath = path.parse(parent) + return parsedPath.root === parent +} + +function doRename (src, dest, overwrite, isChangingCase, cb) { + if (isChangingCase) return rename(src, dest, overwrite, cb) + if (overwrite) { + return remove(dest, err => { + if (err) return cb(err) + return rename(src, dest, overwrite, cb) + }) + } + pathExists(dest, (err, destExists) => { + if (err) return cb(err) + if (destExists) return cb(new Error('dest already exists.')) + return rename(src, dest, overwrite, cb) + }) +} + +function rename (src, dest, overwrite, cb) { + fs.rename(src, dest, err => { + if (!err) return cb() + if (err.code !== 'EXDEV') return cb(err) + return moveAcrossDevice(src, dest, overwrite, cb) + }) +} + +function moveAcrossDevice (src, dest, overwrite, cb) { + const opts = { + overwrite, + errorOnExist: true, + preserveTimestamps: true + } + copy(src, dest, opts, err => { + if (err) return cb(err) + return remove(src, cb) + }) +} + +module.exports = move diff --git a/node_modules/fs-extra/lib/output-file/index.js b/node_modules/fs-extra/lib/output-file/index.js new file mode 100644 index 0000000..92297ca --- /dev/null +++ b/node_modules/fs-extra/lib/output-file/index.js @@ -0,0 +1,40 @@ +'use strict' + +const u = require('universalify').fromCallback +const fs = require('graceful-fs') +const path = require('path') +const mkdir = require('../mkdirs') +const pathExists = require('../path-exists').pathExists + +function outputFile (file, data, encoding, callback) { + if (typeof encoding === 'function') { + callback = encoding + encoding = 'utf8' + } + + const dir = path.dirname(file) + pathExists(dir, (err, itDoes) => { + if (err) return callback(err) + if (itDoes) return fs.writeFile(file, data, encoding, callback) + + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + + fs.writeFile(file, data, encoding, callback) + }) + }) +} + +function outputFileSync (file, ...args) { + const dir = path.dirname(file) + if (fs.existsSync(dir)) { + return fs.writeFileSync(file, ...args) + } + mkdir.mkdirsSync(dir) + fs.writeFileSync(file, ...args) +} + +module.exports = { + outputFile: u(outputFile), + outputFileSync +} diff --git a/node_modules/fs-extra/lib/path-exists/index.js b/node_modules/fs-extra/lib/path-exists/index.js new file mode 100644 index 0000000..ddd9bc7 --- /dev/null +++ b/node_modules/fs-extra/lib/path-exists/index.js @@ -0,0 +1,12 @@ +'use strict' +const u = require('universalify').fromPromise +const fs = require('../fs') + +function pathExists (path) { + return fs.access(path).then(() => true).catch(() => false) +} + +module.exports = { + pathExists: u(pathExists), + pathExistsSync: fs.existsSync +} diff --git a/node_modules/fs-extra/lib/remove/index.js b/node_modules/fs-extra/lib/remove/index.js new file mode 100644 index 0000000..da746c7 --- /dev/null +++ b/node_modules/fs-extra/lib/remove/index.js @@ -0,0 +1,17 @@ +'use strict' + +const fs = require('graceful-fs') +const u = require('universalify').fromCallback + +function remove (path, callback) { + fs.rm(path, { recursive: true, force: true }, callback) +} + +function removeSync (path) { + fs.rmSync(path, { recursive: true, force: true }) +} + +module.exports = { + remove: u(remove), + removeSync +} diff --git a/node_modules/fs-extra/lib/util/stat.js b/node_modules/fs-extra/lib/util/stat.js new file mode 100644 index 0000000..0ed5aec --- /dev/null +++ b/node_modules/fs-extra/lib/util/stat.js @@ -0,0 +1,154 @@ +'use strict' + +const fs = require('../fs') +const path = require('path') +const util = require('util') + +function getStats (src, dest, opts) { + const statFunc = opts.dereference + ? (file) => fs.stat(file, { bigint: true }) + : (file) => fs.lstat(file, { bigint: true }) + return Promise.all([ + statFunc(src), + statFunc(dest).catch(err => { + if (err.code === 'ENOENT') return null + throw err + }) + ]).then(([srcStat, destStat]) => ({ srcStat, destStat })) +} + +function getStatsSync (src, dest, opts) { + let destStat + const statFunc = opts.dereference + ? (file) => fs.statSync(file, { bigint: true }) + : (file) => fs.lstatSync(file, { bigint: true }) + const srcStat = statFunc(src) + try { + destStat = statFunc(dest) + } catch (err) { + if (err.code === 'ENOENT') return { srcStat, destStat: null } + throw err + } + return { srcStat, destStat } +} + +function checkPaths (src, dest, funcName, opts, cb) { + util.callbackify(getStats)(src, dest, opts, (err, stats) => { + if (err) return cb(err) + const { srcStat, destStat } = stats + + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path.basename(src) + const destBaseName = path.basename(dest) + if (funcName === 'move' && + srcBaseName !== destBaseName && + srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return cb(null, { srcStat, destStat, isChangingCase: true }) + } + return cb(new Error('Source and destination must not be the same.')) + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)) + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)) + } + } + + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + return cb(new Error(errMsg(src, dest, funcName))) + } + return cb(null, { srcStat, destStat }) + }) +} + +function checkPathsSync (src, dest, funcName, opts) { + const { srcStat, destStat } = getStatsSync(src, dest, opts) + + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path.basename(src) + const destBaseName = path.basename(dest) + if (funcName === 'move' && + srcBaseName !== destBaseName && + srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return { srcStat, destStat, isChangingCase: true } + } + throw new Error('Source and destination must not be the same.') + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`) + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`) + } + } + + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + throw new Error(errMsg(src, dest, funcName)) + } + return { srcStat, destStat } +} + +// recursively check if dest parent is a subdirectory of src. +// It works for all file types including symlinks since it +// checks the src and dest inodes. It starts from the deepest +// parent and stops once it reaches the src parent or the root path. +function checkParentPaths (src, srcStat, dest, funcName, cb) { + const srcParent = path.resolve(path.dirname(src)) + const destParent = path.resolve(path.dirname(dest)) + if (destParent === srcParent || destParent === path.parse(destParent).root) return cb() + fs.stat(destParent, { bigint: true }, (err, destStat) => { + if (err) { + if (err.code === 'ENOENT') return cb() + return cb(err) + } + if (areIdentical(srcStat, destStat)) { + return cb(new Error(errMsg(src, dest, funcName))) + } + return checkParentPaths(src, srcStat, destParent, funcName, cb) + }) +} + +function checkParentPathsSync (src, srcStat, dest, funcName) { + const srcParent = path.resolve(path.dirname(src)) + const destParent = path.resolve(path.dirname(dest)) + if (destParent === srcParent || destParent === path.parse(destParent).root) return + let destStat + try { + destStat = fs.statSync(destParent, { bigint: true }) + } catch (err) { + if (err.code === 'ENOENT') return + throw err + } + if (areIdentical(srcStat, destStat)) { + throw new Error(errMsg(src, dest, funcName)) + } + return checkParentPathsSync(src, srcStat, destParent, funcName) +} + +function areIdentical (srcStat, destStat) { + return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev +} + +// return true if dest is a subdir of src, otherwise false. +// It only checks the path strings. +function isSrcSubdir (src, dest) { + const srcArr = path.resolve(src).split(path.sep).filter(i => i) + const destArr = path.resolve(dest).split(path.sep).filter(i => i) + return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true) +} + +function errMsg (src, dest, funcName) { + return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.` +} + +module.exports = { + checkPaths, + checkPathsSync, + checkParentPaths, + checkParentPathsSync, + isSrcSubdir, + areIdentical +} diff --git a/node_modules/fs-extra/lib/util/utimes.js b/node_modules/fs-extra/lib/util/utimes.js new file mode 100644 index 0000000..75395de --- /dev/null +++ b/node_modules/fs-extra/lib/util/utimes.js @@ -0,0 +1,26 @@ +'use strict' + +const fs = require('graceful-fs') + +function utimesMillis (path, atime, mtime, callback) { + // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback) + fs.open(path, 'r+', (err, fd) => { + if (err) return callback(err) + fs.futimes(fd, atime, mtime, futimesErr => { + fs.close(fd, closeErr => { + if (callback) callback(futimesErr || closeErr) + }) + }) + }) +} + +function utimesMillisSync (path, atime, mtime) { + const fd = fs.openSync(path, 'r+') + fs.futimesSync(fd, atime, mtime) + return fs.closeSync(fd) +} + +module.exports = { + utimesMillis, + utimesMillisSync +} diff --git a/node_modules/fs-extra/package.json b/node_modules/fs-extra/package.json new file mode 100644 index 0000000..c8bfb8f --- /dev/null +++ b/node_modules/fs-extra/package.json @@ -0,0 +1,71 @@ +{ + "name": "fs-extra", + "version": "11.1.1", + "description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.", + "engines": { + "node": ">=14.14" + }, + "homepage": "https://github.com/jprichardson/node-fs-extra", + "repository": { + "type": "git", + "url": "https://github.com/jprichardson/node-fs-extra" + }, + "keywords": [ + "fs", + "file", + "file system", + "copy", + "directory", + "extra", + "mkdirp", + "mkdir", + "mkdirs", + "recursive", + "json", + "read", + "write", + "extra", + "delete", + "remove", + "touch", + "create", + "text", + "output", + "move", + "promise" + ], + "author": "JP Richardson ", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "devDependencies": { + "klaw": "^2.1.1", + "klaw-sync": "^3.0.2", + "minimist": "^1.1.1", + "mocha": "^10.1.0", + "nyc": "^15.0.0", + "proxyquire": "^2.0.1", + "read-dir-files": "^0.1.1", + "standard": "^17.0.0" + }, + "main": "./lib/index.js", + "exports": { + ".": "./lib/index.js", + "./esm": "./lib/esm.mjs" + }, + "files": [ + "lib/", + "!lib/**/__tests__/" + ], + "scripts": { + "lint": "standard", + "test-find": "find ./lib/**/__tests__ -name *.test.js | xargs mocha", + "test": "npm run lint && npm run unit && npm run unit-esm", + "unit": "nyc node test.js", + "unit-esm": "node test.mjs" + }, + "sideEffects": false +} diff --git a/node_modules/glob-parent/CHANGELOG.md b/node_modules/glob-parent/CHANGELOG.md new file mode 100644 index 0000000..fb9de96 --- /dev/null +++ b/node_modules/glob-parent/CHANGELOG.md @@ -0,0 +1,110 @@ +### [5.1.2](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2) (2021-03-06) + + +### Bug Fixes + +* eliminate ReDoS ([#36](https://github.com/gulpjs/glob-parent/issues/36)) ([f923116](https://github.com/gulpjs/glob-parent/commit/f9231168b0041fea3f8f954b3cceb56269fc6366)) + +### [5.1.1](https://github.com/gulpjs/glob-parent/compare/v5.1.0...v5.1.1) (2021-01-27) + + +### Bug Fixes + +* unescape exclamation mark ([#26](https://github.com/gulpjs/glob-parent/issues/26)) ([a98874f](https://github.com/gulpjs/glob-parent/commit/a98874f1a59e407f4fb1beb0db4efa8392da60bb)) + +## [5.1.0](https://github.com/gulpjs/glob-parent/compare/v5.0.0...v5.1.0) (2021-01-27) + + +### Features + +* add `flipBackslashes` option to disable auto conversion of slashes (closes [#24](https://github.com/gulpjs/glob-parent/issues/24)) ([#25](https://github.com/gulpjs/glob-parent/issues/25)) ([eecf91d](https://github.com/gulpjs/glob-parent/commit/eecf91d5e3834ed78aee39c4eaaae654d76b87b3)) + +## [5.0.0](https://github.com/gulpjs/glob-parent/compare/v4.0.0...v5.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* Drop support for node <6 & bump dependencies + +### Miscellaneous Chores + +* Drop support for node <6 & bump dependencies ([896c0c0](https://github.com/gulpjs/glob-parent/commit/896c0c00b4e7362f60b96e7fc295ae929245255a)) + +## [4.0.0](https://github.com/gulpjs/glob-parent/compare/v3.1.0...v4.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* question marks are valid path characters on Windows so avoid flagging as a glob when alone +* Update is-glob dependency + +### Features + +* hoist regexps and strings for performance gains ([4a80667](https://github.com/gulpjs/glob-parent/commit/4a80667c69355c76a572a5892b0f133c8e1f457e)) +* question marks are valid path characters on Windows so avoid flagging as a glob when alone ([2a551dd](https://github.com/gulpjs/glob-parent/commit/2a551dd0dc3235e78bf3c94843d4107072d17841)) +* Update is-glob dependency ([e41fcd8](https://github.com/gulpjs/glob-parent/commit/e41fcd895d1f7bc617dba45c9d935a7949b9c281)) + +## [3.1.0](https://github.com/gulpjs/glob-parent/compare/v3.0.1...v3.1.0) (2021-01-27) + + +### Features + +* allow basic win32 backslash use ([272afa5](https://github.com/gulpjs/glob-parent/commit/272afa5fd070fc0f796386a5993d4ee4a846988b)) +* handle extglobs (parentheses) containing separators ([7db1bdb](https://github.com/gulpjs/glob-parent/commit/7db1bdb0756e55fd14619e8ce31aa31b17b117fd)) +* new approach to braces/brackets handling ([8269bd8](https://github.com/gulpjs/glob-parent/commit/8269bd89290d99fac9395a354fb56fdcdb80f0be)) +* pre-process braces/brackets sections ([9ef8a87](https://github.com/gulpjs/glob-parent/commit/9ef8a87f66b1a43d0591e7a8e4fc5a18415ee388)) +* preserve escaped brace/bracket at end of string ([8cfb0ba](https://github.com/gulpjs/glob-parent/commit/8cfb0ba84202d51571340dcbaf61b79d16a26c76)) + + +### Bug Fixes + +* trailing escaped square brackets ([99ec9fe](https://github.com/gulpjs/glob-parent/commit/99ec9fecc60ee488ded20a94dd4f18b4f55c4ccf)) + +### [3.0.1](https://github.com/gulpjs/glob-parent/compare/v3.0.0...v3.0.1) (2021-01-27) + + +### Features + +* use path-dirname ponyfill ([cdbea5f](https://github.com/gulpjs/glob-parent/commit/cdbea5f32a58a54e001a75ddd7c0fccd4776aacc)) + + +### Bug Fixes + +* unescape glob-escaped dirnames on output ([598c533](https://github.com/gulpjs/glob-parent/commit/598c533bdf49c1428bc063aa9b8db40c5a86b030)) + +## [3.0.0](https://github.com/gulpjs/glob-parent/compare/v2.0.0...v3.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* update is-glob dependency + +### Features + +* update is-glob dependency ([5c5f8ef](https://github.com/gulpjs/glob-parent/commit/5c5f8efcee362a8e7638cf8220666acd8784f6bd)) + +## [2.0.0](https://github.com/gulpjs/glob-parent/compare/v1.3.0...v2.0.0) (2021-01-27) + + +### Features + +* move up to dirname regardless of glob characters ([f97fb83](https://github.com/gulpjs/glob-parent/commit/f97fb83be2e0a9fc8d3b760e789d2ecadd6aa0c2)) + +## [1.3.0](https://github.com/gulpjs/glob-parent/compare/v1.2.0...v1.3.0) (2021-01-27) + +## [1.2.0](https://github.com/gulpjs/glob-parent/compare/v1.1.0...v1.2.0) (2021-01-27) + + +### Reverts + +* feat: make regex test strings smaller ([dc80fa9](https://github.com/gulpjs/glob-parent/commit/dc80fa9658dca20549cfeba44bbd37d5246fcce0)) + +## [1.1.0](https://github.com/gulpjs/glob-parent/compare/v1.0.0...v1.1.0) (2021-01-27) + + +### Features + +* make regex test strings smaller ([cd83220](https://github.com/gulpjs/glob-parent/commit/cd832208638f45169f986d80fcf66e401f35d233)) + +## 1.0.0 (2021-01-27) + diff --git a/node_modules/glob-parent/LICENSE b/node_modules/glob-parent/LICENSE new file mode 100644 index 0000000..63222d7 --- /dev/null +++ b/node_modules/glob-parent/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2015, 2019 Elan Shanker + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/glob-parent/README.md b/node_modules/glob-parent/README.md new file mode 100644 index 0000000..36a2793 --- /dev/null +++ b/node_modules/glob-parent/README.md @@ -0,0 +1,137 @@ +

    + + + +

    + +# glob-parent + +[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Azure Pipelines Build Status][azure-pipelines-image]][azure-pipelines-url] [![Travis Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url] + +Extract the non-magic parent path from a glob string. + +## Usage + +```js +var globParent = require('glob-parent'); + +globParent('path/to/*.js'); // 'path/to' +globParent('/root/path/to/*.js'); // '/root/path/to' +globParent('/*.js'); // '/' +globParent('*.js'); // '.' +globParent('**/*.js'); // '.' +globParent('path/{to,from}'); // 'path' +globParent('path/!(to|from)'); // 'path' +globParent('path/?(to|from)'); // 'path' +globParent('path/+(to|from)'); // 'path' +globParent('path/*(to|from)'); // 'path' +globParent('path/@(to|from)'); // 'path' +globParent('path/**/*'); // 'path' + +// if provided a non-glob path, returns the nearest dir +globParent('path/foo/bar.js'); // 'path/foo' +globParent('path/foo/'); // 'path/foo' +globParent('path/foo'); // 'path' (see issue #3 for details) +``` + +## API + +### `globParent(maybeGlobString, [options])` + +Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below. + +#### options + +```js +{ + // Disables the automatic conversion of slashes for Windows + flipBackslashes: true +} +``` + +## Escaping + +The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters: + +- `?` (question mark) unless used as a path segment alone +- `*` (asterisk) +- `|` (pipe) +- `(` (opening parenthesis) +- `)` (closing parenthesis) +- `{` (opening curly brace) +- `}` (closing curly brace) +- `[` (opening bracket) +- `]` (closing bracket) + +**Example** + +```js +globParent('foo/[bar]/') // 'foo' +globParent('foo/\\[bar]/') // 'foo/[bar]' +``` + +## Limitations + +### Braces & Brackets +This library attempts a quick and imperfect method of determining which path +parts have glob magic without fully parsing/lexing the pattern. There are some +advanced use cases that can trip it up, such as nested braces where the outer +pair is escaped and the inner one contains a path separator. If you find +yourself in the unlikely circumstance of being affected by this or need to +ensure higher-fidelity glob handling in your library, it is recommended that you +pre-process your input with [expand-braces] and/or [expand-brackets]. + +### Windows +Backslashes are not valid path separators for globs. If a path with backslashes +is provided anyway, for simple cases, glob-parent will replace the path +separator for you and return the non-glob parent path (now with +forward-slashes, which are still valid as Windows path separators). + +This cannot be used in conjunction with escape characters. + +```js +// BAD +globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)' + +// GOOD +globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)' +``` + +If you are using escape characters for a pattern without path parts (i.e. +relative to `cwd`), prefix with `./` to avoid confusing glob-parent. + +```js +// BAD +globParent('foo \\[bar]') // 'foo ' +globParent('foo \\[bar]*') // 'foo ' + +// GOOD +globParent('./foo \\[bar]') // 'foo [bar]' +globParent('./foo \\[bar]*') // '.' +``` + +## License + +ISC + +[expand-braces]: https://github.com/jonschlinkert/expand-braces +[expand-brackets]: https://github.com/jonschlinkert/expand-brackets + +[downloads-image]: https://img.shields.io/npm/dm/glob-parent.svg +[npm-url]: https://www.npmjs.com/package/glob-parent +[npm-image]: https://img.shields.io/npm/v/glob-parent.svg + +[azure-pipelines-url]: https://dev.azure.com/gulpjs/gulp/_build/latest?definitionId=2&branchName=master +[azure-pipelines-image]: https://dev.azure.com/gulpjs/gulp/_apis/build/status/glob-parent?branchName=master + +[travis-url]: https://travis-ci.org/gulpjs/glob-parent +[travis-image]: https://img.shields.io/travis/gulpjs/glob-parent.svg?label=travis-ci + +[appveyor-url]: https://ci.appveyor.com/project/gulpjs/glob-parent +[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/glob-parent.svg?label=appveyor + +[coveralls-url]: https://coveralls.io/r/gulpjs/glob-parent +[coveralls-image]: https://img.shields.io/coveralls/gulpjs/glob-parent/master.svg + +[gitter-url]: https://gitter.im/gulpjs/gulp +[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg diff --git a/node_modules/glob-parent/index.js b/node_modules/glob-parent/index.js new file mode 100644 index 0000000..09e257e --- /dev/null +++ b/node_modules/glob-parent/index.js @@ -0,0 +1,42 @@ +'use strict'; + +var isGlob = require('is-glob'); +var pathPosixDirname = require('path').posix.dirname; +var isWin32 = require('os').platform() === 'win32'; + +var slash = '/'; +var backslash = /\\/g; +var enclosure = /[\{\[].*[\}\]]$/; +var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; +var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + * @returns {string} + */ +module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + + // special case for strings ending in enclosure containing path separator + if (enclosure.test(str)) { + str += slash; + } + + // preserves full path in case of trailing path separator + str += 'a'; + + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); + + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; diff --git a/node_modules/glob-parent/package.json b/node_modules/glob-parent/package.json new file mode 100644 index 0000000..125c971 --- /dev/null +++ b/node_modules/glob-parent/package.json @@ -0,0 +1,48 @@ +{ + "name": "glob-parent", + "version": "5.1.2", + "description": "Extract the non-magic parent path from a glob string.", + "author": "Gulp Team (https://gulpjs.com/)", + "contributors": [ + "Elan Shanker (https://github.com/es128)", + "Blaine Bublitz " + ], + "repository": "gulpjs/glob-parent", + "license": "ISC", + "engines": { + "node": ">= 6" + }, + "main": "index.js", + "files": [ + "LICENSE", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "pretest": "npm run lint", + "test": "nyc mocha --async-only", + "azure-pipelines": "nyc mocha --async-only --reporter xunit -O output=test.xunit", + "coveralls": "nyc report --reporter=text-lcov | coveralls" + }, + "dependencies": { + "is-glob": "^4.0.1" + }, + "devDependencies": { + "coveralls": "^3.0.11", + "eslint": "^2.13.1", + "eslint-config-gulp": "^3.0.1", + "expect": "^1.20.2", + "mocha": "^6.0.2", + "nyc": "^13.3.0" + }, + "keywords": [ + "glob", + "parent", + "strip", + "path", + "dirname", + "directory", + "base", + "wildcard" + ] +} diff --git a/node_modules/graceful-fs/LICENSE b/node_modules/graceful-fs/LICENSE new file mode 100644 index 0000000..e906a25 --- /dev/null +++ b/node_modules/graceful-fs/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/graceful-fs/README.md b/node_modules/graceful-fs/README.md new file mode 100644 index 0000000..82d6e4d --- /dev/null +++ b/node_modules/graceful-fs/README.md @@ -0,0 +1,143 @@ +# graceful-fs + +graceful-fs functions as a drop-in replacement for the fs module, +making various improvements. + +The improvements are meant to normalize behavior across different +platforms and environments, and to make filesystem access more +resilient to errors. + +## Improvements over [fs module](https://nodejs.org/api/fs.html) + +* Queues up `open` and `readdir` calls, and retries them once + something closes if there is an EMFILE error from too many file + descriptors. +* fixes `lchmod` for Node versions prior to 0.6.2. +* implements `fs.lutimes` if possible. Otherwise it becomes a noop. +* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or + `lchown` if the user isn't root. +* makes `lchmod` and `lchown` become noops, if not available. +* retries reading a file if `read` results in EAGAIN error. + +On Windows, it retries renaming a file for up to one second if `EACCESS` +or `EPERM` error occurs, likely because antivirus software has locked +the directory. + +## USAGE + +```javascript +// use just like fs +var fs = require('graceful-fs') + +// now go and do stuff with it... +fs.readFile('some-file-or-whatever', (err, data) => { + // Do stuff here. +}) +``` + +## Sync methods + +This module cannot intercept or handle `EMFILE` or `ENFILE` errors from sync +methods. If you use sync methods which open file descriptors then you are +responsible for dealing with any errors. + +This is a known limitation, not a bug. + +## Global Patching + +If you want to patch the global fs module (or any other fs-like +module) you can do this: + +```javascript +// Make sure to read the caveat below. +var realFs = require('fs') +var gracefulFs = require('graceful-fs') +gracefulFs.gracefulify(realFs) +``` + +This should only ever be done at the top-level application layer, in +order to delay on EMFILE errors from any fs-using dependencies. You +should **not** do this in a library, because it can cause unexpected +delays in other parts of the program. + +## Changes + +This module is fairly stable at this point, and used by a lot of +things. That being said, because it implements a subtle behavior +change in a core part of the node API, even modest changes can be +extremely breaking, and the versioning is thus biased towards +bumping the major when in doubt. + +The main change between major versions has been switching between +providing a fully-patched `fs` module vs monkey-patching the node core +builtin, and the approach by which a non-monkey-patched `fs` was +created. + +The goal is to trade `EMFILE` errors for slower fs operations. So, if +you try to open a zillion files, rather than crashing, `open` +operations will be queued up and wait for something else to `close`. + +There are advantages to each approach. Monkey-patching the fs means +that no `EMFILE` errors can possibly occur anywhere in your +application, because everything is using the same core `fs` module, +which is patched. However, it can also obviously cause undesirable +side-effects, especially if the module is loaded multiple times. + +Implementing a separate-but-identical patched `fs` module is more +surgical (and doesn't run the risk of patching multiple times), but +also imposes the challenge of keeping in sync with the core module. + +The current approach loads the `fs` module, and then creates a +lookalike object that has all the same methods, except a few that are +patched. It is safe to use in all versions of Node from 0.8 through +7.0. + +### v4 + +* Do not monkey-patch the fs module. This module may now be used as a + drop-in dep, and users can opt into monkey-patching the fs builtin + if their app requires it. + +### v3 + +* Monkey-patch fs, because the eval approach no longer works on recent + node. +* fixed possible type-error throw if rename fails on windows +* verify that we *never* get EMFILE errors +* Ignore ENOSYS from chmod/chown +* clarify that graceful-fs must be used as a drop-in + +### v2.1.0 + +* Use eval rather than monkey-patching fs. +* readdir: Always sort the results +* win32: requeue a file if error has an OK status + +### v2.0 + +* A return to monkey patching +* wrap process.cwd + +### v1.1 + +* wrap readFile +* Wrap fs.writeFile. +* readdir protection +* Don't clobber the fs builtin +* Handle fs.read EAGAIN errors by trying again +* Expose the curOpen counter +* No-op lchown/lchmod if not implemented +* fs.rename patch only for win32 +* Patch fs.rename to handle AV software on Windows +* Close #4 Chown should not fail on einval or eperm if non-root +* Fix isaacs/fstream#1 Only wrap fs one time +* Fix #3 Start at 1024 max files, then back off on EMFILE +* lutimes that doens't blow up on Linux +* A full on-rewrite using a queue instead of just swallowing the EMFILE error +* Wrap Read/Write streams as well + +### 1.0 + +* Update engines for node 0.6 +* Be lstat-graceful on Windows +* first diff --git a/node_modules/graceful-fs/clone.js b/node_modules/graceful-fs/clone.js new file mode 100644 index 0000000..dff3cc8 --- /dev/null +++ b/node_modules/graceful-fs/clone.js @@ -0,0 +1,23 @@ +'use strict' + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} diff --git a/node_modules/graceful-fs/graceful-fs.js b/node_modules/graceful-fs/graceful-fs.js new file mode 100644 index 0000000..8d5b89e --- /dev/null +++ b/node_modules/graceful-fs/graceful-fs.js @@ -0,0 +1,448 @@ +var fs = require('fs') +var polyfills = require('./polyfills.js') +var legacy = require('./legacy-streams.js') +var clone = require('./clone.js') + +var util = require('util') + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + require('assert').equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} diff --git a/node_modules/graceful-fs/legacy-streams.js b/node_modules/graceful-fs/legacy-streams.js new file mode 100644 index 0000000..d617b50 --- /dev/null +++ b/node_modules/graceful-fs/legacy-streams.js @@ -0,0 +1,118 @@ +var Stream = require('stream').Stream + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} diff --git a/node_modules/graceful-fs/package.json b/node_modules/graceful-fs/package.json new file mode 100644 index 0000000..87babf0 --- /dev/null +++ b/node_modules/graceful-fs/package.json @@ -0,0 +1,53 @@ +{ + "name": "graceful-fs", + "description": "A drop-in replacement for fs, making various improvements.", + "version": "4.2.11", + "repository": { + "type": "git", + "url": "https://github.com/isaacs/node-graceful-fs" + }, + "main": "graceful-fs.js", + "directories": { + "test": "test" + }, + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags", + "test": "nyc --silent node test.js | tap -c -", + "posttest": "nyc report" + }, + "keywords": [ + "fs", + "module", + "reading", + "retry", + "retries", + "queue", + "error", + "errors", + "handling", + "EMFILE", + "EAGAIN", + "EINVAL", + "EPERM", + "EACCESS" + ], + "license": "ISC", + "devDependencies": { + "import-fresh": "^2.0.0", + "mkdirp": "^0.5.0", + "rimraf": "^2.2.8", + "tap": "^16.3.4" + }, + "files": [ + "fs.js", + "graceful-fs.js", + "legacy-streams.js", + "polyfills.js", + "clone.js" + ], + "tap": { + "reporter": "classic" + } +} diff --git a/node_modules/graceful-fs/polyfills.js b/node_modules/graceful-fs/polyfills.js new file mode 100644 index 0000000..453f1a9 --- /dev/null +++ b/node_modules/graceful-fs/polyfills.js @@ -0,0 +1,355 @@ +var constants = require('constants') + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} diff --git a/node_modules/is-binary-path/index.d.ts b/node_modules/is-binary-path/index.d.ts new file mode 100644 index 0000000..19dcd43 --- /dev/null +++ b/node_modules/is-binary-path/index.d.ts @@ -0,0 +1,17 @@ +/** +Check if a file path is a binary file. + +@example +``` +import isBinaryPath = require('is-binary-path'); + +isBinaryPath('source/unicorn.png'); +//=> true + +isBinaryPath('source/unicorn.txt'); +//=> false +``` +*/ +declare function isBinaryPath(filePath: string): boolean; + +export = isBinaryPath; diff --git a/node_modules/is-binary-path/index.js b/node_modules/is-binary-path/index.js new file mode 100644 index 0000000..ef7548c --- /dev/null +++ b/node_modules/is-binary-path/index.js @@ -0,0 +1,7 @@ +'use strict'; +const path = require('path'); +const binaryExtensions = require('binary-extensions'); + +const extensions = new Set(binaryExtensions); + +module.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase()); diff --git a/node_modules/is-binary-path/license b/node_modules/is-binary-path/license new file mode 100644 index 0000000..401b1c7 --- /dev/null +++ b/node_modules/is-binary-path/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/is-binary-path/package.json b/node_modules/is-binary-path/package.json new file mode 100644 index 0000000..a8d005a --- /dev/null +++ b/node_modules/is-binary-path/package.json @@ -0,0 +1,40 @@ +{ + "name": "is-binary-path", + "version": "2.1.0", + "description": "Check if a file path is a binary file", + "license": "MIT", + "repository": "sindresorhus/is-binary-path", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "binary", + "extensions", + "extension", + "file", + "path", + "check", + "detect", + "is" + ], + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/is-binary-path/readme.md b/node_modules/is-binary-path/readme.md new file mode 100644 index 0000000..b4ab025 --- /dev/null +++ b/node_modules/is-binary-path/readme.md @@ -0,0 +1,34 @@ +# is-binary-path [![Build Status](https://travis-ci.org/sindresorhus/is-binary-path.svg?branch=master)](https://travis-ci.org/sindresorhus/is-binary-path) + +> Check if a file path is a binary file + + +## Install + +``` +$ npm install is-binary-path +``` + + +## Usage + +```js +const isBinaryPath = require('is-binary-path'); + +isBinaryPath('source/unicorn.png'); +//=> true + +isBinaryPath('source/unicorn.txt'); +//=> false +``` + + +## Related + +- [binary-extensions](https://github.com/sindresorhus/binary-extensions) - List of binary file extensions +- [is-text-path](https://github.com/sindresorhus/is-text-path) - Check if a filepath is a text file + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com), [Paul Miller](https://paulmillr.com) diff --git a/node_modules/is-extglob/LICENSE b/node_modules/is-extglob/LICENSE new file mode 100644 index 0000000..842218c --- /dev/null +++ b/node_modules/is-extglob/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2016, Jon Schlinkert + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/is-extglob/README.md b/node_modules/is-extglob/README.md new file mode 100644 index 0000000..0416af5 --- /dev/null +++ b/node_modules/is-extglob/README.md @@ -0,0 +1,107 @@ +# is-extglob [![NPM version](https://img.shields.io/npm/v/is-extglob.svg?style=flat)](https://www.npmjs.com/package/is-extglob) [![NPM downloads](https://img.shields.io/npm/dm/is-extglob.svg?style=flat)](https://npmjs.org/package/is-extglob) [![Build Status](https://img.shields.io/travis/jonschlinkert/is-extglob.svg?style=flat)](https://travis-ci.org/jonschlinkert/is-extglob) + +> Returns true if a string has an extglob. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-extglob +``` + +## Usage + +```js +var isExtglob = require('is-extglob'); +``` + +**True** + +```js +isExtglob('?(abc)'); +isExtglob('@(abc)'); +isExtglob('!(abc)'); +isExtglob('*(abc)'); +isExtglob('+(abc)'); +``` + +**False** + +Escaped extglobs: + +```js +isExtglob('\\?(abc)'); +isExtglob('\\@(abc)'); +isExtglob('\\!(abc)'); +isExtglob('\\*(abc)'); +isExtglob('\\+(abc)'); +``` + +Everything else... + +```js +isExtglob('foo.js'); +isExtglob('!foo.js'); +isExtglob('*.js'); +isExtglob('**/abc.js'); +isExtglob('abc/*.js'); +isExtglob('abc/(aaa|bbb).js'); +isExtglob('abc/[a-z].js'); +isExtglob('abc/{a,b}.js'); +isExtglob('abc/?.js'); +isExtglob('abc.js'); +isExtglob('abc/def/ghi.js'); +``` + +## History + +**v2.0** + +Adds support for escaping. Escaped exglobs no longer return true. + +## About + +### Related projects + +* [has-glob](https://www.npmjs.com/package/has-glob): Returns `true` if an array has a glob pattern. | [homepage](https://github.com/jonschlinkert/has-glob "Returns `true` if an array has a glob pattern.") +* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") +* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") + +### Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +### Building docs + +_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ + +To generate the readme and API documentation with [verb](https://github.com/verbose/verb): + +```sh +$ npm install -g verb verb-generate-readme && verb +``` + +### Running tests + +Install dev dependencies: + +```sh +$ npm install -d && npm test +``` + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +### License + +Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT license](https://github.com/jonschlinkert/is-extglob/blob/master/LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.31, on October 12, 2016._ \ No newline at end of file diff --git a/node_modules/is-extglob/index.js b/node_modules/is-extglob/index.js new file mode 100644 index 0000000..c1d986f --- /dev/null +++ b/node_modules/is-extglob/index.js @@ -0,0 +1,20 @@ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ + +module.exports = function isExtglob(str) { + if (typeof str !== 'string' || str === '') { + return false; + } + + var match; + while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { + if (match[2]) return true; + str = str.slice(match.index + match[0].length); + } + + return false; +}; diff --git a/node_modules/is-extglob/package.json b/node_modules/is-extglob/package.json new file mode 100644 index 0000000..7a90836 --- /dev/null +++ b/node_modules/is-extglob/package.json @@ -0,0 +1,69 @@ +{ + "name": "is-extglob", + "description": "Returns true if a string has an extglob.", + "version": "2.1.1", + "homepage": "https://github.com/jonschlinkert/is-extglob", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "repository": "jonschlinkert/is-extglob", + "bugs": { + "url": "https://github.com/jonschlinkert/is-extglob/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "gulp-format-md": "^0.1.10", + "mocha": "^3.0.2" + }, + "keywords": [ + "bash", + "braces", + "check", + "exec", + "expression", + "extglob", + "glob", + "globbing", + "globstar", + "is", + "match", + "matches", + "pattern", + "regex", + "regular", + "string", + "test" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "related": { + "list": [ + "has-glob", + "is-glob", + "micromatch" + ] + }, + "reflinks": [ + "verb", + "verb-generate-readme" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/is-glob/LICENSE b/node_modules/is-glob/LICENSE new file mode 100644 index 0000000..3f2eca1 --- /dev/null +++ b/node_modules/is-glob/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/is-glob/README.md b/node_modules/is-glob/README.md new file mode 100644 index 0000000..740724b --- /dev/null +++ b/node_modules/is-glob/README.md @@ -0,0 +1,206 @@ +# is-glob [![NPM version](https://img.shields.io/npm/v/is-glob.svg?style=flat)](https://www.npmjs.com/package/is-glob) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-glob.svg?style=flat)](https://npmjs.org/package/is-glob) [![NPM total downloads](https://img.shields.io/npm/dt/is-glob.svg?style=flat)](https://npmjs.org/package/is-glob) [![Build Status](https://img.shields.io/github/workflow/status/micromatch/is-glob/dev)](https://github.com/micromatch/is-glob/actions) + +> Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-glob +``` + +You might also be interested in [is-valid-glob](https://github.com/jonschlinkert/is-valid-glob) and [has-glob](https://github.com/jonschlinkert/has-glob). + +## Usage + +```js +var isGlob = require('is-glob'); +``` + +### Default behavior + +**True** + +Patterns that have glob characters or regex patterns will return `true`: + +```js +isGlob('!foo.js'); +isGlob('*.js'); +isGlob('**/abc.js'); +isGlob('abc/*.js'); +isGlob('abc/(aaa|bbb).js'); +isGlob('abc/[a-z].js'); +isGlob('abc/{a,b}.js'); +//=> true +``` + +Extglobs + +```js +isGlob('abc/@(a).js'); +isGlob('abc/!(a).js'); +isGlob('abc/+(a).js'); +isGlob('abc/*(a).js'); +isGlob('abc/?(a).js'); +//=> true +``` + +**False** + +Escaped globs or extglobs return `false`: + +```js +isGlob('abc/\\@(a).js'); +isGlob('abc/\\!(a).js'); +isGlob('abc/\\+(a).js'); +isGlob('abc/\\*(a).js'); +isGlob('abc/\\?(a).js'); +isGlob('\\!foo.js'); +isGlob('\\*.js'); +isGlob('\\*\\*/abc.js'); +isGlob('abc/\\*.js'); +isGlob('abc/\\(aaa|bbb).js'); +isGlob('abc/\\[a-z].js'); +isGlob('abc/\\{a,b}.js'); +//=> false +``` + +Patterns that do not have glob patterns return `false`: + +```js +isGlob('abc.js'); +isGlob('abc/def/ghi.js'); +isGlob('foo.js'); +isGlob('abc/@.js'); +isGlob('abc/+.js'); +isGlob('abc/?.js'); +isGlob(); +isGlob(null); +//=> false +``` + +Arrays are also `false` (If you want to check if an array has a glob pattern, use [has-glob](https://github.com/jonschlinkert/has-glob)): + +```js +isGlob(['**/*.js']); +isGlob(['foo.js']); +//=> false +``` + +### Option strict + +When `options.strict === false` the behavior is less strict in determining if a pattern is a glob. Meaning that +some patterns that would return `false` may return `true`. This is done so that matching libraries like [micromatch](https://github.com/micromatch/micromatch) have a chance at determining if the pattern is a glob or not. + +**True** + +Patterns that have glob characters or regex patterns will return `true`: + +```js +isGlob('!foo.js', {strict: false}); +isGlob('*.js', {strict: false}); +isGlob('**/abc.js', {strict: false}); +isGlob('abc/*.js', {strict: false}); +isGlob('abc/(aaa|bbb).js', {strict: false}); +isGlob('abc/[a-z].js', {strict: false}); +isGlob('abc/{a,b}.js', {strict: false}); +//=> true +``` + +Extglobs + +```js +isGlob('abc/@(a).js', {strict: false}); +isGlob('abc/!(a).js', {strict: false}); +isGlob('abc/+(a).js', {strict: false}); +isGlob('abc/*(a).js', {strict: false}); +isGlob('abc/?(a).js', {strict: false}); +//=> true +``` + +**False** + +Escaped globs or extglobs return `false`: + +```js +isGlob('\\!foo.js', {strict: false}); +isGlob('\\*.js', {strict: false}); +isGlob('\\*\\*/abc.js', {strict: false}); +isGlob('abc/\\*.js', {strict: false}); +isGlob('abc/\\(aaa|bbb).js', {strict: false}); +isGlob('abc/\\[a-z].js', {strict: false}); +isGlob('abc/\\{a,b}.js', {strict: false}); +//=> false +``` + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Related projects + +You might also be interested in these projects: + +* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit") +* [base](https://www.npmjs.com/package/base): Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks | [homepage](https://github.com/node-base/base "Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks") +* [update](https://www.npmjs.com/package/update): Be scalable! Update is a new, open source developer framework and CLI for automating updates… [more](https://github.com/update/update) | [homepage](https://github.com/update/update "Be scalable! Update is a new, open source developer framework and CLI for automating updates of any kind in code projects.") +* [verb](https://www.npmjs.com/package/verb): Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… [more](https://github.com/verbose/verb) | [homepage](https://github.com/verbose/verb "Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used on hundreds of projects of all sizes to generate everything from API docs to readmes.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 47 | [jonschlinkert](https://github.com/jonschlinkert) | +| 5 | [doowb](https://github.com/doowb) | +| 1 | [phated](https://github.com/phated) | +| 1 | [danhper](https://github.com/danhper) | +| 1 | [paulmillr](https://github.com/paulmillr) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on March 27, 2019._ \ No newline at end of file diff --git a/node_modules/is-glob/index.js b/node_modules/is-glob/index.js new file mode 100644 index 0000000..620f563 --- /dev/null +++ b/node_modules/is-glob/index.js @@ -0,0 +1,150 @@ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +var isExtglob = require('is-extglob'); +var chars = { '{': '}', '(': ')', '[': ']'}; +var strictCheck = function(str) { + if (str[0] === '!') { + return true; + } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str.length) { + if (str[index] === '*') { + return true; + } + + if (str[index + 1] === '?' && /[\].+)]/.test(str[index])) { + return true; + } + + if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') { + if (closeSquareIndex < index) { + closeSquareIndex = str.indexOf(']', index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } + + if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') { + closeCurlyIndex = str.indexOf('}', index); + if (closeCurlyIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } + + if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') { + closeParenIndex = str.indexOf(')', index); + if (closeParenIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + + if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') { + if (pipeIndex < index) { + pipeIndex = str.indexOf('|', index); + } + if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') { + closeParenIndex = str.indexOf(')', pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str.indexOf('\\', pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } + + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; + +var relaxedCheck = function(str) { + if (str[0] === '!') { + return true; + } + var index = 0; + while (index < str.length) { + if (/[*?{}()[\]]/.test(str[index])) { + return true; + } + + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; + +module.exports = function isGlob(str, options) { + if (typeof str !== 'string' || str === '') { + return false; + } + + if (isExtglob(str)) { + return true; + } + + var check = strictCheck; + + // optionally relax check + if (options && options.strict === false) { + check = relaxedCheck; + } + + return check(str); +}; diff --git a/node_modules/is-glob/package.json b/node_modules/is-glob/package.json new file mode 100644 index 0000000..858af03 --- /dev/null +++ b/node_modules/is-glob/package.json @@ -0,0 +1,81 @@ +{ + "name": "is-glob", + "description": "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.", + "version": "4.0.3", + "homepage": "https://github.com/micromatch/is-glob", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Brian Woodward (https://twitter.com/doowb)", + "Daniel Perez (https://tuvistavie.com)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "micromatch/is-glob", + "bugs": { + "url": "https://github.com/micromatch/is-glob/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha && node benchmark.js" + }, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "devDependencies": { + "gulp-format-md": "^0.1.10", + "mocha": "^3.0.2" + }, + "keywords": [ + "bash", + "braces", + "check", + "exec", + "expression", + "extglob", + "glob", + "globbing", + "globstar", + "is", + "match", + "matches", + "pattern", + "regex", + "regular", + "string", + "test" + ], + "verb": { + "layout": "default", + "plugins": [ + "gulp-format-md" + ], + "related": { + "list": [ + "assemble", + "base", + "update", + "verb" + ] + }, + "reflinks": [ + "assemble", + "bach", + "base", + "composer", + "gulp", + "has-glob", + "is-valid-glob", + "micromatch", + "npm", + "scaffold", + "verb", + "vinyl" + ] + } +} diff --git a/node_modules/is-number/LICENSE b/node_modules/is-number/LICENSE new file mode 100644 index 0000000..9af4a67 --- /dev/null +++ b/node_modules/is-number/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/is-number/README.md b/node_modules/is-number/README.md new file mode 100644 index 0000000..eb8149e --- /dev/null +++ b/node_modules/is-number/README.md @@ -0,0 +1,187 @@ +# is-number [![NPM version](https://img.shields.io/npm/v/is-number.svg?style=flat)](https://www.npmjs.com/package/is-number) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![NPM total downloads](https://img.shields.io/npm/dt/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-number.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-number) + +> Returns true if the value is a finite number. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-number +``` + +## Why is this needed? + +In JavaScript, it's not always as straightforward as it should be to reliably check if a value is a number. It's common for devs to use `+`, `-`, or `Number()` to cast a string value to a number (for example, when values are returned from user input, regex matches, parsers, etc). But there are many non-intuitive edge cases that yield unexpected results: + +```js +console.log(+[]); //=> 0 +console.log(+''); //=> 0 +console.log(+' '); //=> 0 +console.log(typeof NaN); //=> 'number' +``` + +This library offers a performant way to smooth out edge cases like these. + +## Usage + +```js +const isNumber = require('is-number'); +``` + +See the [tests](./test.js) for more examples. + +### true + +```js +isNumber(5e3); // true +isNumber(0xff); // true +isNumber(-1.1); // true +isNumber(0); // true +isNumber(1); // true +isNumber(1.1); // true +isNumber(10); // true +isNumber(10.10); // true +isNumber(100); // true +isNumber('-1.1'); // true +isNumber('0'); // true +isNumber('012'); // true +isNumber('0xff'); // true +isNumber('1'); // true +isNumber('1.1'); // true +isNumber('10'); // true +isNumber('10.10'); // true +isNumber('100'); // true +isNumber('5e3'); // true +isNumber(parseInt('012')); // true +isNumber(parseFloat('012')); // true +``` + +### False + +Everything else is false, as you would expect: + +```js +isNumber(Infinity); // false +isNumber(NaN); // false +isNumber(null); // false +isNumber(undefined); // false +isNumber(''); // false +isNumber(' '); // false +isNumber('foo'); // false +isNumber([1]); // false +isNumber([]); // false +isNumber(function () {}); // false +isNumber({}); // false +``` + +## Release history + +### 7.0.0 + +* Refactor. Now uses `.isFinite` if it exists. +* Performance is about the same as v6.0 when the value is a string or number. But it's now 3x-4x faster when the value is not a string or number. + +### 6.0.0 + +* Optimizations, thanks to @benaadams. + +### 5.0.0 + +**Breaking changes** + +* removed support for `instanceof Number` and `instanceof String` + +## Benchmarks + +As with all benchmarks, take these with a grain of salt. See the [benchmarks](./benchmark/index.js) for more detail. + +``` +# all +v7.0 x 413,222 ops/sec ±2.02% (86 runs sampled) +v6.0 x 111,061 ops/sec ±1.29% (85 runs sampled) +parseFloat x 317,596 ops/sec ±1.36% (86 runs sampled) +fastest is 'v7.0' + +# string +v7.0 x 3,054,496 ops/sec ±1.05% (89 runs sampled) +v6.0 x 2,957,781 ops/sec ±0.98% (88 runs sampled) +parseFloat x 3,071,060 ops/sec ±1.13% (88 runs sampled) +fastest is 'parseFloat,v7.0' + +# number +v7.0 x 3,146,895 ops/sec ±0.89% (89 runs sampled) +v6.0 x 3,214,038 ops/sec ±1.07% (89 runs sampled) +parseFloat x 3,077,588 ops/sec ±1.07% (87 runs sampled) +fastest is 'v6.0' +``` + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Related projects + +You might also be interested in these projects: + +* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") +* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") +* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 49 | [jonschlinkert](https://github.com/jonschlinkert) | +| 5 | [charlike-old](https://github.com/charlike-old) | +| 1 | [benaadams](https://github.com/benaadams) | +| 1 | [realityking](https://github.com/realityking) | + +### Author + +**Jon Schlinkert** + +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 15, 2018._ \ No newline at end of file diff --git a/node_modules/is-number/index.js b/node_modules/is-number/index.js new file mode 100644 index 0000000..27f19b7 --- /dev/null +++ b/node_modules/is-number/index.js @@ -0,0 +1,18 @@ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +module.exports = function(num) { + if (typeof num === 'number') { + return num - num === 0; + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; +}; diff --git a/node_modules/is-number/package.json b/node_modules/is-number/package.json new file mode 100644 index 0000000..3715072 --- /dev/null +++ b/node_modules/is-number/package.json @@ -0,0 +1,82 @@ +{ + "name": "is-number", + "description": "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.", + "version": "7.0.0", + "homepage": "https://github.com/jonschlinkert/is-number", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Olsten Larck (https://i.am.charlike.online)", + "Rouven Weßling (www.rouvenwessling.de)" + ], + "repository": "jonschlinkert/is-number", + "bugs": { + "url": "https://github.com/jonschlinkert/is-number/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.12.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "ansi": "^0.3.1", + "benchmark": "^2.1.4", + "gulp-format-md": "^1.0.0", + "mocha": "^3.5.3" + }, + "keywords": [ + "cast", + "check", + "coerce", + "coercion", + "finite", + "integer", + "is", + "isnan", + "is-nan", + "is-num", + "is-number", + "isnumber", + "isfinite", + "istype", + "kind", + "math", + "nan", + "num", + "number", + "numeric", + "parseFloat", + "parseInt", + "test", + "type", + "typeof", + "value" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "related": { + "list": [ + "is-plain-object", + "is-primitive", + "isobject", + "kind-of" + ] + }, + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/jsonfile/CHANGELOG.md b/node_modules/jsonfile/CHANGELOG.md new file mode 100644 index 0000000..d772e43 --- /dev/null +++ b/node_modules/jsonfile/CHANGELOG.md @@ -0,0 +1,171 @@ +6.1.0 / 2020-10-31 +------------------ + +- Add `finalEOL` option to disable writing final EOL ([#115](https://github.com/jprichardson/node-jsonfile/issues/115), [#137](https://github.com/jprichardson/node-jsonfile/pull/137)) +- Update dependency ([#138](https://github.com/jprichardson/node-jsonfile/pull/138)) + +6.0.1 / 2020-03-07 +------------------ + +- Update dependency ([#130](https://github.com/jprichardson/node-jsonfile/pull/130)) +- Fix code style ([#129](https://github.com/jprichardson/node-jsonfile/pull/129)) + +6.0.0 / 2020-02-24 +------------------ + +- **BREAKING:** Drop support for Node 6 & 8 ([#128](https://github.com/jprichardson/node-jsonfile/pull/128)) +- **BREAKING:** Do not allow passing `null` as options to `readFile()` or `writeFile()` ([#128](https://github.com/jprichardson/node-jsonfile/pull/128)) +- Refactor internals ([#128](https://github.com/jprichardson/node-jsonfile/pull/128)) + +5.0.0 / 2018-09-08 +------------------ + +- **BREAKING:** Drop Node 4 support +- **BREAKING:** If no callback is passed to an asynchronous method, a promise is now returned ([#109](https://github.com/jprichardson/node-jsonfile/pull/109)) +- Cleanup docs + +4.0.0 / 2017-07-12 +------------------ + +- **BREAKING:** Remove global `spaces` option. +- **BREAKING:** Drop support for Node 0.10, 0.12, and io.js. +- Remove undocumented `passParsingErrors` option. +- Added `EOL` override option to `writeFile` when using `spaces`. [#89] + +3.0.1 / 2017-07-05 +------------------ + +- Fixed bug in `writeFile` when there was a serialization error & no callback was passed. In previous versions, an empty file would be written; now no file is written. + +3.0.0 / 2017-04-25 +------------------ + +- Changed behavior of `throws` option for `readFileSync`; now does not throw filesystem errors when `throws` is `false` + +2.4.0 / 2016-09-15 +------------------ +### Changed +- added optional support for `graceful-fs` [#62] + +2.3.1 / 2016-05-13 +------------------ +- fix to support BOM. [#45][#45] + +2.3.0 / 2016-04-16 +------------------ +- add `throws` to `readFile()`. See [#39][#39] +- add support for any arbitrary `fs` module. Useful with [mock-fs](https://www.npmjs.com/package/mock-fs) + +2.2.3 / 2015-10-14 +------------------ +- include file name in parse error. See: https://github.com/jprichardson/node-jsonfile/pull/34 + +2.2.2 / 2015-09-16 +------------------ +- split out tests into separate files +- fixed `throws` when set to `true` in `readFileSync()`. See: https://github.com/jprichardson/node-jsonfile/pull/33 + +2.2.1 / 2015-06-25 +------------------ +- fixed regression when passing in string as encoding for options in `writeFile()` and `writeFileSync()`. See: https://github.com/jprichardson/node-jsonfile/issues/28 + +2.2.0 / 2015-06-25 +------------------ +- added `options.spaces` to `writeFile()` and `writeFileSync()` + +2.1.2 / 2015-06-22 +------------------ +- fixed if passed `readFileSync(file, 'utf8')`. See: https://github.com/jprichardson/node-jsonfile/issues/25 + +2.1.1 / 2015-06-19 +------------------ +- fixed regressions if `null` is passed for options. See: https://github.com/jprichardson/node-jsonfile/issues/24 + +2.1.0 / 2015-06-19 +------------------ +- cleanup: JavaScript Standard Style, rename files, dropped terst for assert +- methods now support JSON revivers/replacers + +2.0.1 / 2015-05-24 +------------------ +- update license attribute https://github.com/jprichardson/node-jsonfile/pull/21 + +2.0.0 / 2014-07-28 +------------------ +* added `\n` to end of file on write. [#14](https://github.com/jprichardson/node-jsonfile/pull/14) +* added `options.throws` to `readFileSync()` +* dropped support for Node v0.8 + +1.2.0 / 2014-06-29 +------------------ +* removed semicolons +* bugfix: passed `options` to `fs.readFile` and `fs.readFileSync`. This technically changes behavior, but +changes it according to docs. [#12][#12] + +1.1.1 / 2013-11-11 +------------------ +* fixed catching of callback bug (ffissore / #5) + +1.1.0 / 2013-10-11 +------------------ +* added `options` param to methods, (seanodell / #4) + +1.0.1 / 2013-09-05 +------------------ +* removed `homepage` field from package.json to remove NPM warning + +1.0.0 / 2013-06-28 +------------------ +* added `.npmignore`, #1 +* changed spacing default from `4` to `2` to follow Node conventions + +0.0.1 / 2012-09-10 +------------------ +* Initial release. + +[#89]: https://github.com/jprichardson/node-jsonfile/pull/89 +[#45]: https://github.com/jprichardson/node-jsonfile/issues/45 "Reading of UTF8-encoded (w/ BOM) files fails" +[#44]: https://github.com/jprichardson/node-jsonfile/issues/44 "Extra characters in written file" +[#43]: https://github.com/jprichardson/node-jsonfile/issues/43 "Prettyfy json when written to file" +[#42]: https://github.com/jprichardson/node-jsonfile/pull/42 "Moved fs.readFileSync within the try/catch" +[#41]: https://github.com/jprichardson/node-jsonfile/issues/41 "Linux: Hidden file not working" +[#40]: https://github.com/jprichardson/node-jsonfile/issues/40 "autocreate folder doesn't work from Path-value" +[#39]: https://github.com/jprichardson/node-jsonfile/pull/39 "Add `throws` option for readFile (async)" +[#38]: https://github.com/jprichardson/node-jsonfile/pull/38 "Update README.md writeFile[Sync] signature" +[#37]: https://github.com/jprichardson/node-jsonfile/pull/37 "support append file" +[#36]: https://github.com/jprichardson/node-jsonfile/pull/36 "Add typescript definition file." +[#35]: https://github.com/jprichardson/node-jsonfile/pull/35 "Add typescript definition file." +[#34]: https://github.com/jprichardson/node-jsonfile/pull/34 "readFile JSON parse error includes filename" +[#33]: https://github.com/jprichardson/node-jsonfile/pull/33 "fix throw->throws typo in readFileSync()" +[#32]: https://github.com/jprichardson/node-jsonfile/issues/32 "readFile & readFileSync can possible have strip-comments as an option?" +[#31]: https://github.com/jprichardson/node-jsonfile/pull/31 "[Modify] Support string include is unicode escape string" +[#30]: https://github.com/jprichardson/node-jsonfile/issues/30 "How to use Jsonfile package in Meteor.js App?" +[#29]: https://github.com/jprichardson/node-jsonfile/issues/29 "writefile callback if no error?" +[#28]: https://github.com/jprichardson/node-jsonfile/issues/28 "writeFile options argument broken " +[#27]: https://github.com/jprichardson/node-jsonfile/pull/27 "Use svg instead of png to get better image quality" +[#26]: https://github.com/jprichardson/node-jsonfile/issues/26 "Breaking change to fs-extra" +[#25]: https://github.com/jprichardson/node-jsonfile/issues/25 "support string encoding param for read methods" +[#24]: https://github.com/jprichardson/node-jsonfile/issues/24 "readFile: Passing in null options with a callback throws an error" +[#23]: https://github.com/jprichardson/node-jsonfile/pull/23 "Add appendFile and appendFileSync" +[#22]: https://github.com/jprichardson/node-jsonfile/issues/22 "Default value for spaces in readme.md is outdated" +[#21]: https://github.com/jprichardson/node-jsonfile/pull/21 "Update license attribute" +[#20]: https://github.com/jprichardson/node-jsonfile/issues/20 "Add simple caching functionallity" +[#19]: https://github.com/jprichardson/node-jsonfile/pull/19 "Add appendFileSync method" +[#18]: https://github.com/jprichardson/node-jsonfile/issues/18 "Add updateFile and updateFileSync methods" +[#17]: https://github.com/jprichardson/node-jsonfile/issues/17 "seem read & write sync has sequentially problem" +[#16]: https://github.com/jprichardson/node-jsonfile/pull/16 "export spaces defaulted to null" +[#15]: https://github.com/jprichardson/node-jsonfile/issues/15 "`jsonfile.spaces` should default to `null`" +[#14]: https://github.com/jprichardson/node-jsonfile/pull/14 "Add EOL at EOF" +[#13]: https://github.com/jprichardson/node-jsonfile/issues/13 "Add a final newline" +[#12]: https://github.com/jprichardson/node-jsonfile/issues/12 "readFile doesn't accept options" +[#11]: https://github.com/jprichardson/node-jsonfile/pull/11 "Added try,catch to readFileSync" +[#10]: https://github.com/jprichardson/node-jsonfile/issues/10 "No output or error from writeFile" +[#9]: https://github.com/jprichardson/node-jsonfile/pull/9 "Change 'js' to 'jf' in example." +[#8]: https://github.com/jprichardson/node-jsonfile/pull/8 "Updated forgotten module.exports to me." +[#7]: https://github.com/jprichardson/node-jsonfile/pull/7 "Add file name in error message" +[#6]: https://github.com/jprichardson/node-jsonfile/pull/6 "Use graceful-fs when possible" +[#5]: https://github.com/jprichardson/node-jsonfile/pull/5 "Jsonfile doesn't behave nicely when used inside a test suite." +[#4]: https://github.com/jprichardson/node-jsonfile/pull/4 "Added options parameter to writeFile and writeFileSync" +[#3]: https://github.com/jprichardson/node-jsonfile/issues/3 "test2" +[#2]: https://github.com/jprichardson/node-jsonfile/issues/2 "homepage field must be a string url. Deleted." +[#1]: https://github.com/jprichardson/node-jsonfile/pull/1 "adding an `.npmignore` file" diff --git a/node_modules/jsonfile/LICENSE b/node_modules/jsonfile/LICENSE new file mode 100644 index 0000000..cb7e807 --- /dev/null +++ b/node_modules/jsonfile/LICENSE @@ -0,0 +1,15 @@ +(The MIT License) + +Copyright (c) 2012-2015, JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jsonfile/README.md b/node_modules/jsonfile/README.md new file mode 100644 index 0000000..910cde0 --- /dev/null +++ b/node_modules/jsonfile/README.md @@ -0,0 +1,230 @@ +Node.js - jsonfile +================ + +Easily read/write JSON files in Node.js. _Note: this module cannot be used in the browser._ + +[![npm Package](https://img.shields.io/npm/v/jsonfile.svg?style=flat-square)](https://www.npmjs.org/package/jsonfile) +[![build status](https://secure.travis-ci.org/jprichardson/node-jsonfile.svg)](http://travis-ci.org/jprichardson/node-jsonfile) +[![windows Build status](https://img.shields.io/appveyor/ci/jprichardson/node-jsonfile/master.svg?label=windows%20build)](https://ci.appveyor.com/project/jprichardson/node-jsonfile/branch/master) + +Standard JavaScript + +Why? +---- + +Writing `JSON.stringify()` and then `fs.writeFile()` and `JSON.parse()` with `fs.readFile()` enclosed in `try/catch` blocks became annoying. + + + +Installation +------------ + + npm install --save jsonfile + + + +API +--- + +* [`readFile(filename, [options], callback)`](#readfilefilename-options-callback) +* [`readFileSync(filename, [options])`](#readfilesyncfilename-options) +* [`writeFile(filename, obj, [options], callback)`](#writefilefilename-obj-options-callback) +* [`writeFileSync(filename, obj, [options])`](#writefilesyncfilename-obj-options) + +---- + +### readFile(filename, [options], callback) + +`options` (`object`, default `undefined`): Pass in any [`fs.readFile`](https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback) options or set `reviver` for a [JSON reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). + - `throws` (`boolean`, default: `true`). If `JSON.parse` throws an error, pass this error to the callback. + If `false`, returns `null` for the object. + + +```js +const jsonfile = require('jsonfile') +const file = '/tmp/data.json' +jsonfile.readFile(file, function (err, obj) { + if (err) console.error(err) + console.dir(obj) +}) +``` + +You can also use this method with promises. The `readFile` method will return a promise if you do not pass a callback function. + +```js +const jsonfile = require('jsonfile') +const file = '/tmp/data.json' +jsonfile.readFile(file) + .then(obj => console.dir(obj)) + .catch(error => console.error(error)) +``` + +---- + +### readFileSync(filename, [options]) + +`options` (`object`, default `undefined`): Pass in any [`fs.readFileSync`](https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options) options or set `reviver` for a [JSON reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). +- `throws` (`boolean`, default: `true`). If an error is encountered reading or parsing the file, throw the error. If `false`, returns `null` for the object. + +```js +const jsonfile = require('jsonfile') +const file = '/tmp/data.json' + +console.dir(jsonfile.readFileSync(file)) +``` + +---- + +### writeFile(filename, obj, [options], callback) + +`options`: Pass in any [`fs.writeFile`](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces`, or override `EOL` string or set `finalEOL` flag as `false` to not save the file with `EOL` at the end. + + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFile(file, obj, function (err) { + if (err) console.error(err) +}) +``` +Or use with promises as follows: + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFile(file, obj) + .then(res => { + console.log('Write complete') + }) + .catch(error => console.error(error)) +``` + + +**formatting with spaces:** + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFile(file, obj, { spaces: 2 }, function (err) { + if (err) console.error(err) +}) +``` + +**overriding EOL:** + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFile(file, obj, { spaces: 2, EOL: '\r\n' }, function (err) { + if (err) console.error(err) +}) +``` + + +**disabling the EOL at the end of file:** + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFile(file, obj, { spaces: 2, finalEOL: false }, function (err) { + if (err) console.log(err) +}) +``` + +**appending to an existing JSON file:** + +You can use `fs.writeFile` option `{ flag: 'a' }` to achieve this. + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/mayAlreadyExistedData.json' +const obj = { name: 'JP' } + +jsonfile.writeFile(file, obj, { flag: 'a' }, function (err) { + if (err) console.error(err) +}) +``` + +---- + +### writeFileSync(filename, obj, [options]) + +`options`: Pass in any [`fs.writeFileSync`](https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options) options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces`, or override `EOL` string or set `finalEOL` flag as `false` to not save the file with `EOL` at the end. + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFileSync(file, obj) +``` + +**formatting with spaces:** + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFileSync(file, obj, { spaces: 2 }) +``` + +**overriding EOL:** + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFileSync(file, obj, { spaces: 2, EOL: '\r\n' }) +``` + +**disabling the EOL at the end of file:** + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/data.json' +const obj = { name: 'JP' } + +jsonfile.writeFileSync(file, obj, { spaces: 2, finalEOL: false }) +``` + +**appending to an existing JSON file:** + +You can use `fs.writeFileSync` option `{ flag: 'a' }` to achieve this. + +```js +const jsonfile = require('jsonfile') + +const file = '/tmp/mayAlreadyExistedData.json' +const obj = { name: 'JP' } + +jsonfile.writeFileSync(file, obj, { flag: 'a' }) +``` + +License +------- + +(MIT License) + +Copyright 2012-2016, JP Richardson diff --git a/node_modules/jsonfile/index.js b/node_modules/jsonfile/index.js new file mode 100644 index 0000000..0582868 --- /dev/null +++ b/node_modules/jsonfile/index.js @@ -0,0 +1,88 @@ +let _fs +try { + _fs = require('graceful-fs') +} catch (_) { + _fs = require('fs') +} +const universalify = require('universalify') +const { stringify, stripBom } = require('./utils') + +async function _readFile (file, options = {}) { + if (typeof options === 'string') { + options = { encoding: options } + } + + const fs = options.fs || _fs + + const shouldThrow = 'throws' in options ? options.throws : true + + let data = await universalify.fromCallback(fs.readFile)(file, options) + + data = stripBom(data) + + let obj + try { + obj = JSON.parse(data, options ? options.reviver : null) + } catch (err) { + if (shouldThrow) { + err.message = `${file}: ${err.message}` + throw err + } else { + return null + } + } + + return obj +} + +const readFile = universalify.fromPromise(_readFile) + +function readFileSync (file, options = {}) { + if (typeof options === 'string') { + options = { encoding: options } + } + + const fs = options.fs || _fs + + const shouldThrow = 'throws' in options ? options.throws : true + + try { + let content = fs.readFileSync(file, options) + content = stripBom(content) + return JSON.parse(content, options.reviver) + } catch (err) { + if (shouldThrow) { + err.message = `${file}: ${err.message}` + throw err + } else { + return null + } + } +} + +async function _writeFile (file, obj, options = {}) { + const fs = options.fs || _fs + + const str = stringify(obj, options) + + await universalify.fromCallback(fs.writeFile)(file, str, options) +} + +const writeFile = universalify.fromPromise(_writeFile) + +function writeFileSync (file, obj, options = {}) { + const fs = options.fs || _fs + + const str = stringify(obj, options) + // not sure if fs.writeFileSync returns anything, but just in case + return fs.writeFileSync(file, str, options) +} + +const jsonfile = { + readFile, + readFileSync, + writeFile, + writeFileSync +} + +module.exports = jsonfile diff --git a/node_modules/jsonfile/package.json b/node_modules/jsonfile/package.json new file mode 100644 index 0000000..4d01eb1 --- /dev/null +++ b/node_modules/jsonfile/package.json @@ -0,0 +1,40 @@ +{ + "name": "jsonfile", + "version": "6.1.0", + "description": "Easily read/write JSON files.", + "repository": { + "type": "git", + "url": "git@github.com:jprichardson/node-jsonfile.git" + }, + "keywords": [ + "read", + "write", + "file", + "json", + "fs", + "fs-extra" + ], + "author": "JP Richardson ", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + }, + "devDependencies": { + "mocha": "^8.2.0", + "rimraf": "^2.4.0", + "standard": "^16.0.1" + }, + "main": "index.js", + "files": [ + "index.js", + "utils.js" + ], + "scripts": { + "lint": "standard", + "test": "npm run lint && npm run unit", + "unit": "mocha" + } +} diff --git a/node_modules/jsonfile/utils.js b/node_modules/jsonfile/utils.js new file mode 100644 index 0000000..b5ff48e --- /dev/null +++ b/node_modules/jsonfile/utils.js @@ -0,0 +1,14 @@ +function stringify (obj, { EOL = '\n', finalEOL = true, replacer = null, spaces } = {}) { + const EOF = finalEOL ? EOL : '' + const str = JSON.stringify(obj, replacer, spaces) + + return str.replace(/\n/g, EOL) + EOF +} + +function stripBom (content) { + // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified + if (Buffer.isBuffer(content)) content = content.toString('utf8') + return content.replace(/^\uFEFF/, '') +} + +module.exports = { stringify, stripBom } diff --git a/node_modules/merge2/LICENSE b/node_modules/merge2/LICENSE new file mode 100644 index 0000000..31dd9c7 --- /dev/null +++ b/node_modules/merge2/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2020 Teambition + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/merge2/README.md b/node_modules/merge2/README.md new file mode 100644 index 0000000..27f8eb9 --- /dev/null +++ b/node_modules/merge2/README.md @@ -0,0 +1,144 @@ +# merge2 + +Merge multiple streams into one stream in sequence or parallel. + +[![NPM version][npm-image]][npm-url] +[![Build Status][travis-image]][travis-url] +[![Downloads][downloads-image]][downloads-url] + +## Install + +Install with [npm](https://npmjs.org/package/merge2) + +```sh +npm install merge2 +``` + +## Usage + +```js +const gulp = require('gulp') +const merge2 = require('merge2') +const concat = require('gulp-concat') +const minifyHtml = require('gulp-minify-html') +const ngtemplate = require('gulp-ngtemplate') + +gulp.task('app-js', function () { + return merge2( + gulp.src('static/src/tpl/*.html') + .pipe(minifyHtml({empty: true})) + .pipe(ngtemplate({ + module: 'genTemplates', + standalone: true + }) + ), gulp.src([ + 'static/src/js/app.js', + 'static/src/js/locale_zh-cn.js', + 'static/src/js/router.js', + 'static/src/js/tools.js', + 'static/src/js/services.js', + 'static/src/js/filters.js', + 'static/src/js/directives.js', + 'static/src/js/controllers.js' + ]) + ) + .pipe(concat('app.js')) + .pipe(gulp.dest('static/dist/js/')) +}) +``` + +```js +const stream = merge2([stream1, stream2], stream3, {end: false}) +//... +stream.add(stream4, stream5) +//.. +stream.end() +``` + +```js +// equal to merge2([stream1, stream2], stream3) +const stream = merge2() +stream.add([stream1, stream2]) +stream.add(stream3) +``` + +```js +// merge order: +// 1. merge `stream1`; +// 2. merge `stream2` and `stream3` in parallel after `stream1` merged; +// 3. merge 'stream4' after `stream2` and `stream3` merged; +const stream = merge2(stream1, [stream2, stream3], stream4) + +// merge order: +// 1. merge `stream5` and `stream6` in parallel after `stream4` merged; +// 2. merge 'stream7' after `stream5` and `stream6` merged; +stream.add([stream5, stream6], stream7) +``` + +```js +// nest merge +// equal to merge2(stream1, stream2, stream6, stream3, [stream4, stream5]); +const streamA = merge2(stream1, stream2) +const streamB = merge2(stream3, [stream4, stream5]) +const stream = merge2(streamA, streamB) +streamA.add(stream6) +``` + +## API + +```js +const merge2 = require('merge2') +``` + +### merge2() + +### merge2(options) + +### merge2(stream1, stream2, ..., streamN) + +### merge2(stream1, stream2, ..., streamN, options) + +### merge2(stream1, [stream2, stream3, ...], streamN, options) + +return a duplex stream (mergedStream). streams in array will be merged in parallel. + +### mergedStream.add(stream) + +### mergedStream.add(stream1, [stream2, stream3, ...], ...) + +return the mergedStream. + +### mergedStream.on('queueDrain', function() {}) + +It will emit 'queueDrain' when all streams merged. If you set `end === false` in options, this event give you a notice that should add more streams to merge or end the mergedStream. + +#### stream + +*option* +Type: `Readable` or `Duplex` or `Transform` stream. + +#### options + +*option* +Type: `Object`. + +* **end** - `Boolean` - if `end === false` then mergedStream will not be auto ended, you should end by yourself. **Default:** `undefined` + +* **pipeError** - `Boolean` - if `pipeError === true` then mergedStream will emit `error` event from source streams. **Default:** `undefined` + +* **objectMode** - `Boolean` . **Default:** `true` + +`objectMode` and other options(`highWaterMark`, `defaultEncoding` ...) is same as Node.js `Stream`. + +## License + +MIT © [Teambition](https://www.teambition.com) + +[npm-url]: https://npmjs.org/package/merge2 +[npm-image]: http://img.shields.io/npm/v/merge2.svg + +[travis-url]: https://travis-ci.org/teambition/merge2 +[travis-image]: http://img.shields.io/travis/teambition/merge2.svg + +[downloads-url]: https://npmjs.org/package/merge2 +[downloads-image]: http://img.shields.io/npm/dm/merge2.svg?style=flat-square diff --git a/node_modules/merge2/index.js b/node_modules/merge2/index.js new file mode 100644 index 0000000..78a61ed --- /dev/null +++ b/node_modules/merge2/index.js @@ -0,0 +1,144 @@ +'use strict' +/* + * merge2 + * https://github.com/teambition/merge2 + * + * Copyright (c) 2014-2020 Teambition + * Licensed under the MIT license. + */ +const Stream = require('stream') +const PassThrough = Stream.PassThrough +const slice = Array.prototype.slice + +module.exports = merge2 + +function merge2 () { + const streamsQueue = [] + const args = slice.call(arguments) + let merging = false + let options = args[args.length - 1] + + if (options && !Array.isArray(options) && options.pipe == null) { + args.pop() + } else { + options = {} + } + + const doEnd = options.end !== false + const doPipeError = options.pipeError === true + if (options.objectMode == null) { + options.objectMode = true + } + if (options.highWaterMark == null) { + options.highWaterMark = 64 * 1024 + } + const mergedStream = PassThrough(options) + + function addStream () { + for (let i = 0, len = arguments.length; i < len; i++) { + streamsQueue.push(pauseStreams(arguments[i], options)) + } + mergeStream() + return this + } + + function mergeStream () { + if (merging) { + return + } + merging = true + + let streams = streamsQueue.shift() + if (!streams) { + process.nextTick(endStream) + return + } + if (!Array.isArray(streams)) { + streams = [streams] + } + + let pipesCount = streams.length + 1 + + function next () { + if (--pipesCount > 0) { + return + } + merging = false + mergeStream() + } + + function pipe (stream) { + function onend () { + stream.removeListener('merge2UnpipeEnd', onend) + stream.removeListener('end', onend) + if (doPipeError) { + stream.removeListener('error', onerror) + } + next() + } + function onerror (err) { + mergedStream.emit('error', err) + } + // skip ended stream + if (stream._readableState.endEmitted) { + return next() + } + + stream.on('merge2UnpipeEnd', onend) + stream.on('end', onend) + + if (doPipeError) { + stream.on('error', onerror) + } + + stream.pipe(mergedStream, { end: false }) + // compatible for old stream + stream.resume() + } + + for (let i = 0; i < streams.length; i++) { + pipe(streams[i]) + } + + next() + } + + function endStream () { + merging = false + // emit 'queueDrain' when all streams merged. + mergedStream.emit('queueDrain') + if (doEnd) { + mergedStream.end() + } + } + + mergedStream.setMaxListeners(0) + mergedStream.add = addStream + mergedStream.on('unpipe', function (stream) { + stream.emit('merge2UnpipeEnd') + }) + + if (args.length) { + addStream.apply(null, args) + } + return mergedStream +} + +// check and pause streams for pipe. +function pauseStreams (streams, options) { + if (!Array.isArray(streams)) { + // Backwards-compat with old-style streams + if (!streams._readableState && streams.pipe) { + streams = streams.pipe(PassThrough(options)) + } + if (!streams._readableState || !streams.pause || !streams.pipe) { + throw new Error('Only readable stream can be merged.') + } + streams.pause() + } else { + for (let i = 0, len = streams.length; i < len; i++) { + streams[i] = pauseStreams(streams[i], options) + } + } + return streams +} diff --git a/node_modules/merge2/package.json b/node_modules/merge2/package.json new file mode 100644 index 0000000..7777307 --- /dev/null +++ b/node_modules/merge2/package.json @@ -0,0 +1,43 @@ +{ + "name": "merge2", + "description": "Merge multiple streams into one stream in sequence or parallel.", + "authors": [ + "Yan Qing " + ], + "license": "MIT", + "version": "1.4.1", + "main": "./index.js", + "repository": { + "type": "git", + "url": "git@github.com:teambition/merge2.git" + }, + "homepage": "https://github.com/teambition/merge2", + "keywords": [ + "merge2", + "multiple", + "sequence", + "parallel", + "merge", + "stream", + "merge stream", + "sync" + ], + "engines": { + "node": ">= 8" + }, + "dependencies": {}, + "devDependencies": { + "standard": "^14.3.4", + "through2": "^3.0.1", + "thunks": "^4.9.6", + "tman": "^1.10.0", + "to-through": "^2.0.0" + }, + "scripts": { + "test": "standard && tman" + }, + "files": [ + "README.md", + "index.js" + ] +} diff --git a/node_modules/micromatch/LICENSE b/node_modules/micromatch/LICENSE new file mode 100644 index 0000000..9af4a67 --- /dev/null +++ b/node_modules/micromatch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/micromatch/README.md b/node_modules/micromatch/README.md new file mode 100644 index 0000000..fd56336 --- /dev/null +++ b/node_modules/micromatch/README.md @@ -0,0 +1,1011 @@ +# micromatch [![NPM version](https://img.shields.io/npm/v/micromatch.svg?style=flat)](https://www.npmjs.com/package/micromatch) [![NPM monthly downloads](https://img.shields.io/npm/dm/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![NPM total downloads](https://img.shields.io/npm/dt/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![Tests](https://github.com/micromatch/micromatch/actions/workflows/test.yml/badge.svg)](https://github.com/micromatch/micromatch/actions/workflows/test.yml) + +> Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Table of Contents + +
    +Details + +- [Install](#install) +- [Quickstart](#quickstart) +- [Why use micromatch?](#why-use-micromatch) + * [Matching features](#matching-features) +- [Switching to micromatch](#switching-to-micromatch) + * [From minimatch](#from-minimatch) + * [From multimatch](#from-multimatch) +- [API](#api) +- [Options](#options) +- [Options Examples](#options-examples) + * [options.basename](#optionsbasename) + * [options.bash](#optionsbash) + * [options.expandRange](#optionsexpandrange) + * [options.format](#optionsformat) + * [options.ignore](#optionsignore) + * [options.matchBase](#optionsmatchbase) + * [options.noextglob](#optionsnoextglob) + * [options.nonegate](#optionsnonegate) + * [options.noglobstar](#optionsnoglobstar) + * [options.nonull](#optionsnonull) + * [options.nullglob](#optionsnullglob) + * [options.onIgnore](#optionsonignore) + * [options.onMatch](#optionsonmatch) + * [options.onResult](#optionsonresult) + * [options.posixSlashes](#optionsposixslashes) + * [options.unescape](#optionsunescape) +- [Extended globbing](#extended-globbing) + * [Extglobs](#extglobs) + * [Braces](#braces) + * [Regex character classes](#regex-character-classes) + * [Regex groups](#regex-groups) + * [POSIX bracket expressions](#posix-bracket-expressions) +- [Notes](#notes) + * [Bash 4.3 parity](#bash-43-parity) + * [Backslashes](#backslashes) +- [Benchmarks](#benchmarks) + * [Running benchmarks](#running-benchmarks) + * [Latest results](#latest-results) +- [Contributing](#contributing) +- [About](#about) + +
    + +## Install + +Install with [npm](https://www.npmjs.com/) (requires [Node.js](https://nodejs.org/en/) >=8.6): + +```sh +$ npm install --save micromatch +``` + +## Quickstart + +```js +const micromatch = require('micromatch'); +// micromatch(list, patterns[, options]); +``` + +The [main export](#micromatch) takes a list of strings and one or more glob patterns: + +```js +console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['f*', 'b*'])) //=> ['foo', 'bar', 'baz'] +console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['*', '!b*'])) //=> ['foo', 'qux'] +``` + +Use [.isMatch()](#ismatch) to for boolean matching: + +```js +console.log(micromatch.isMatch('foo', 'f*')) //=> true +console.log(micromatch.isMatch('foo', ['b*', 'f*'])) //=> true +``` + +[Switching](#switching-to-micromatch) from minimatch and multimatch is easy! + +
    + +## Why use micromatch? + +> micromatch is a [replacement](#switching-to-micromatch) for minimatch and multimatch + +* Supports all of the same matching features as [minimatch](https://github.com/isaacs/minimatch) and [multimatch](https://github.com/sindresorhus/multimatch) +* More complete support for the Bash 4.3 specification than minimatch and multimatch. Micromatch passes _all of the spec tests_ from bash, including some that bash still fails. +* **Fast & Performant** - Loads in about 5ms and performs [fast matches](#benchmarks). +* **Glob matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories +* **[Advanced globbing](#extended-globbing)** - Supports [extglobs](#extglobs), [braces](#braces-1), and [POSIX brackets](#posix-bracket-expressions), and support for escaping special characters with `\` or quotes. +* **Accurate** - Covers more scenarios [than minimatch](https://github.com/yarnpkg/yarn/pull/3339) +* **Well tested** - More than 5,000 [test assertions](./test) +* **Windows support** - More reliable windows support than minimatch and multimatch. +* **[Safe](https://github.com/micromatch/braces#braces-is-safe)** - Micromatch is not subject to DoS with brace patterns like minimatch and multimatch. + +### Matching features + +* Support for multiple glob patterns (no need for wrappers like multimatch) +* Wildcards (`**`, `*.js`) +* Negation (`'!a/*.js'`, `'*!(b).js'`) +* [extglobs](#extglobs) (`+(x|y)`, `!(a|b)`) +* [POSIX character classes](#posix-bracket-expressions) (`[[:alpha:][:digit:]]`) +* [brace expansion](https://github.com/micromatch/braces) (`foo/{1..5}.md`, `bar/{a,b,c}.js`) +* regex character classes (`foo-[1-5].js`) +* regex logical "or" (`foo/(abc|xyz).js`) + +You can mix and match these features to create whatever patterns you need! + +## Switching to micromatch + +_(There is one notable difference between micromatch and minimatch in regards to how backslashes are handled. See [the notes about backslashes](#backslashes) for more information.)_ + +### From minimatch + +Use [micromatch.isMatch()](#ismatch) instead of `minimatch()`: + +```js +console.log(micromatch.isMatch('foo', 'b*')); //=> false +``` + +Use [micromatch.match()](#match) instead of `minimatch.match()`: + +```js +console.log(micromatch.match(['foo', 'bar'], 'b*')); //=> 'bar' +``` + +### From multimatch + +Same signature: + +```js +console.log(micromatch(['foo', 'bar', 'baz'], ['f*', '*z'])); //=> ['foo', 'baz'] +``` + +## API + +**Params** + +* `list` **{String|Array}**: List of strings to match. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) +* `returns` **{Array}**: Returns an array of matches + +**Example** + +```js +const mm = require('micromatch'); +// mm(list, patterns[, options]); + +console.log(mm(['a.js', 'a.txt'], ['*.js'])); +//=> [ 'a.js' ] +``` + +### [.matcher](index.js#L104) + +Returns a matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match. + +**Params** + +* `pattern` **{String}**: Glob pattern +* `options` **{Object}** +* `returns` **{Function}**: Returns a matcher function. + +**Example** + +```js +const mm = require('micromatch'); +// mm.matcher(pattern[, options]); + +const isMatch = mm.matcher('*.!(*a)'); +console.log(isMatch('a.a')); //=> false +console.log(isMatch('a.b')); //=> true +``` + +### [.isMatch](index.js#L123) + +Returns true if **any** of the given glob `patterns` match the specified `string`. + +**Params** + +* `str` **{String}**: The string to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `[options]` **{Object}**: See available [options](#options). +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.isMatch(string, patterns[, options]); + +console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true +console.log(mm.isMatch('a.a', 'b.*')); //=> false +``` + +### [.not](index.js#L148) + +Returns a list of strings that _**do not match any**_ of the given `patterns`. + +**Params** + +* `list` **{Array}**: Array of strings to match. +* `patterns` **{String|Array}**: One or more glob pattern to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Array}**: Returns an array of strings that **do not match** the given patterns. + +**Example** + +```js +const mm = require('micromatch'); +// mm.not(list, patterns[, options]); + +console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); +//=> ['b.b', 'c.c'] +``` + +### [.contains](index.js#L188) + +Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string. + +**Params** + +* `str` **{String}**: The string to match. +* `patterns` **{String|Array}**: Glob pattern to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any of the patterns matches any part of `str`. + +**Example** + +```js +var mm = require('micromatch'); +// mm.contains(string, pattern[, options]); + +console.log(mm.contains('aa/bb/cc', '*b')); +//=> true +console.log(mm.contains('aa/bb/cc', '*d')); +//=> false +``` + +### [.matchKeys](index.js#L230) + +Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead. + +**Params** + +* `object` **{Object}**: The object with keys to filter. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Object}**: Returns an object with only keys that match the given patterns. + +**Example** + +```js +const mm = require('micromatch'); +// mm.matchKeys(object, patterns[, options]); + +const obj = { aa: 'a', ab: 'b', ac: 'c' }; +console.log(mm.matchKeys(obj, '*b')); +//=> { ab: 'b' } +``` + +### [.some](index.js#L259) + +Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + +**Params** + +* `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any `patterns` matches any of the strings in `list` + +**Example** + +```js +const mm = require('micromatch'); +// mm.some(list, patterns[, options]); + +console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); +// true +console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); +// false +``` + +### [.every](index.js#L295) + +Returns true if every string in the given `list` matches any of the given glob `patterns`. + +**Params** + +* `list` **{String|Array}**: The string or array of strings to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if all `patterns` matches all of the strings in `list` + +**Example** + +```js +const mm = require('micromatch'); +// mm.every(list, patterns[, options]); + +console.log(mm.every('foo.js', ['foo.js'])); +// true +console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); +// true +console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); +// false +console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); +// false +``` + +### [.all](index.js#L334) + +Returns true if **all** of the given `patterns` match the specified string. + +**Params** + +* `str` **{String|Array}**: The string to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.all(string, patterns[, options]); + +console.log(mm.all('foo.js', ['foo.js'])); +// true + +console.log(mm.all('foo.js', ['*.js', '!foo.js'])); +// false + +console.log(mm.all('foo.js', ['*.js', 'foo.js'])); +// true + +console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); +// true +``` + +### [.capture](index.js#L361) + +Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match. + +**Params** + +* `glob` **{String}**: Glob pattern to use for matching. +* `input` **{String}**: String to match +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Array|null}**: Returns an array of captures if the input matches the glob pattern, otherwise `null`. + +**Example** + +```js +const mm = require('micromatch'); +// mm.capture(pattern, string[, options]); + +console.log(mm.capture('test/*.js', 'test/foo.js')); +//=> ['foo'] +console.log(mm.capture('test/*.js', 'foo/bar.css')); +//=> null +``` + +### [.makeRe](index.js#L387) + +Create a regular expression from the given glob `pattern`. + +**Params** + +* `pattern` **{String}**: A glob pattern to convert to regex. +* `options` **{Object}** +* `returns` **{RegExp}**: Returns a regex created from the given pattern. + +**Example** + +```js +const mm = require('micromatch'); +// mm.makeRe(pattern[, options]); + +console.log(mm.makeRe('*.js')); +//=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ +``` + +### [.scan](index.js#L403) + +Scan a glob pattern to separate the pattern into segments. Used by the [split](#split) method. + +**Params** + +* `pattern` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with + +**Example** + +```js +const mm = require('micromatch'); +const state = mm.scan(pattern[, options]); +``` + +### [.parse](index.js#L419) + +Parse a glob pattern to create the source string for a regular expression. + +**Params** + +* `glob` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with useful properties and output to be used as regex source string. + +**Example** + +```js +const mm = require('micromatch'); +const state = mm.parse(pattern[, options]); +``` + +### [.braces](index.js#L446) + +Process the given brace `pattern`. + +**Params** + +* `pattern` **{String}**: String with brace pattern to process. +* `options` **{Object}**: Any [options](#options) to change how expansion is performed. See the [braces](https://github.com/micromatch/braces) library for all available options. +* `returns` **{Array}** + +**Example** + +```js +const { braces } = require('micromatch'); +console.log(braces('foo/{a,b,c}/bar')); +//=> [ 'foo/(a|b|c)/bar' ] + +console.log(braces('foo/{a,b,c}/bar', { expand: true })); +//=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] +``` + +## Options + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | +| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). | +| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. | +| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). | +| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` | +| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. | +| `dot` | `boolean` | `false` | Match dotfiles. Otherwise dotfiles are ignored unless a `.` is explicitly defined in the pattern. | +| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. This option is overridden by the `expandBrace` option. | +| `failglob` | `boolean` | `false` | Similar to the `failglob` behavior in Bash, throws an error when no matches are found. Based on the bash option of the same name. | +| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. | +| `flags` | `boolean` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. | +| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. | +| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. | +| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. | +| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. | +| `lookbehinds` | `boolean` | `true` | Support regex positive and negative lookbehinds. Note that you must be using Node 8.1.10 or higher to enable regex lookbehinds. | +| `matchBase` | `boolean` | `false` | Alias for `basename` | +| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. | +| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. | +| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. | +| `nocase` | `boolean` | `false` | Perform case-insensitive matching. Equivalent to the regex `i` flag. Note that this option is ignored when the `flags` option is defined. | +| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. | +| `noext` | `boolean` | `false` | Alias for `noextglob` | +| `noextglob` | `boolean` | `false` | Disable support for matching with [extglobs](#extglobs) (like `+(a\|b)`) | +| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) | +| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` | +| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. | +| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. | +| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. | +| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. | +| `posix` | `boolean` | `false` | Support [POSIX character classes](#posix-bracket-expressions) ("posix brackets"). | +| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself | +| `prepend` | `string` | `undefined` | String to prepend to the generated regex used for matching. | +| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). | +| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. | +| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. | +| `unescape` | `boolean` | `undefined` | Remove preceding backslashes from escaped glob characters before creating the regular expression to perform matches. | +| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatitibility. | + +## Options Examples + +### options.basename + +Allow glob patterns without slashes to match a file path based on its basename. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `matchBase`. + +**Type**: `Boolean` + +**Default**: `false` + +**Example** + +```js +micromatch(['a/b.js', 'a/c.md'], '*.js'); +//=> [] + +micromatch(['a/b.js', 'a/c.md'], '*.js', { basename: true }); +//=> ['a/b.js'] +``` + +### options.bash + +Enabled by default, this option enforces bash-like behavior with stars immediately following a bracket expression. Bash bracket expressions are similar to regex character classes, but unlike regex, a star following a bracket expression **does not repeat the bracketed characters**. Instead, the star is treated the same as any other star. + +**Type**: `Boolean` + +**Default**: `true` + +**Example** + +```js +const files = ['abc', 'ajz']; +console.log(micromatch(files, '[a-c]*')); +//=> ['abc', 'ajz'] + +console.log(micromatch(files, '[a-c]*', { bash: false })); +``` + +### options.expandRange + +**Type**: `function` + +**Default**: `undefined` + +Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need. + +**Example** + +The following example shows how to create a glob that matches a numeric folder name between `01` and `25`, with leading zeros. + +```js +const fill = require('fill-range'); +const regex = micromatch.makeRe('foo/{01..25}/bar', { + expandRange(a, b) { + return `(${fill(a, b, { toRegex: true })})`; + } +}); + +console.log(regex) +//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/ + +console.log(regex.test('foo/00/bar')) // false +console.log(regex.test('foo/01/bar')) // true +console.log(regex.test('foo/10/bar')) // true +console.log(regex.test('foo/22/bar')) // true +console.log(regex.test('foo/25/bar')) // true +console.log(regex.test('foo/26/bar')) // false +``` + +### options.format + +**Type**: `function` + +**Default**: `undefined` + +Custom function for formatting strings before they're matched. + +**Example** + +```js +// strip leading './' from strings +const format = str => str.replace(/^\.\//, ''); +const isMatch = picomatch('foo/*.js', { format }); +console.log(isMatch('./foo/bar.js')) //=> true +``` + +### options.ignore + +String or array of glob patterns to match files to ignore. + +**Type**: `String|Array` + +**Default**: `undefined` + +```js +const isMatch = micromatch.matcher('*', { ignore: 'f*' }); +console.log(isMatch('foo')) //=> false +console.log(isMatch('bar')) //=> true +console.log(isMatch('baz')) //=> true +``` + +### options.matchBase + +Alias for [options.basename](#options-basename). + +### options.noextglob + +Disable extglob support, so that [extglobs](#extglobs) are regarded as literal characters. + +**Type**: `Boolean` + +**Default**: `undefined` + +**Examples** + +```js +console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)')); +//=> ['a/b', 'a/!(z)'] + +console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)', { noextglob: true })); +//=> ['a/!(z)'] (matches only as literal characters) +``` + +### options.nonegate + +Disallow negation (`!`) patterns, and treat leading `!` as a literal character to match. + +**Type**: `Boolean` + +**Default**: `undefined` + +### options.noglobstar + +Disable matching with globstars (`**`). + +**Type**: `Boolean` + +**Default**: `undefined` + +```js +micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**'); +//=> ['a/b', 'a/b/c', 'a/b/c/d'] + +micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**', {noglobstar: true}); +//=> ['a/b'] +``` + +### options.nonull + +Alias for [options.nullglob](#options-nullglob). + +### options.nullglob + +If `true`, when no matches are found the actual (arrayified) glob pattern is returned instead of an empty array. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nonull`. + +**Type**: `Boolean` + +**Default**: `undefined` + +### options.onIgnore + +```js +const onIgnore = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); + // { glob: '*', regex: /^(?:(?!\.)(?=.)[^\/]*?\/?)$/, input: 'foo', output: 'foo' } +}; + +const isMatch = micromatch.matcher('*', { onIgnore, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.onMatch + +```js +const onMatch = ({ glob, regex, input, output }) => { + console.log({ input, output }); + // { input: 'some\\path', output: 'some/path' } + // { input: 'some\\path', output: 'some/path' } + // { input: 'some\\path', output: 'some/path' } +}; + +const isMatch = micromatch.matcher('**', { onMatch, posixSlashes: true }); +isMatch('some\\path'); +isMatch('some\\path'); +isMatch('some\\path'); +``` + +### options.onResult + +```js +const onResult = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = micromatch('*', { onResult, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.posixSlashes + +Convert path separators on returned files to posix/unix-style forward slashes. Aliased as `unixify` for backwards compatibility. + +**Type**: `Boolean` + +**Default**: `true` on windows, `false` everywhere else. + +**Example** + +```js +console.log(micromatch.match(['a\\b\\c'], 'a/**')); +//=> ['a/b/c'] + +console.log(micromatch.match(['a\\b\\c'], { posixSlashes: false })); +//=> ['a\\b\\c'] +``` + +### options.unescape + +Remove backslashes from escaped glob characters before creating the regular expression to perform matches. + +**Type**: `Boolean` + +**Default**: `undefined` + +**Example** + +In this example we want to match a literal `*`: + +```js +console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c')); +//=> ['a\\*c'] + +console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c', { unescape: true })); +//=> ['a*c'] +``` + +
    +
    + +## Extended globbing + +Micromatch supports the following extended globbing features. + +### Extglobs + +Extended globbing, as described by the bash man page: + +| **pattern** | **regex equivalent** | **description** | +| --- | --- | --- | +| `?(pattern)` | `(pattern)?` | Matches zero or one occurrence of the given patterns | +| `*(pattern)` | `(pattern)*` | Matches zero or more occurrences of the given patterns | +| `+(pattern)` | `(pattern)+` | Matches one or more occurrences of the given patterns | +| `@(pattern)` | `(pattern)` * | Matches one of the given patterns | +| `!(pattern)` | N/A (equivalent regex is much more complicated) | Matches anything except one of the given patterns | + +* Note that `@` isn't a regex character. + +### Braces + +Brace patterns can be used to match specific ranges or sets of characters. + +**Example** + +The pattern `{f,b}*/{1..3}/{b,q}*` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +baz/1/qux +baz/2/qux +baz/3/qux +``` + +Visit [braces](https://github.com/micromatch/braces) to see the full range of features and options related to brace expansion, or to create brace matching or expansion related issues. + +### Regex character classes + +Given the list: `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`: + +* `[ac].js`: matches both `a` and `c`, returning `['a.js', 'c.js']` +* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']` +* `a/[A-Z].js`: matches and uppercase letter, returning `['a/E.md']` + +Learn about [regex character classes](http://www.regular-expressions.info/charclass.html). + +### Regex groups + +Given `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`: + +* `(a|c).js`: would match either `a` or `c`, returning `['a.js', 'c.js']` +* `(b|d).js`: would match either `b` or `d`, returning `['b.js', 'd.js']` +* `(b|[A-Z]).js`: would match either `b` or an uppercase letter, returning `['b.js', 'E.js']` + +As with regex, parens can be nested, so patterns like `((a|b)|c)/b` will work. Although brace expansion might be friendlier to use, depending on preference. + +### POSIX bracket expressions + +POSIX brackets are intended to be more user-friendly than regex character classes. This of course is in the eye of the beholder. + +**Example** + +```js +console.log(micromatch.isMatch('a1', '[[:alpha:][:digit:]]')) //=> true +console.log(micromatch.isMatch('a1', '[[:alpha:][:alpha:]]')) //=> false +``` + +*** + +## Notes + +### Bash 4.3 parity + +Whenever possible matching behavior is based on behavior Bash 4.3, which is mostly consistent with minimatch. + +However, it's suprising how many edge cases and rabbit holes there are with glob matching, and since there is no real glob specification, and micromatch is more accurate than both Bash and minimatch, there are cases where best-guesses were made for behavior. In a few cases where Bash had no answers, we used wildmatch (used by git) as a fallback. + +### Backslashes + +There is an important, notable difference between minimatch and micromatch _in regards to how backslashes are handled_ in glob patterns. + +* Micromatch exclusively and explicitly reserves backslashes for escaping characters in a glob pattern, even on windows, which is consistent with bash behavior. _More importantly, unescaping globs can result in unsafe regular expressions_. +* Minimatch converts all backslashes to forward slashes, which means you can't use backslashes to escape any characters in your glob patterns. + +We made this decision for micromatch for a couple of reasons: + +* Consistency with bash conventions. +* Glob patterns are not filepaths. They are a type of [regular language](https://en.wikipedia.org/wiki/Regular_language) that is converted to a JavaScript regular expression. Thus, when forward slashes are defined in a glob pattern, the resulting regular expression will match windows or POSIX path separators just fine. + +**A note about joining paths to globs** + +Note that when you pass something like `path.join('foo', '*')` to micromatch, you are creating a filepath and expecting it to still work as a glob pattern. This causes problems on windows, since the `path.sep` is `\\`. + +In other words, since `\\` is reserved as an escape character in globs, on windows `path.join('foo', '*')` would result in `foo\\*`, which tells micromatch to match `*` as a literal character. This is the same behavior as bash. + +To solve this, you might be inspired to do something like `'foo\\*'.replace(/\\/g, '/')`, but this causes another, potentially much more serious, problem. + +## Benchmarks + +### Running benchmarks + +Install dependencies for running benchmarks: + +```sh +$ cd bench && npm install +``` + +Run the benchmarks: + +```sh +$ npm run bench +``` + +### Latest results + +As of March 24, 2022 (longer bars are better): + +```sh +# .makeRe star + micromatch x 2,232,802 ops/sec ±2.34% (89 runs sampled)) + minimatch x 781,018 ops/sec ±6.74% (92 runs sampled)) + +# .makeRe star; dot=true + micromatch x 1,863,453 ops/sec ±0.74% (93 runs sampled) + minimatch x 723,105 ops/sec ±0.75% (93 runs sampled) + +# .makeRe globstar + micromatch x 1,624,179 ops/sec ±2.22% (91 runs sampled) + minimatch x 1,117,230 ops/sec ±2.78% (86 runs sampled)) + +# .makeRe globstars + micromatch x 1,658,642 ops/sec ±0.86% (92 runs sampled) + minimatch x 741,224 ops/sec ±1.24% (89 runs sampled)) + +# .makeRe with leading star + micromatch x 1,525,014 ops/sec ±1.63% (90 runs sampled) + minimatch x 561,074 ops/sec ±3.07% (89 runs sampled) + +# .makeRe - braces + micromatch x 172,478 ops/sec ±2.37% (78 runs sampled) + minimatch x 96,087 ops/sec ±2.34% (88 runs sampled))) + +# .makeRe braces - range (expanded) + micromatch x 26,973 ops/sec ±0.84% (89 runs sampled) + minimatch x 3,023 ops/sec ±0.99% (90 runs sampled)) + +# .makeRe braces - range (compiled) + micromatch x 152,892 ops/sec ±1.67% (83 runs sampled) + minimatch x 992 ops/sec ±3.50% (89 runs sampled)d)) + +# .makeRe braces - nested ranges (expanded) + micromatch x 15,816 ops/sec ±13.05% (80 runs sampled) + minimatch x 2,953 ops/sec ±1.64% (91 runs sampled) + +# .makeRe braces - nested ranges (compiled) + micromatch x 110,881 ops/sec ±1.85% (82 runs sampled) + minimatch x 1,008 ops/sec ±1.51% (91 runs sampled) + +# .makeRe braces - set (compiled) + micromatch x 134,930 ops/sec ±3.54% (63 runs sampled)) + minimatch x 43,242 ops/sec ±0.60% (93 runs sampled) + +# .makeRe braces - nested sets (compiled) + micromatch x 94,455 ops/sec ±1.74% (69 runs sampled)) + minimatch x 27,720 ops/sec ±1.84% (93 runs sampled)) +``` + +## Contributing + +All contributions are welcome! Please read [the contributing guide](.github/contributing.md) to get started. + +**Bug reports** + +Please create an issue if you encounter a bug or matching behavior that doesn't seem correct. If you find a matching-related issue, please: + +* [research existing issues first](../../issues) (open and closed) +* visit the [GNU Bash documentation](https://www.gnu.org/software/bash/manual/) to see how Bash deals with the pattern +* visit the [minimatch](https://github.com/isaacs/minimatch) documentation to cross-check expected behavior in node.js +* if all else fails, since there is no real specification for globs we will probably need to discuss expected behavior and decide how to resolve it. which means any detail you can provide to help with this discussion would be greatly appreciated. + +**Platform issues** + +It's important to us that micromatch work consistently on all platforms. If you encounter any platform-specific matching or path related issues, please let us know (pull requests are also greatly appreciated). + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Related projects + +You might also be interested in these projects: + +* [braces](https://www.npmjs.com/package/braces): Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support… [more](https://github.com/micromatch/braces) | [homepage](https://github.com/micromatch/braces "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.") +* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/micromatch/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.") +* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.") +* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") +* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/micromatch/nanomatch) | [homepage](https://github.com/micromatch/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 512 | [jonschlinkert](https://github.com/jonschlinkert) | +| 12 | [es128](https://github.com/es128) | +| 9 | [danez](https://github.com/danez) | +| 8 | [doowb](https://github.com/doowb) | +| 6 | [paulmillr](https://github.com/paulmillr) | +| 5 | [mrmlnc](https://github.com/mrmlnc) | +| 3 | [DrPizza](https://github.com/DrPizza) | +| 2 | [TrySound](https://github.com/TrySound) | +| 2 | [mceIdo](https://github.com/mceIdo) | +| 2 | [Glazy](https://github.com/Glazy) | +| 2 | [MartinKolarik](https://github.com/MartinKolarik) | +| 2 | [antonyk](https://github.com/antonyk) | +| 2 | [Tvrqvoise](https://github.com/Tvrqvoise) | +| 1 | [amilajack](https://github.com/amilajack) | +| 1 | [Cslove](https://github.com/Cslove) | +| 1 | [devongovett](https://github.com/devongovett) | +| 1 | [DianeLooney](https://github.com/DianeLooney) | +| 1 | [UltCombo](https://github.com/UltCombo) | +| 1 | [frangio](https://github.com/frangio) | +| 1 | [joyceerhl](https://github.com/joyceerhl) | +| 1 | [juszczykjakub](https://github.com/juszczykjakub) | +| 1 | [muescha](https://github.com/muescha) | +| 1 | [sebdeckers](https://github.com/sebdeckers) | +| 1 | [tomByrer](https://github.com/tomByrer) | +| 1 | [fidian](https://github.com/fidian) | +| 1 | [curbengh](https://github.com/curbengh) | +| 1 | [simlu](https://github.com/simlu) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | +| 1 | [yvele](https://github.com/yvele) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2022, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on March 24, 2022._ \ No newline at end of file diff --git a/node_modules/micromatch/index.js b/node_modules/micromatch/index.js new file mode 100644 index 0000000..1fad7f7 --- /dev/null +++ b/node_modules/micromatch/index.js @@ -0,0 +1,467 @@ +'use strict'; + +const util = require('util'); +const braces = require('braces'); +const picomatch = require('picomatch'); +const utils = require('picomatch/lib/utils'); +const isEmptyString = val => val === '' || val === './'; + +/** + * Returns an array of strings that match one or more glob patterns. + * + * ```js + * const mm = require('micromatch'); + * // mm(list, patterns[, options]); + * + * console.log(mm(['a.js', 'a.txt'], ['*.js'])); + * //=> [ 'a.js' ] + * ``` + * @param {String|Array} `list` List of strings to match. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) + * @return {Array} Returns an array of matches + * @summary false + * @api public + */ + +const micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); + + let omit = new Set(); + let keep = new Set(); + let items = new Set(); + let negatives = 0; + + let onResult = state => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); + } + }; + + for (let i = 0; i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) negatives++; + + for (let item of list) { + let matched = isMatch(item, true); + + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) continue; + + if (negated) { + omit.add(matched.output); + } else { + omit.delete(matched.output); + keep.add(matched.output); + } + } + } + + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter(item => !omit.has(item)); + + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(', ')}"`); + } + + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; + } + } + + return matches; +}; + +/** + * Backwards compatibility + */ + +micromatch.match = micromatch; + +/** + * Returns a matcher function from the given glob `pattern` and `options`. + * The returned function takes a string to match as its only argument and returns + * true if the string is a match. + * + * ```js + * const mm = require('micromatch'); + * // mm.matcher(pattern[, options]); + * + * const isMatch = mm.matcher('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @param {String} `pattern` Glob pattern + * @param {Object} `options` + * @return {Function} Returns a matcher function. + * @api public + */ + +micromatch.matcher = (pattern, options) => picomatch(pattern, options); + +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const mm = require('micromatch'); + * // mm.isMatch(string, patterns[, options]); + * + * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(mm.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `[options]` See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + +/** + * Backwards compatibility + */ + +micromatch.any = micromatch.isMatch; + +/** + * Returns a list of strings that _**do not match any**_ of the given `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.not(list, patterns[, options]); + * + * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); + * //=> ['b.b', 'c.c'] + * ``` + * @param {Array} `list` Array of strings to match. + * @param {String|Array} `patterns` One or more glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array} Returns an array of strings that **do not match** the given patterns. + * @api public + */ + +micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set(); + let items = []; + + let onResult = state => { + if (options.onResult) options.onResult(state); + items.push(state.output); + }; + + let matches = new Set(micromatch(list, patterns, { ...options, onResult })); + + for (let item of items) { + if (!matches.has(item)) { + result.add(item); + } + } + return [...result]; +}; + +/** + * Returns true if the given `string` contains the given pattern. Similar + * to [.isMatch](#isMatch) but the pattern can match any part of the string. + * + * ```js + * var mm = require('micromatch'); + * // mm.contains(string, pattern[, options]); + * + * console.log(mm.contains('aa/bb/cc', '*b')); + * //=> true + * console.log(mm.contains('aa/bb/cc', '*d')); + * //=> false + * ``` + * @param {String} `str` The string to match. + * @param {String|Array} `patterns` Glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any of the patterns matches any part of `str`. + * @api public + */ + +micromatch.contains = (str, pattern, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + + if (Array.isArray(pattern)) { + return pattern.some(p => micromatch.contains(str, p, options)); + } + + if (typeof pattern === 'string') { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; + } + + if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { + return true; + } + } + + return micromatch.isMatch(str, pattern, { ...options, contains: true }); +}; + +/** + * Filter the keys of the given object with the given `glob` pattern + * and `options`. Does not attempt to match nested keys. If you need this feature, + * use [glob-object][] instead. + * + * ```js + * const mm = require('micromatch'); + * // mm.matchKeys(object, patterns[, options]); + * + * const obj = { aa: 'a', ab: 'b', ac: 'c' }; + * console.log(mm.matchKeys(obj, '*b')); + * //=> { ab: 'b' } + * ``` + * @param {Object} `object` The object with keys to filter. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Object} Returns an object with only keys that match the given patterns. + * @api public + */ + +micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError('Expected the first argument to be an object'); + } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) res[key] = obj[key]; + return res; +}; + +/** + * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.some(list, patterns[, options]); + * + * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // true + * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list` + * @api public + */ + +micromatch.some = (list, patterns, options) => { + let items = [].concat(list); + + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some(item => isMatch(item))) { + return true; + } + } + return false; +}; + +/** + * Returns true if every string in the given `list` matches + * any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.every(list, patterns[, options]); + * + * console.log(mm.every('foo.js', ['foo.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // false + * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list` + * @api public + */ + +micromatch.every = (list, patterns, options) => { + let items = [].concat(list); + + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every(item => isMatch(item))) { + return false; + } + } + return true; +}; + +/** + * Returns true if **all** of the given `patterns` match + * the specified string. + * + * ```js + * const mm = require('micromatch'); + * // mm.all(string, patterns[, options]); + * + * console.log(mm.all('foo.js', ['foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); + * // false + * + * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); + * // true + * ``` + * @param {String|Array} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.all = (str, patterns, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + + return [].concat(patterns).every(p => picomatch(p, options)(str)); +}; + +/** + * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. + * + * ```js + * const mm = require('micromatch'); + * // mm.capture(pattern, string[, options]); + * + * console.log(mm.capture('test/*.js', 'test/foo.js')); + * //=> ['foo'] + * console.log(mm.capture('test/*.js', 'foo/bar.css')); + * //=> null + * ``` + * @param {String} `glob` Glob pattern to use for matching. + * @param {String} `input` String to match + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`. + * @api public + */ + +micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); + + if (match) { + return match.slice(1).map(v => v === void 0 ? '' : v); + } +}; + +/** + * Create a regular expression from the given glob `pattern`. + * + * ```js + * const mm = require('micromatch'); + * // mm.makeRe(pattern[, options]); + * + * console.log(mm.makeRe('*.js')); + * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ + * ``` + * @param {String} `pattern` A glob pattern to convert to regex. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +micromatch.makeRe = (...args) => picomatch.makeRe(...args); + +/** + * Scan a glob pattern to separate the pattern into segments. Used + * by the [split](#split) method. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.scan(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +micromatch.scan = (...args) => picomatch.scan(...args); + +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.parse(pattern[, options]); + * ``` + * @param {String} `glob` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as regex source string. + * @api public + */ + +micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } + } + return res; +}; + +/** + * Process the given brace `pattern`. + * + * ```js + * const { braces } = require('micromatch'); + * console.log(braces('foo/{a,b,c}/bar')); + * //=> [ 'foo/(a|b|c)/bar' ] + * + * console.log(braces('foo/{a,b,c}/bar', { expand: true })); + * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] + * ``` + * @param {String} `pattern` String with brace pattern to process. + * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. + * @return {Array} + * @api public + */ + +micromatch.braces = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { + return [pattern]; + } + return braces(pattern, options); +}; + +/** + * Expand braces + */ + +micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + return micromatch.braces(pattern, { ...options, expand: true }); +}; + +/** + * Expose micromatch + */ + +module.exports = micromatch; diff --git a/node_modules/micromatch/package.json b/node_modules/micromatch/package.json new file mode 100644 index 0000000..6061d5b --- /dev/null +++ b/node_modules/micromatch/package.json @@ -0,0 +1,119 @@ +{ + "name": "micromatch", + "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.", + "version": "4.0.5", + "homepage": "https://github.com/micromatch/micromatch", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "(https://github.com/DianeLooney)", + "Amila Welihinda (amilajack.com)", + "Bogdan Chadkin (https://github.com/TrySound)", + "Brian Woodward (https://twitter.com/doowb)", + "Devon Govett (http://badassjs.com)", + "Elan Shanker (https://github.com/es128)", + "Fabrício Matté (https://ultcombo.js.org)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Martin Kolárik (https://kolarik.sk)", + "Olsten Larck (https://i.am.charlike.online)", + "Paul Miller (paulmillr.com)", + "Tom Byrer (https://github.com/tomByrer)", + "Tyler Akins (http://rumkin.com)", + "Peter Bright (https://github.com/drpizza)", + "Kuba Juszczyk (https://github.com/ku8ar)" + ], + "repository": "micromatch/micromatch", + "bugs": { + "url": "https://github.com/micromatch/micromatch/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8.6" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "devDependencies": { + "fill-range": "^7.0.1", + "gulp-format-md": "^2.0.0", + "minimatch": "^5.0.1", + "mocha": "^9.2.2", + "time-require": "github:jonschlinkert/time-require" + }, + "keywords": [ + "bash", + "bracket", + "character-class", + "expand", + "expansion", + "expression", + "extglob", + "extglobs", + "file", + "files", + "filter", + "find", + "glob", + "globbing", + "globs", + "globstar", + "lookahead", + "lookaround", + "lookbehind", + "match", + "matcher", + "matches", + "matching", + "micromatch", + "minimatch", + "multimatch", + "negate", + "negation", + "path", + "pattern", + "patterns", + "posix", + "regex", + "regexp", + "regular", + "shell", + "star", + "wildcard" + ], + "verb": { + "toc": "collapsible", + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "braces", + "expand-brackets", + "extglob", + "fill-range", + "nanomatch" + ] + }, + "reflinks": [ + "extglob", + "fill-range", + "glob-object", + "minimatch", + "multimatch" + ] + } +} diff --git a/node_modules/nanoid/LICENSE b/node_modules/nanoid/LICENSE new file mode 100644 index 0000000..37f56aa --- /dev/null +++ b/node_modules/nanoid/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2017 Andrey Sitnik + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/nanoid/README.md b/node_modules/nanoid/README.md new file mode 100644 index 0000000..a4abd92 --- /dev/null +++ b/node_modules/nanoid/README.md @@ -0,0 +1,39 @@ +# Nano ID + +Nano ID logo by Anton Lovchikov + +**English** | [Русский](./README.ru.md) | [简体中文](./README.zh-CN.md) | [Bahasa Indonesia](./README.id-ID.md) + +A tiny, secure, URL-friendly, unique string ID generator for JavaScript. + +> “An amazing level of senseless perfectionism, +> which is simply impossible not to respect.” + +* **Small.** 130 bytes (minified and gzipped). No dependencies. + [Size Limit] controls the size. +* **Fast.** It is 2 times faster than UUID. +* **Safe.** It uses hardware random generator. Can be used in clusters. +* **Short IDs.** It uses a larger alphabet than UUID (`A-Za-z0-9_-`). + So ID size was reduced from 36 to 21 symbols. +* **Portable.** Nano ID was ported + to [20 programming languages](#other-programming-languages). + +```js +import { nanoid } from 'nanoid' +model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT" +``` + +Supports modern browsers, IE [with Babel], Node.js and React Native. + +[online tool]: https://gitpod.io/#https://github.com/ai/nanoid/ +[with Babel]: https://developer.epages.com/blog/coding/how-to-transpile-node-modules-with-babel-and-webpack-in-a-monorepo/ +[Size Limit]: https://github.com/ai/size-limit + + + Sponsored by Evil Martians + + +## Docs +Read **[full docs](https://github.com/ai/nanoid#readme)** on GitHub. diff --git a/node_modules/nanoid/async/index.browser.cjs b/node_modules/nanoid/async/index.browser.cjs new file mode 100644 index 0000000..7e5bba8 --- /dev/null +++ b/node_modules/nanoid/async/index.browser.cjs @@ -0,0 +1,34 @@ +let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return async (size = defaultSize) => { + let id = '' + while (true) { + let bytes = crypto.getRandomValues(new Uint8Array(step)) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let nanoid = async (size = 21) => { + let id = '' + let bytes = crypto.getRandomValues(new Uint8Array(size)) + while (size--) { + let byte = bytes[size] & 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte < 63) { + id += '_' + } else { + id += '-' + } + } + return id +} +module.exports = { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.browser.js b/node_modules/nanoid/async/index.browser.js new file mode 100644 index 0000000..5ece04d --- /dev/null +++ b/node_modules/nanoid/async/index.browser.js @@ -0,0 +1,34 @@ +let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return async (size = defaultSize) => { + let id = '' + while (true) { + let bytes = crypto.getRandomValues(new Uint8Array(step)) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let nanoid = async (size = 21) => { + let id = '' + let bytes = crypto.getRandomValues(new Uint8Array(size)) + while (size--) { + let byte = bytes[size] & 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte < 63) { + id += '_' + } else { + id += '-' + } + } + return id +} +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.cjs b/node_modules/nanoid/async/index.cjs new file mode 100644 index 0000000..50db105 --- /dev/null +++ b/node_modules/nanoid/async/index.cjs @@ -0,0 +1,35 @@ +let crypto = require('crypto') +let { urlAlphabet } = require('../url-alphabet/index.cjs') +let random = bytes => + new Promise((resolve, reject) => { + crypto.randomFill(Buffer.allocUnsafe(bytes), (err, buf) => { + if (err) { + reject(err) + } else { + resolve(buf) + } + }) + }) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random(size).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +module.exports = { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.d.ts b/node_modules/nanoid/async/index.d.ts new file mode 100644 index 0000000..9e91965 --- /dev/null +++ b/node_modules/nanoid/async/index.d.ts @@ -0,0 +1,56 @@ +/** + * Generate secure URL-friendly unique ID. The non-blocking version. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid/async' + * nanoid().then(id => { + * model.id = id + * }) + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A promise with a random string. + */ +export function nanoid(size?: number): Promise + +/** + * A low-level function. + * Generate secure unique ID with custom alphabet. The non-blocking version. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A function that returns a promise with a random string. + * + * ```js + * import { customAlphabet } from 'nanoid/async' + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid().then(id => { + * model.id = id //=> "8ё56а" + * }) + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => Promise + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { random } from 'nanoid/async' + * random(5).then(bytes => { + * bytes //=> [10, 67, 212, 67, 89] + * }) + * ``` + * + * @param bytes Size of the array. + * @returns A promise with a random bytes array. + */ +export function random(bytes: number): Promise diff --git a/node_modules/nanoid/async/index.js b/node_modules/nanoid/async/index.js new file mode 100644 index 0000000..803fad6 --- /dev/null +++ b/node_modules/nanoid/async/index.js @@ -0,0 +1,35 @@ +import crypto from 'crypto' +import { urlAlphabet } from '../url-alphabet/index.js' +let random = bytes => + new Promise((resolve, reject) => { + crypto.randomFill(Buffer.allocUnsafe(bytes), (err, buf) => { + if (err) { + reject(err) + } else { + resolve(buf) + } + }) + }) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random(size).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.native.js b/node_modules/nanoid/async/index.native.js new file mode 100644 index 0000000..5cb3d57 --- /dev/null +++ b/node_modules/nanoid/async/index.native.js @@ -0,0 +1,26 @@ +import { getRandomBytesAsync } from 'expo-random' +import { urlAlphabet } from '../url-alphabet/index.js' +let random = getRandomBytesAsync +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random(size).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/package.json b/node_modules/nanoid/async/package.json new file mode 100644 index 0000000..578cdb4 --- /dev/null +++ b/node_modules/nanoid/async/package.json @@ -0,0 +1,12 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": { + "./index.js": "./index.native.js" + }, + "browser": { + "./index.js": "./index.browser.js", + "./index.cjs": "./index.browser.cjs" + } +} \ No newline at end of file diff --git a/node_modules/nanoid/bin/nanoid.cjs b/node_modules/nanoid/bin/nanoid.cjs new file mode 100644 index 0000000..c76db0f --- /dev/null +++ b/node_modules/nanoid/bin/nanoid.cjs @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +let { nanoid, customAlphabet } = require('..') + +function print(msg) { + process.stdout.write(msg + '\n') +} + +function error(msg) { + process.stderr.write(msg + '\n') + process.exit(1) +} + +if (process.argv.includes('--help') || process.argv.includes('-h')) { + print(` + Usage + $ nanoid [options] + + Options + -s, --size Generated ID size + -a, --alphabet Alphabet to use + -h, --help Show this help + + Examples + $ nanoid --s 15 + S9sBF77U6sDB8Yg + + $ nanoid --size 10 --alphabet abc + bcabababca`) + process.exit() +} + +let alphabet, size +for (let i = 2; i < process.argv.length; i++) { + let arg = process.argv[i] + if (arg === '--size' || arg === '-s') { + size = Number(process.argv[i + 1]) + i += 1 + if (Number.isNaN(size) || size <= 0) { + error('Size must be positive integer') + } + } else if (arg === '--alphabet' || arg === '-a') { + alphabet = process.argv[i + 1] + i += 1 + } else { + error('Unknown argument ' + arg) + } +} + +if (alphabet) { + let customNanoid = customAlphabet(alphabet, size) + print(customNanoid()) +} else { + print(nanoid(size)) +} diff --git a/node_modules/nanoid/index.browser.cjs b/node_modules/nanoid/index.browser.cjs new file mode 100644 index 0000000..f800d6f --- /dev/null +++ b/node_modules/nanoid/index.browser.cjs @@ -0,0 +1,34 @@ +let { urlAlphabet } = require('./url-alphabet/index.cjs') +let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let j = step + while (j--) { + id += alphabet[bytes[j] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => + crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + byte &= 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte > 62) { + id += '-' + } else { + id += '_' + } + return id + }, '') +module.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.browser.js b/node_modules/nanoid/index.browser.js new file mode 100644 index 0000000..8b3139b --- /dev/null +++ b/node_modules/nanoid/index.browser.js @@ -0,0 +1,34 @@ +import { urlAlphabet } from './url-alphabet/index.js' +let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let j = step + while (j--) { + id += alphabet[bytes[j] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => + crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + byte &= 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte > 62) { + id += '-' + } else { + id += '_' + } + return id + }, '') +export { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.cjs b/node_modules/nanoid/index.cjs new file mode 100644 index 0000000..0fa85e9 --- /dev/null +++ b/node_modules/nanoid/index.cjs @@ -0,0 +1,45 @@ +let crypto = require('crypto') +let { urlAlphabet } = require('./url-alphabet/index.cjs') +const POOL_SIZE_MULTIPLIER = 128 +let pool, poolOffset +let fillPool = bytes => { + if (!pool || pool.length < bytes) { + pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) + crypto.randomFillSync(pool) + poolOffset = 0 + } else if (poolOffset + bytes > pool.length) { + crypto.randomFillSync(pool) + poolOffset = 0 + } + poolOffset += bytes +} +let random = bytes => { + fillPool((bytes -= 0)) + return pool.subarray(poolOffset - bytes, poolOffset) +} +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => { + fillPool((size -= 0)) + let id = '' + for (let i = poolOffset - size; i < poolOffset; i++) { + id += urlAlphabet[pool[i] & 63] + } + return id +} +module.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.d.ts b/node_modules/nanoid/index.d.ts new file mode 100644 index 0000000..3e111a3 --- /dev/null +++ b/node_modules/nanoid/index.d.ts @@ -0,0 +1,91 @@ +/** + * Generate secure URL-friendly unique ID. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate secure unique ID with custom alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * const { customAlphabet } = require('nanoid') + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid() //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string + +/** + * Generate unique ID with custom random generator and alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * ```js + * import { customRandom } from 'nanoid/format' + * + * const nanoid = customRandom('abcdef', 5, size => { + * const random = [] + * for (let i = 0; i < size; i++) { + * random.push(randomByte()) + * } + * return random + * }) + * + * nanoid() //=> "fbaef" + * ``` + * + * @param alphabet Alphabet used to generate a random string. + * @param size Size of the random string. + * @param random A random bytes generator. + * @returns A random string generator. + */ +export function customRandom( + alphabet: string, + size: number, + random: (bytes: number) => Uint8Array +): () => string + +/** + * URL safe symbols. + * + * ```js + * import { urlAlphabet } from 'nanoid' + * const nanoid = customAlphabet(urlAlphabet, 10) + * nanoid() //=> "Uakgb_J5m9" + * ``` + */ +export const urlAlphabet: string + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { customRandom, random } from 'nanoid' + * const nanoid = customRandom("abcdef", 5, random) + * ``` + * + * @param bytes Size of the array. + * @returns An array of random bytes. + */ +export function random(bytes: number): Uint8Array diff --git a/node_modules/nanoid/index.js b/node_modules/nanoid/index.js new file mode 100644 index 0000000..21e155f --- /dev/null +++ b/node_modules/nanoid/index.js @@ -0,0 +1,45 @@ +import crypto from 'crypto' +import { urlAlphabet } from './url-alphabet/index.js' +const POOL_SIZE_MULTIPLIER = 128 +let pool, poolOffset +let fillPool = bytes => { + if (!pool || pool.length < bytes) { + pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) + crypto.randomFillSync(pool) + poolOffset = 0 + } else if (poolOffset + bytes > pool.length) { + crypto.randomFillSync(pool) + poolOffset = 0 + } + poolOffset += bytes +} +let random = bytes => { + fillPool((bytes -= 0)) + return pool.subarray(poolOffset - bytes, poolOffset) +} +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => { + fillPool((size -= 0)) + let id = '' + for (let i = poolOffset - size; i < poolOffset; i++) { + id += urlAlphabet[pool[i] & 63] + } + return id +} +export { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/nanoid.js b/node_modules/nanoid/nanoid.js new file mode 100644 index 0000000..ec242ea --- /dev/null +++ b/node_modules/nanoid/nanoid.js @@ -0,0 +1 @@ +export let nanoid=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce(((t,e)=>t+=(e&=63)<36?e.toString(36):e<62?(e-26).toString(36).toUpperCase():e<63?"_":"-"),""); \ No newline at end of file diff --git a/node_modules/nanoid/non-secure/index.cjs b/node_modules/nanoid/non-secure/index.cjs new file mode 100644 index 0000000..09d57cd --- /dev/null +++ b/node_modules/nanoid/non-secure/index.cjs @@ -0,0 +1,21 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + let i = size + while (i--) { + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} +let nanoid = (size = 21) => { + let id = '' + let i = size + while (i--) { + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} +module.exports = { nanoid, customAlphabet } diff --git a/node_modules/nanoid/non-secure/index.d.ts b/node_modules/nanoid/non-secure/index.d.ts new file mode 100644 index 0000000..4965322 --- /dev/null +++ b/node_modules/nanoid/non-secure/index.d.ts @@ -0,0 +1,33 @@ +/** + * Generate URL-friendly unique ID. This method uses the non-secure + * predictable random generator with bigger collision probability. + * + * ```js + * import { nanoid } from 'nanoid/non-secure' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate a unique ID based on a custom alphabet. + * This method uses the non-secure predictable random generator + * with bigger collision probability. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * import { customAlphabet } from 'nanoid/non-secure' + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * model.id = //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string diff --git a/node_modules/nanoid/non-secure/index.js b/node_modules/nanoid/non-secure/index.js new file mode 100644 index 0000000..e7e19ad --- /dev/null +++ b/node_modules/nanoid/non-secure/index.js @@ -0,0 +1,21 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + let i = size + while (i--) { + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} +let nanoid = (size = 21) => { + let id = '' + let i = size + while (i--) { + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} +export { nanoid, customAlphabet } diff --git a/node_modules/nanoid/non-secure/package.json b/node_modules/nanoid/non-secure/package.json new file mode 100644 index 0000000..9930d6a --- /dev/null +++ b/node_modules/nanoid/non-secure/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/node_modules/nanoid/package.json b/node_modules/nanoid/package.json new file mode 100644 index 0000000..19d7d7a --- /dev/null +++ b/node_modules/nanoid/package.json @@ -0,0 +1,66 @@ +{ + "name": "nanoid", + "version": "3.3.6", + "description": "A tiny (116 bytes), secure URL-friendly unique string ID generator", + "keywords": [ + "uuid", + "random", + "id", + "url" + ], + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "ai/nanoid", + "browser": { + "./index.js": "./index.browser.js", + "./async/index.js": "./async/index.browser.js", + "./async/index.cjs": "./async/index.browser.cjs", + "./index.cjs": "./index.browser.cjs" + }, + "react-native": "index.js", + "bin": "./bin/nanoid.cjs", + "sideEffects": false, + "types": "./index.d.ts", + "type": "module", + "main": "index.cjs", + "module": "index.js", + "exports": { + ".": { + "types": "./index.d.ts", + "browser": "./index.browser.js", + "require": "./index.cjs", + "import": "./index.js", + "default": "./index.js" + }, + "./index.d.ts": "./index.d.ts", + "./package.json": "./package.json", + "./async/package.json": "./async/package.json", + "./async": { + "browser": "./async/index.browser.js", + "require": "./async/index.cjs", + "import": "./async/index.js", + "default": "./async/index.js" + }, + "./non-secure/package.json": "./non-secure/package.json", + "./non-secure": { + "require": "./non-secure/index.cjs", + "import": "./non-secure/index.js", + "default": "./non-secure/index.js" + }, + "./url-alphabet/package.json": "./url-alphabet/package.json", + "./url-alphabet": { + "require": "./url-alphabet/index.cjs", + "import": "./url-alphabet/index.js", + "default": "./url-alphabet/index.js" + } + } +} \ No newline at end of file diff --git a/node_modules/nanoid/url-alphabet/index.cjs b/node_modules/nanoid/url-alphabet/index.cjs new file mode 100644 index 0000000..757b709 --- /dev/null +++ b/node_modules/nanoid/url-alphabet/index.cjs @@ -0,0 +1,3 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +module.exports = { urlAlphabet } diff --git a/node_modules/nanoid/url-alphabet/index.js b/node_modules/nanoid/url-alphabet/index.js new file mode 100644 index 0000000..c2782e5 --- /dev/null +++ b/node_modules/nanoid/url-alphabet/index.js @@ -0,0 +1,3 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +export { urlAlphabet } diff --git a/node_modules/nanoid/url-alphabet/package.json b/node_modules/nanoid/url-alphabet/package.json new file mode 100644 index 0000000..9930d6a --- /dev/null +++ b/node_modules/nanoid/url-alphabet/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/node_modules/normalize-path/LICENSE b/node_modules/normalize-path/LICENSE new file mode 100644 index 0000000..d32ab44 --- /dev/null +++ b/node_modules/normalize-path/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2018, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/normalize-path/README.md b/node_modules/normalize-path/README.md new file mode 100644 index 0000000..726d4d6 --- /dev/null +++ b/node_modules/normalize-path/README.md @@ -0,0 +1,127 @@ +# normalize-path [![NPM version](https://img.shields.io/npm/v/normalize-path.svg?style=flat)](https://www.npmjs.com/package/normalize-path) [![NPM monthly downloads](https://img.shields.io/npm/dm/normalize-path.svg?style=flat)](https://npmjs.org/package/normalize-path) [![NPM total downloads](https://img.shields.io/npm/dt/normalize-path.svg?style=flat)](https://npmjs.org/package/normalize-path) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/normalize-path.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/normalize-path) + +> Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save normalize-path +``` + +## Usage + +```js +const normalize = require('normalize-path'); + +console.log(normalize('\\foo\\bar\\baz\\')); +//=> '/foo/bar/baz' +``` + +**win32 namespaces** + +```js +console.log(normalize('\\\\?\\UNC\\Server01\\user\\docs\\Letter.txt')); +//=> '//?/UNC/Server01/user/docs/Letter.txt' + +console.log(normalize('\\\\.\\CdRomX')); +//=> '//./CdRomX' +``` + +**Consecutive slashes** + +Condenses multiple consecutive forward slashes (except for leading slashes in win32 namespaces) to a single slash. + +```js +console.log(normalize('.//foo//bar///////baz/')); +//=> './foo/bar/baz' +``` + +### Trailing slashes + +By default trailing slashes are removed. Pass `false` as the last argument to disable this behavior and _**keep** trailing slashes_: + +```js +console.log(normalize('foo\\bar\\baz\\', false)); //=> 'foo/bar/baz/' +console.log(normalize('./foo/bar/baz/', false)); //=> './foo/bar/baz/' +``` + +## Release history + +### v3.0 + +No breaking changes in this release. + +* a check was added to ensure that [win32 namespaces](https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces) are handled properly by win32 `path.parse()` after a path has been normalized by this library. +* a minor optimization was made to simplify how the trailing separator was handled + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Related projects + +Other useful path-related libraries: + +* [contains-path](https://www.npmjs.com/package/contains-path): Return true if a file path contains the given path. | [homepage](https://github.com/jonschlinkert/contains-path "Return true if a file path contains the given path.") +* [is-absolute](https://www.npmjs.com/package/is-absolute): Returns true if a file path is absolute. Does not rely on the path module… [more](https://github.com/jonschlinkert/is-absolute) | [homepage](https://github.com/jonschlinkert/is-absolute "Returns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.") +* [is-relative](https://www.npmjs.com/package/is-relative): Returns `true` if the path appears to be relative. | [homepage](https://github.com/jonschlinkert/is-relative "Returns `true` if the path appears to be relative.") +* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath "Pollyfill for node.js `path.parse`, parses a filepath into an object.") +* [path-ends-with](https://www.npmjs.com/package/path-ends-with): Return `true` if a file path ends with the given string/suffix. | [homepage](https://github.com/jonschlinkert/path-ends-with "Return `true` if a file path ends with the given string/suffix.") +* [unixify](https://www.npmjs.com/package/unixify): Convert Windows file paths to unix paths. | [homepage](https://github.com/jonschlinkert/unixify "Convert Windows file paths to unix paths.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 35 | [jonschlinkert](https://github.com/jonschlinkert) | +| 1 | [phated](https://github.com/phated) | + +### Author + +**Jon Schlinkert** + +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on April 19, 2018._ \ No newline at end of file diff --git a/node_modules/normalize-path/index.js b/node_modules/normalize-path/index.js new file mode 100644 index 0000000..6fac553 --- /dev/null +++ b/node_modules/normalize-path/index.js @@ -0,0 +1,35 @@ +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ + +module.exports = function(path, stripTrailing) { + if (typeof path !== 'string') { + throw new TypeError('expected path to be a string'); + } + + if (path === '\\' || path === '/') return '/'; + + var len = path.length; + if (len <= 1) return path; + + // ensure that win32 namespaces has two leading slashes, so that the path is + // handled properly by the win32 version of path.parse() after being normalized + // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces + var prefix = ''; + if (len > 4 && path[3] === '\\') { + var ch = path[2]; + if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { + path = path.slice(2); + prefix = '//'; + } + } + + var segs = path.split(/[/\\]+/); + if (stripTrailing !== false && segs[segs.length - 1] === '') { + segs.pop(); + } + return prefix + segs.join('/'); +}; diff --git a/node_modules/normalize-path/package.json b/node_modules/normalize-path/package.json new file mode 100644 index 0000000..ad61098 --- /dev/null +++ b/node_modules/normalize-path/package.json @@ -0,0 +1,77 @@ +{ + "name": "normalize-path", + "description": "Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.", + "version": "3.0.0", + "homepage": "https://github.com/jonschlinkert/normalize-path", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Blaine Bublitz (https://twitter.com/BlaineBublitz)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "jonschlinkert/normalize-path", + "bugs": { + "url": "https://github.com/jonschlinkert/normalize-path/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "gulp-format-md": "^1.0.0", + "minimist": "^1.2.0", + "mocha": "^3.5.3" + }, + "keywords": [ + "absolute", + "backslash", + "delimiter", + "file", + "file-path", + "filepath", + "fix", + "forward", + "fp", + "fs", + "normalize", + "path", + "relative", + "separator", + "slash", + "slashes", + "trailing", + "unix", + "urix" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "related": { + "description": "Other useful path-related libraries:", + "list": [ + "contains-path", + "is-absolute", + "is-relative", + "parse-filepath", + "path-ends-with", + "path-ends-with", + "unixify" + ] + }, + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/picocolors/LICENSE b/node_modules/picocolors/LICENSE new file mode 100644 index 0000000..496098c --- /dev/null +++ b/node_modules/picocolors/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/picocolors/README.md b/node_modules/picocolors/README.md new file mode 100644 index 0000000..8e47aa8 --- /dev/null +++ b/node_modules/picocolors/README.md @@ -0,0 +1,21 @@ +# picocolors + +The tiniest and the fastest library for terminal output formatting with ANSI colors. + +```javascript +import pc from "picocolors" + +console.log( + pc.green(`How are ${pc.italic(`you`)} doing?`) +) +``` + +- **No dependencies.** +- **14 times** smaller and **2 times** faster than chalk. +- Used by popular tools like PostCSS, SVGO, Stylelint, and Browserslist. +- Node.js v6+ & browsers support. Support for both CJS and ESM projects. +- TypeScript type declarations included. +- [`NO_COLOR`](https://no-color.org/) friendly. + +## Docs +Read **[full docs](https://github.com/alexeyraspopov/picocolors#readme)** on GitHub. diff --git a/node_modules/picocolors/package.json b/node_modules/picocolors/package.json new file mode 100644 index 0000000..85a12d5 --- /dev/null +++ b/node_modules/picocolors/package.json @@ -0,0 +1,25 @@ +{ + "name": "picocolors", + "version": "1.0.0", + "main": "./picocolors.js", + "types": "./picocolors.d.ts", + "browser": { + "./picocolors.js": "./picocolors.browser.js" + }, + "sideEffects": false, + "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors", + "files": [ + "picocolors.*", + "types.ts" + ], + "keywords": [ + "terminal", + "colors", + "formatting", + "cli", + "console" + ], + "author": "Alexey Raspopov", + "repository": "alexeyraspopov/picocolors", + "license": "ISC" +} diff --git a/node_modules/picocolors/picocolors.browser.js b/node_modules/picocolors/picocolors.browser.js new file mode 100644 index 0000000..5eb9fbe --- /dev/null +++ b/node_modules/picocolors/picocolors.browser.js @@ -0,0 +1,4 @@ +var x=String; +var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}}; +module.exports=create(); +module.exports.createColors = create; diff --git a/node_modules/picocolors/picocolors.d.ts b/node_modules/picocolors/picocolors.d.ts new file mode 100644 index 0000000..94e146a --- /dev/null +++ b/node_modules/picocolors/picocolors.d.ts @@ -0,0 +1,5 @@ +import { Colors } from "./types" + +declare const picocolors: Colors & { createColors: (enabled?: boolean) => Colors } + +export = picocolors diff --git a/node_modules/picocolors/picocolors.js b/node_modules/picocolors/picocolors.js new file mode 100644 index 0000000..fdb6304 --- /dev/null +++ b/node_modules/picocolors/picocolors.js @@ -0,0 +1,58 @@ +let tty = require("tty") + +let isColorSupported = + !("NO_COLOR" in process.env || process.argv.includes("--no-color")) && + ("FORCE_COLOR" in process.env || + process.argv.includes("--color") || + process.platform === "win32" || + (tty.isatty(1) && process.env.TERM !== "dumb") || + "CI" in process.env) + +let formatter = + (open, close, replace = open) => + input => { + let string = "" + input + let index = string.indexOf(close, open.length) + return ~index + ? open + replaceClose(string, close, replace, index) + close + : open + string + close + } + +let replaceClose = (string, close, replace, index) => { + let start = string.substring(0, index) + replace + let end = string.substring(index + close.length) + let nextIndex = end.indexOf(close) + return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end +} + +let createColors = (enabled = isColorSupported) => ({ + isColorSupported: enabled, + reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String, + bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String, + dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String, + italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String, + underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String, + inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String, + hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String, + strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String, + black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String, + red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String, + green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String, + yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String, + blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String, + magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String, + cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String, + white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String, + gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String, + bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String, + bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String, + bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String, + bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String, + bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String, + bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String, + bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String, + bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String, +}) + +module.exports = createColors() +module.exports.createColors = createColors diff --git a/node_modules/picocolors/types.ts b/node_modules/picocolors/types.ts new file mode 100644 index 0000000..b4bacee --- /dev/null +++ b/node_modules/picocolors/types.ts @@ -0,0 +1,30 @@ +export type Formatter = (input: string | number | null | undefined) => string + +export interface Colors { + isColorSupported: boolean + reset: Formatter + bold: Formatter + dim: Formatter + italic: Formatter + underline: Formatter + inverse: Formatter + hidden: Formatter + strikethrough: Formatter + black: Formatter + red: Formatter + green: Formatter + yellow: Formatter + blue: Formatter + magenta: Formatter + cyan: Formatter + white: Formatter + gray: Formatter + bgBlack: Formatter + bgRed: Formatter + bgGreen: Formatter + bgYellow: Formatter + bgBlue: Formatter + bgMagenta: Formatter + bgCyan: Formatter + bgWhite: Formatter +} diff --git a/node_modules/picomatch/CHANGELOG.md b/node_modules/picomatch/CHANGELOG.md new file mode 100644 index 0000000..8ccc6c1 --- /dev/null +++ b/node_modules/picomatch/CHANGELOG.md @@ -0,0 +1,136 @@ +# Release history + +**All notable changes to this project will be documented in this file.** + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +
    + Guiding Principles + +- Changelogs are for humans, not machines. +- There should be an entry for every single version. +- The same types of changes should be grouped. +- Versions and sections should be linkable. +- The latest version comes first. +- The release date of each versions is displayed. +- Mention whether you follow Semantic Versioning. + +
    + +
    + Types of changes + +Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): + +- `Added` for new features. +- `Changed` for changes in existing functionality. +- `Deprecated` for soon-to-be removed features. +- `Removed` for now removed features. +- `Fixed` for any bug fixes. +- `Security` in case of vulnerabilities. + +
    + +## 2.3.1 (2022-01-02) + +### Fixed + +* Fixes bug when a pattern containing an expression after the closing parenthesis (`/!(*.d).{ts,tsx}`) was incorrectly converted to regexp ([9f241ef](https://github.com/micromatch/picomatch/commit/9f241ef)). + +### Changed + +* Some documentation improvements ([f81d236](https://github.com/micromatch/picomatch/commit/f81d236), [421e0e7](https://github.com/micromatch/picomatch/commit/421e0e7)). + +## 2.3.0 (2021-05-21) + +### Fixed + +* Fixes bug where file names with two dots were not being matched consistently with negation extglobs containing a star ([56083ef](https://github.com/micromatch/picomatch/commit/56083ef)) + +## 2.2.3 (2021-04-10) + +### Fixed + +* Do not skip pattern seperator for square brackets ([fb08a30](https://github.com/micromatch/picomatch/commit/fb08a30)). +* Set negatedExtGlob also if it does not span the whole pattern ([032e3f5](https://github.com/micromatch/picomatch/commit/032e3f5)). + +## 2.2.2 (2020-03-21) + +### Fixed + +* Correctly handle parts of the pattern after parentheses in the `scan` method ([e15b920](https://github.com/micromatch/picomatch/commit/e15b920)). + +## 2.2.1 (2020-01-04) + +* Fixes [#49](https://github.com/micromatch/picomatch/issues/49), so that braces with no sets or ranges are now propertly treated as literals. + +## 2.2.0 (2020-01-04) + +* Disable fastpaths mode for the parse method ([5b8d33f](https://github.com/micromatch/picomatch/commit/5b8d33f)) +* Add `tokens`, `slashes`, and `parts` to the object returned by `picomatch.scan()`. + +## 2.1.0 (2019-10-31) + +* add benchmarks for scan ([4793b92](https://github.com/micromatch/picomatch/commit/4793b92)) +* Add eslint object-curly-spacing rule ([707c650](https://github.com/micromatch/picomatch/commit/707c650)) +* Add prefer-const eslint rule ([5c7501c](https://github.com/micromatch/picomatch/commit/5c7501c)) +* Add support for nonegate in scan API ([275c9b9](https://github.com/micromatch/picomatch/commit/275c9b9)) +* Change lets to consts. Move root import up. ([4840625](https://github.com/micromatch/picomatch/commit/4840625)) +* closes https://github.com/micromatch/picomatch/issues/21 ([766bcb0](https://github.com/micromatch/picomatch/commit/766bcb0)) +* Fix "Extglobs" table in readme ([eb19da8](https://github.com/micromatch/picomatch/commit/eb19da8)) +* fixes https://github.com/micromatch/picomatch/issues/20 ([9caca07](https://github.com/micromatch/picomatch/commit/9caca07)) +* fixes https://github.com/micromatch/picomatch/issues/26 ([fa58f45](https://github.com/micromatch/picomatch/commit/fa58f45)) +* Lint test ([d433a34](https://github.com/micromatch/picomatch/commit/d433a34)) +* lint unit tests ([0159b55](https://github.com/micromatch/picomatch/commit/0159b55)) +* Make scan work with noext ([6c02e03](https://github.com/micromatch/picomatch/commit/6c02e03)) +* minor linting ([c2a2b87](https://github.com/micromatch/picomatch/commit/c2a2b87)) +* minor parser improvements ([197671d](https://github.com/micromatch/picomatch/commit/197671d)) +* remove eslint since it... ([07876fa](https://github.com/micromatch/picomatch/commit/07876fa)) +* remove funding file ([8ebe96d](https://github.com/micromatch/picomatch/commit/8ebe96d)) +* Remove unused funks ([cbc6d54](https://github.com/micromatch/picomatch/commit/cbc6d54)) +* Run eslint during pretest, fix existing eslint findings ([0682367](https://github.com/micromatch/picomatch/commit/0682367)) +* support `noparen` in scan ([3d37569](https://github.com/micromatch/picomatch/commit/3d37569)) +* update changelog ([7b34e77](https://github.com/micromatch/picomatch/commit/7b34e77)) +* update travis ([777f038](https://github.com/micromatch/picomatch/commit/777f038)) +* Use eslint-disable-next-line instead of eslint-disable ([4e7c1fd](https://github.com/micromatch/picomatch/commit/4e7c1fd)) + +## 2.0.7 (2019-05-14) + +* 2.0.7 ([9eb9a71](https://github.com/micromatch/picomatch/commit/9eb9a71)) +* supports lookbehinds ([1f63f7e](https://github.com/micromatch/picomatch/commit/1f63f7e)) +* update .verb.md file with typo change ([2741279](https://github.com/micromatch/picomatch/commit/2741279)) +* fix: typo in README ([0753e44](https://github.com/micromatch/picomatch/commit/0753e44)) + +## 2.0.4 (2019-04-10) + +### Fixed + +- Readme link [fixed](https://github.com/micromatch/picomatch/pull/13/commits/a96ab3aa2b11b6861c23289964613d85563b05df) by @danez. +- `options.capture` now works as expected when fastpaths are enabled. See https://github.com/micromatch/picomatch/pull/12/commits/26aefd71f1cfaf95c37f1c1fcab68a693b037304. Thanks to @DrPizza. + +## 2.0.0 (2019-04-10) + +### Added + +- Adds support for `options.onIgnore`. See the readme for details +- Adds support for `options.onResult`. See the readme for details + +### Breaking changes + +- The unixify option was renamed to `windows` +- caching and all related options and methods have been removed + +## 1.0.0 (2018-11-05) + +- adds `.onMatch` option +- improvements to `.scan` method +- numerous improvements and optimizations for matching and parsing +- better windows path handling + +## 0.1.0 - 2017-04-13 + +First release. + + +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog diff --git a/node_modules/picomatch/LICENSE b/node_modules/picomatch/LICENSE new file mode 100644 index 0000000..3608dca --- /dev/null +++ b/node_modules/picomatch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/picomatch/README.md b/node_modules/picomatch/README.md new file mode 100644 index 0000000..b0526e2 --- /dev/null +++ b/node_modules/picomatch/README.md @@ -0,0 +1,708 @@ +

    Picomatch

    + +

    + +version + + +test status + + +coverage status + + +downloads + +

    + +
    +
    + +

    +Blazing fast and accurate glob matcher written in JavaScript.
    +No dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions. +

    + +
    +
    + +## Why picomatch? + +* **Lightweight** - No dependencies +* **Minimal** - Tiny API surface. Main export is a function that takes a glob pattern and returns a matcher function. +* **Fast** - Loads in about 2ms (that's several times faster than a [single frame of a HD movie](http://www.endmemo.com/sconvert/framespersecondframespermillisecond.php) at 60fps) +* **Performant** - Use the returned matcher function to speed up repeat matching (like when watching files) +* **Accurate matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories, [advanced globbing](#advanced-globbing) with extglobs, braces, and POSIX brackets, and support for escaping special characters with `\` or quotes. +* **Well tested** - Thousands of unit tests + +See the [library comparison](#library-comparisons) to other libraries. + +
    +
    + +## Table of Contents + +
    Click to expand + +- [Install](#install) +- [Usage](#usage) +- [API](#api) + * [picomatch](#picomatch) + * [.test](#test) + * [.matchBase](#matchbase) + * [.isMatch](#ismatch) + * [.parse](#parse) + * [.scan](#scan) + * [.compileRe](#compilere) + * [.makeRe](#makere) + * [.toRegex](#toregex) +- [Options](#options) + * [Picomatch options](#picomatch-options) + * [Scan Options](#scan-options) + * [Options Examples](#options-examples) +- [Globbing features](#globbing-features) + * [Basic globbing](#basic-globbing) + * [Advanced globbing](#advanced-globbing) + * [Braces](#braces) + * [Matching special characters as literals](#matching-special-characters-as-literals) +- [Library Comparisons](#library-comparisons) +- [Benchmarks](#benchmarks) +- [Philosophies](#philosophies) +- [About](#about) + * [Author](#author) + * [License](#license) + +_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_ + +
    + +
    +
    + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +npm install --save picomatch +``` + +
    + +## Usage + +The main export is a function that takes a glob pattern and an options object and returns a function for matching strings. + +```js +const pm = require('picomatch'); +const isMatch = pm('*.js'); + +console.log(isMatch('abcd')); //=> false +console.log(isMatch('a.js')); //=> true +console.log(isMatch('a.md')); //=> false +console.log(isMatch('a/b.js')); //=> false +``` + +
    + +## API + +### [picomatch](lib/picomatch.js#L32) + +Creates a matcher function from one or more glob patterns. The returned function takes a string to match as its first argument, and returns true if the string is a match. The returned matcher function also takes a boolean as the second argument that, when true, returns an object with additional information. + +**Params** + +* `globs` **{String|Array}**: One or more glob patterns. +* `options` **{Object=}** +* `returns` **{Function=}**: Returns a matcher function. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch(glob[, options]); + +const isMatch = picomatch('*.!(*a)'); +console.log(isMatch('a.a')); //=> false +console.log(isMatch('a.b')); //=> true +``` + +### [.test](lib/picomatch.js#L117) + +Test `input` with the given `regex`. This is used by the main `picomatch()` function to test the input string. + +**Params** + +* `input` **{String}**: String to test. +* `regex` **{RegExp}** +* `returns` **{Object}**: Returns an object with matching info. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.test(input, regex[, options]); + +console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); +// { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } +``` + +### [.matchBase](lib/picomatch.js#L161) + +Match the basename of a filepath. + +**Params** + +* `input` **{String}**: String to test. +* `glob` **{RegExp|String}**: Glob pattern or regex created by [.makeRe](#makeRe). +* `returns` **{Boolean}** + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.matchBase(input, glob[, options]); +console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true +``` + +### [.isMatch](lib/picomatch.js#L183) + +Returns true if **any** of the given glob `patterns` match the specified `string`. + +**Params** + +* **{String|Array}**: str The string to test. +* **{String|Array}**: patterns One or more glob patterns to use for matching. +* **{Object}**: See available [options](#options). +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.isMatch(string, patterns[, options]); + +console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true +console.log(picomatch.isMatch('a.a', 'b.*')); //=> false +``` + +### [.parse](lib/picomatch.js#L199) + +Parse a glob pattern to create the source string for a regular expression. + +**Params** + +* `pattern` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with useful properties and output to be used as a regex source string. + +**Example** + +```js +const picomatch = require('picomatch'); +const result = picomatch.parse(pattern[, options]); +``` + +### [.scan](lib/picomatch.js#L231) + +Scan a glob pattern to separate the pattern into segments. + +**Params** + +* `input` **{String}**: Glob pattern to scan. +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.scan(input[, options]); + +const result = picomatch.scan('!./foo/*.js'); +console.log(result); +{ prefix: '!./', + input: '!./foo/*.js', + start: 3, + base: 'foo', + glob: '*.js', + isBrace: false, + isBracket: false, + isGlob: true, + isExtglob: false, + isGlobstar: false, + negated: true } +``` + +### [.compileRe](lib/picomatch.js#L245) + +Compile a regular expression from the `state` object returned by the +[parse()](#parse) method. + +**Params** + +* `state` **{Object}** +* `options` **{Object}** +* `returnOutput` **{Boolean}**: Intended for implementors, this argument allows you to return the raw output from the parser. +* `returnState` **{Boolean}**: Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. +* `returns` **{RegExp}** + +### [.makeRe](lib/picomatch.js#L286) + +Create a regular expression from a parsed glob pattern. + +**Params** + +* `state` **{String}**: The object returned from the `.parse` method. +* `options` **{Object}** +* `returnOutput` **{Boolean}**: Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. +* `returnState` **{Boolean}**: Implementors may use this argument to return the state from the parsed glob with the returned regular expression. +* `returns` **{RegExp}**: Returns a regex created from the given pattern. + +**Example** + +```js +const picomatch = require('picomatch'); +const state = picomatch.parse('*.js'); +// picomatch.compileRe(state[, options]); + +console.log(picomatch.compileRe(state)); +//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ +``` + +### [.toRegex](lib/picomatch.js#L321) + +Create a regular expression from the given regex source string. + +**Params** + +* `source` **{String}**: Regular expression source string. +* `options` **{Object}** +* `returns` **{RegExp}** + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.toRegex(source[, options]); + +const { output } = picomatch.parse('*.js'); +console.log(picomatch.toRegex(output)); +//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ +``` + +
    + +## Options + +### Picomatch options + +The following options may be used with the main `picomatch()` function or any of the methods on the picomatch API. + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | +| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). | +| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. | +| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). | +| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` | +| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. | +| `dot` | `boolean` | `false` | Enable dotfile matching. By default, dotfiles are ignored unless a `.` is explicitly defined in the pattern, or `options.dot` is true | +| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. | +| `failglob` | `boolean` | `false` | Throws an error if no matches are found. Based on the bash option of the same name. | +| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. | +| `flags` | `string` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. | +| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. | +| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. | +| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. | +| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. | +| `matchBase` | `boolean` | `false` | Alias for `basename` | +| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. | +| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. | +| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. | +| `nocase` | `boolean` | `false` | Make matching case-insensitive. Equivalent to the regex `i` flag. Note that this option is overridden by the `flags` option. | +| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. | +| `noext` | `boolean` | `false` | Alias for `noextglob` | +| `noextglob` | `boolean` | `false` | Disable support for matching with extglobs (like `+(a\|b)`) | +| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) | +| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` | +| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. | +| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. | +| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. | +| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. | +| `posix` | `boolean` | `false` | Support POSIX character classes ("posix brackets"). | +| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself | +| `prepend` | `boolean` | `undefined` | String to prepend to the generated regex used for matching. | +| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). | +| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. | +| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. | +| `unescape` | `boolean` | `undefined` | Remove backslashes preceding escaped characters in the glob pattern. By default, backslashes are retained. | +| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatibility. | + +picomatch has automatic detection for regex positive and negative lookbehinds. If the pattern contains a negative lookbehind, you must be using Node.js >= 8.10 or else picomatch will throw an error. + +### Scan Options + +In addition to the main [picomatch options](#picomatch-options), the following options may also be used with the [.scan](#scan) method. + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `tokens` | `boolean` | `false` | When `true`, the returned object will include an array of tokens (objects), representing each path "segment" in the scanned glob pattern | +| `parts` | `boolean` | `false` | When `true`, the returned object will include an array of strings representing each path "segment" in the scanned glob pattern. This is automatically enabled when `options.tokens` is true | + +**Example** + +```js +const picomatch = require('picomatch'); +const result = picomatch.scan('!./foo/*.js', { tokens: true }); +console.log(result); +// { +// prefix: '!./', +// input: '!./foo/*.js', +// start: 3, +// base: 'foo', +// glob: '*.js', +// isBrace: false, +// isBracket: false, +// isGlob: true, +// isExtglob: false, +// isGlobstar: false, +// negated: true, +// maxDepth: 2, +// tokens: [ +// { value: '!./', depth: 0, isGlob: false, negated: true, isPrefix: true }, +// { value: 'foo', depth: 1, isGlob: false }, +// { value: '*.js', depth: 1, isGlob: true } +// ], +// slashes: [ 2, 6 ], +// parts: [ 'foo', '*.js' ] +// } +``` + +
    + +### Options Examples + +#### options.expandRange + +**Type**: `function` + +**Default**: `undefined` + +Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need. + +**Example** + +The following example shows how to create a glob that matches a folder + +```js +const fill = require('fill-range'); +const regex = pm.makeRe('foo/{01..25}/bar', { + expandRange(a, b) { + return `(${fill(a, b, { toRegex: true })})`; + } +}); + +console.log(regex); +//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/ + +console.log(regex.test('foo/00/bar')) // false +console.log(regex.test('foo/01/bar')) // true +console.log(regex.test('foo/10/bar')) // true +console.log(regex.test('foo/22/bar')) // true +console.log(regex.test('foo/25/bar')) // true +console.log(regex.test('foo/26/bar')) // false +``` + +#### options.format + +**Type**: `function` + +**Default**: `undefined` + +Custom function for formatting strings before they're matched. + +**Example** + +```js +// strip leading './' from strings +const format = str => str.replace(/^\.\//, ''); +const isMatch = picomatch('foo/*.js', { format }); +console.log(isMatch('./foo/bar.js')); //=> true +``` + +#### options.onMatch + +```js +const onMatch = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onMatch }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +#### options.onIgnore + +```js +const onIgnore = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onIgnore, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +#### options.onResult + +```js +const onResult = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onResult, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +
    +
    + +## Globbing features + +* [Basic globbing](#basic-globbing) (Wildcard matching) +* [Advanced globbing](#advanced-globbing) (extglobs, posix brackets, brace matching) + +### Basic globbing + +| **Character** | **Description** | +| --- | --- | +| `*` | Matches any character zero or more times, excluding path separators. Does _not match_ path separators or hidden files or directories ("dotfiles"), unless explicitly enabled by setting the `dot` option to `true`. | +| `**` | Matches any character zero or more times, including path separators. Note that `**` will only match path separators (`/`, and `\\` on Windows) when they are the only characters in a path segment. Thus, `foo**/bar` is equivalent to `foo*/bar`, and `foo/a**b/bar` is equivalent to `foo/a*b/bar`, and _more than two_ consecutive stars in a glob path segment are regarded as _a single star_. Thus, `foo/***/bar` is equivalent to `foo/*/bar`. | +| `?` | Matches any character excluding path separators one time. Does _not match_ path separators or leading dots. | +| `[abc]` | Matches any characters inside the brackets. For example, `[abc]` would match the characters `a`, `b` or `c`, and nothing else. | + +#### Matching behavior vs. Bash + +Picomatch's matching features and expected results in unit tests are based on Bash's unit tests and the Bash 4.3 specification, with the following exceptions: + +* Bash will match `foo/bar/baz` with `*`. Picomatch only matches nested directories with `**`. +* Bash greedily matches with negated extglobs. For example, Bash 4.3 says that `!(foo)*` should match `foo` and `foobar`, since the trailing `*` bracktracks to match the preceding pattern. This is very memory-inefficient, and IMHO, also incorrect. Picomatch would return `false` for both `foo` and `foobar`. + +
    + +### Advanced globbing + +* [extglobs](#extglobs) +* [POSIX brackets](#posix-brackets) +* [Braces](#brace-expansion) + +#### Extglobs + +| **Pattern** | **Description** | +| --- | --- | +| `@(pattern)` | Match _only one_ consecutive occurrence of `pattern` | +| `*(pattern)` | Match _zero or more_ consecutive occurrences of `pattern` | +| `+(pattern)` | Match _one or more_ consecutive occurrences of `pattern` | +| `?(pattern)` | Match _zero or **one**_ consecutive occurrences of `pattern` | +| `!(pattern)` | Match _anything but_ `pattern` | + +**Examples** + +```js +const pm = require('picomatch'); + +// *(pattern) matches ZERO or more of "pattern" +console.log(pm.isMatch('a', 'a*(z)')); // true +console.log(pm.isMatch('az', 'a*(z)')); // true +console.log(pm.isMatch('azzz', 'a*(z)')); // true + +// +(pattern) matches ONE or more of "pattern" +console.log(pm.isMatch('a', 'a*(z)')); // true +console.log(pm.isMatch('az', 'a*(z)')); // true +console.log(pm.isMatch('azzz', 'a*(z)')); // true + +// supports multiple extglobs +console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // false + +// supports nested extglobs +console.log(pm.isMatch('foo.bar', '!(!(foo)).!(!(bar))')); // true +``` + +#### POSIX brackets + +POSIX classes are disabled by default. Enable this feature by setting the `posix` option to true. + +**Enable POSIX bracket support** + +```js +console.log(pm.makeRe('[[:word:]]+', { posix: true })); +//=> /^(?:(?=.)[A-Za-z0-9_]+\/?)$/ +``` + +**Supported POSIX classes** + +The following named POSIX bracket expressions are supported: + +* `[:alnum:]` - Alphanumeric characters, equ `[a-zA-Z0-9]` +* `[:alpha:]` - Alphabetical characters, equivalent to `[a-zA-Z]`. +* `[:ascii:]` - ASCII characters, equivalent to `[\\x00-\\x7F]`. +* `[:blank:]` - Space and tab characters, equivalent to `[ \\t]`. +* `[:cntrl:]` - Control characters, equivalent to `[\\x00-\\x1F\\x7F]`. +* `[:digit:]` - Numerical digits, equivalent to `[0-9]`. +* `[:graph:]` - Graph characters, equivalent to `[\\x21-\\x7E]`. +* `[:lower:]` - Lowercase letters, equivalent to `[a-z]`. +* `[:print:]` - Print characters, equivalent to `[\\x20-\\x7E ]`. +* `[:punct:]` - Punctuation and symbols, equivalent to `[\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~]`. +* `[:space:]` - Extended space characters, equivalent to `[ \\t\\r\\n\\v\\f]`. +* `[:upper:]` - Uppercase letters, equivalent to `[A-Z]`. +* `[:word:]` - Word characters (letters, numbers and underscores), equivalent to `[A-Za-z0-9_]`. +* `[:xdigit:]` - Hexadecimal digits, equivalent to `[A-Fa-f0-9]`. + +See the [Bash Reference Manual](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html) for more information. + +### Braces + +Picomatch does not do brace expansion. For [brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html) and advanced matching with braces, use [micromatch](https://github.com/micromatch/micromatch) instead. Picomatch has very basic support for braces. + +### Matching special characters as literals + +If you wish to match the following special characters in a filepath, and you want to use these characters in your glob pattern, they must be escaped with backslashes or quotes: + +**Special Characters** + +Some characters that are used for matching in regular expressions are also regarded as valid file path characters on some platforms. + +To match any of the following characters as literals: `$^*+?()[] + +Examples: + +```js +console.log(pm.makeRe('foo/bar \\(1\\)')); +console.log(pm.makeRe('foo/bar \\(1\\)')); +``` + +
    +
    + +## Library Comparisons + +The following table shows which features are supported by [minimatch](https://github.com/isaacs/minimatch), [micromatch](https://github.com/micromatch/micromatch), [picomatch](https://github.com/micromatch/picomatch), [nanomatch](https://github.com/micromatch/nanomatch), [extglob](https://github.com/micromatch/extglob), [braces](https://github.com/micromatch/braces), and [expand-brackets](https://github.com/micromatch/expand-brackets). + +| **Feature** | `minimatch` | `micromatch` | `picomatch` | `nanomatch` | `extglob` | `braces` | `expand-brackets` | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Wildcard matching (`*?+`) | ✔ | ✔ | ✔ | ✔ | - | - | - | +| Advancing globbing | ✔ | ✔ | ✔ | - | - | - | - | +| Brace _matching_ | ✔ | ✔ | ✔ | - | - | ✔ | - | +| Brace _expansion_ | ✔ | ✔ | - | - | - | ✔ | - | +| Extglobs | partial | ✔ | ✔ | - | ✔ | - | - | +| Posix brackets | - | ✔ | ✔ | - | - | - | ✔ | +| Regular expression syntax | - | ✔ | ✔ | ✔ | ✔ | - | ✔ | +| File system operations | - | - | - | - | - | - | - | + +
    +
    + +## Benchmarks + +Performance comparison of picomatch and minimatch. + +``` +# .makeRe star + picomatch x 1,993,050 ops/sec ±0.51% (91 runs sampled) + minimatch x 627,206 ops/sec ±1.96% (87 runs sampled)) + +# .makeRe star; dot=true + picomatch x 1,436,640 ops/sec ±0.62% (91 runs sampled) + minimatch x 525,876 ops/sec ±0.60% (88 runs sampled) + +# .makeRe globstar + picomatch x 1,592,742 ops/sec ±0.42% (90 runs sampled) + minimatch x 962,043 ops/sec ±1.76% (91 runs sampled)d) + +# .makeRe globstars + picomatch x 1,615,199 ops/sec ±0.35% (94 runs sampled) + minimatch x 477,179 ops/sec ±1.33% (91 runs sampled) + +# .makeRe with leading star + picomatch x 1,220,856 ops/sec ±0.40% (92 runs sampled) + minimatch x 453,564 ops/sec ±1.43% (94 runs sampled) + +# .makeRe - basic braces + picomatch x 392,067 ops/sec ±0.70% (90 runs sampled) + minimatch x 99,532 ops/sec ±2.03% (87 runs sampled)) +``` + +
    +
    + +## Philosophies + +The goal of this library is to be blazing fast, without compromising on accuracy. + +**Accuracy** + +The number one of goal of this library is accuracy. However, it's not unusual for different glob implementations to have different rules for matching behavior, even with simple wildcard matching. It gets increasingly more complicated when combinations of different features are combined, like when extglobs are combined with globstars, braces, slashes, and so on: `!(**/{a,b,*/c})`. + +Thus, given that there is no canonical glob specification to use as a single source of truth when differences of opinion arise regarding behavior, sometimes we have to implement our best judgement and rely on feedback from users to make improvements. + +**Performance** + +Although this library performs well in benchmarks, and in most cases it's faster than other popular libraries we benchmarked against, we will always choose accuracy over performance. It's not helpful to anyone if our library is faster at returning the wrong answer. + +
    +
    + +## About + +
    +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. + +
    + +
    +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +npm install && npm test +``` + +
    + +
    +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
    + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2017-present, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). diff --git a/node_modules/picomatch/index.js b/node_modules/picomatch/index.js new file mode 100644 index 0000000..d2f2bc5 --- /dev/null +++ b/node_modules/picomatch/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/picomatch'); diff --git a/node_modules/picomatch/lib/constants.js b/node_modules/picomatch/lib/constants.js new file mode 100644 index 0000000..a62ef38 --- /dev/null +++ b/node_modules/picomatch/lib/constants.js @@ -0,0 +1,179 @@ +'use strict'; + +const path = require('path'); +const WIN_SLASH = '\\\\/'; +const WIN_NO_SLASH = `[^${WIN_SLASH}]`; + +/** + * Posix glob regex + */ + +const DOT_LITERAL = '\\.'; +const PLUS_LITERAL = '\\+'; +const QMARK_LITERAL = '\\?'; +const SLASH_LITERAL = '\\/'; +const ONE_CHAR = '(?=.)'; +const QMARK = '[^/]'; +const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; +const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; +const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; +const NO_DOT = `(?!${DOT_LITERAL})`; +const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; +const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; +const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; +const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; +const STAR = `${QMARK}*?`; + +const POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR +}; + +/** + * Windows glob regex + */ + +const WINDOWS_CHARS = { + ...POSIX_CHARS, + + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)` +}; + +/** + * POSIX Bracket Regex + */ + +const POSIX_REGEX_SOURCE = { + alnum: 'a-zA-Z0-9', + alpha: 'a-zA-Z', + ascii: '\\x00-\\x7F', + blank: ' \\t', + cntrl: '\\x00-\\x1F\\x7F', + digit: '0-9', + graph: '\\x21-\\x7E', + lower: 'a-z', + print: '\\x20-\\x7E ', + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: ' \\t\\r\\n\\v\\f', + upper: 'A-Z', + word: 'A-Za-z0-9_', + xdigit: 'A-Fa-f0-9' +}; + +module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, + + // regular expressions + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, + + // Replace globs with equivalent patterns to reduce parsing time. + REPLACEMENTS: { + '***': '*', + '**/**': '**', + '**/**/**': '**' + }, + + // Digits + CHAR_0: 48, /* 0 */ + CHAR_9: 57, /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 65, /* A */ + CHAR_LOWERCASE_A: 97, /* a */ + CHAR_UPPERCASE_Z: 90, /* Z */ + CHAR_LOWERCASE_Z: 122, /* z */ + + CHAR_LEFT_PARENTHESES: 40, /* ( */ + CHAR_RIGHT_PARENTHESES: 41, /* ) */ + + CHAR_ASTERISK: 42, /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: 38, /* & */ + CHAR_AT: 64, /* @ */ + CHAR_BACKWARD_SLASH: 92, /* \ */ + CHAR_CARRIAGE_RETURN: 13, /* \r */ + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ + CHAR_COLON: 58, /* : */ + CHAR_COMMA: 44, /* , */ + CHAR_DOT: 46, /* . */ + CHAR_DOUBLE_QUOTE: 34, /* " */ + CHAR_EQUAL: 61, /* = */ + CHAR_EXCLAMATION_MARK: 33, /* ! */ + CHAR_FORM_FEED: 12, /* \f */ + CHAR_FORWARD_SLASH: 47, /* / */ + CHAR_GRAVE_ACCENT: 96, /* ` */ + CHAR_HASH: 35, /* # */ + CHAR_HYPHEN_MINUS: 45, /* - */ + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ + CHAR_LEFT_CURLY_BRACE: 123, /* { */ + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ + CHAR_LINE_FEED: 10, /* \n */ + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ + CHAR_PERCENT: 37, /* % */ + CHAR_PLUS: 43, /* + */ + CHAR_QUESTION_MARK: 63, /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ + CHAR_RIGHT_CURLY_BRACE: 125, /* } */ + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ + CHAR_SEMICOLON: 59, /* ; */ + CHAR_SINGLE_QUOTE: 39, /* ' */ + CHAR_SPACE: 32, /* */ + CHAR_TAB: 9, /* \t */ + CHAR_UNDERSCORE: 95, /* _ */ + CHAR_VERTICAL_LINE: 124, /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ + + SEP: path.sep, + + /** + * Create EXTGLOB_CHARS + */ + + extglobChars(chars) { + return { + '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, + '?': { type: 'qmark', open: '(?:', close: ')?' }, + '+': { type: 'plus', open: '(?:', close: ')+' }, + '*': { type: 'star', open: '(?:', close: ')*' }, + '@': { type: 'at', open: '(?:', close: ')' } + }; + }, + + /** + * Create GLOB_CHARS + */ + + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; + } +}; diff --git a/node_modules/picomatch/lib/parse.js b/node_modules/picomatch/lib/parse.js new file mode 100644 index 0000000..58269d0 --- /dev/null +++ b/node_modules/picomatch/lib/parse.js @@ -0,0 +1,1091 @@ +'use strict'; + +const constants = require('./constants'); +const utils = require('./utils'); + +/** + * Constants + */ + +const { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS +} = constants; + +/** + * Helpers + */ + +const expandRange = (args, options) => { + if (typeof options.expandRange === 'function') { + return options.expandRange(...args, options); + } + + args.sort(); + const value = `[${args.join('-')}]`; + + try { + /* eslint-disable-next-line no-new */ + new RegExp(value); + } catch (ex) { + return args.map(v => utils.escapeRegex(v)).join('..'); + } + + return value; +}; + +/** + * Create the message for a syntax error + */ + +const syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; +}; + +/** + * Parse the given input string. + * @param {String} input + * @param {Object} options + * @return {Object} + */ + +const parse = (input, options) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + input = REPLACEMENTS[input] || input; + + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + + const bos = { type: 'bos', value: '', output: opts.prepend || '' }; + const tokens = [bos]; + + const capture = opts.capture ? '' : '?:'; + const win32 = utils.isWindows(options); + + // create constants based on platform, for windows or posix + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); + + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; + + const globstar = opts => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + + const nodot = opts.dot ? '' : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; + + if (opts.capture) { + star = `(${star})`; + } + + // minimatch options support + if (typeof opts.noext === 'boolean') { + opts.noextglob = opts.noext; + } + + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: '', + output: '', + prefix: '', + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; + + input = utils.removePrefix(input, state); + len = input.length; + + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; + + /** + * Tokenizing helpers + */ + + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ''; + const remaining = () => input.slice(state.index + 1); + const consume = (value = '', num = 0) => { + state.consumed += value; + state.index += num; + }; + + const append = token => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; + + const negate = () => { + let count = 1; + + while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { + advance(); + state.start++; + count++; + } + + if (count % 2 === 0) { + return false; + } + + state.negated = true; + state.start++; + return true; + }; + + const increment = type => { + state[type]++; + stack.push(type); + }; + + const decrement = type => { + state[type]--; + stack.pop(); + }; + + /** + * Push tokens onto the tokens array. This helper speeds up + * tokenizing by 1) helping us avoid backtracking as much as possible, + * and 2) helping us avoid creating extra tokens when consecutive + * characters are plain text. This improves performance and simplifies + * lookbehinds. + */ + + const push = tok => { + if (prev.type === 'globstar') { + const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); + const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); + + if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = 'star'; + prev.value = '*'; + prev.output = star; + state.output += prev.output; + } + } + + if (extglobs.length && tok.type !== 'paren') { + extglobs[extglobs.length - 1].inner += tok.value; + } + + if (tok.value || tok.output) append(tok); + if (prev && prev.type === 'text' && tok.type === 'text') { + prev.value += tok.value; + prev.output = (prev.output || '') + tok.value; + return; + } + + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; + + const extglobOpen = (type, value) => { + const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; + + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? '(' : '') + token.open; + + increment('parens'); + push({ type, value, output: state.output ? '' : ONE_CHAR }); + push({ type: 'paren', extglob: true, value: advance(), output }); + extglobs.push(token); + }; + + const extglobClose = token => { + let output = token.close + (opts.capture ? ')' : ''); + let rest; + + if (token.type === 'negate') { + let extglobStar = star; + + if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { + extglobStar = globstar(opts); + } + + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)$))${extglobStar}`; + } + + if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis. + // In this case, we need to parse the string and use it in the output of the original pattern. + // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`. + // + // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`. + const expression = parse(rest, { ...options, fastpaths: false }).output; + + output = token.close = `)${expression})${extglobStar})`; + } + + if (token.prev.type === 'bos') { + state.negatedExtglob = true; + } + } + + push({ type: 'paren', extglob: true, value, output }); + decrement('parens'); + }; + + /** + * Fast paths + */ + + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; + + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === '\\') { + backslashes = true; + return m; + } + + if (first === '?') { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ''); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); + } + return QMARK.repeat(chars.length); + } + + if (first === '.') { + return DOT_LITERAL.repeat(chars.length); + } + + if (first === '*') { + if (esc) { + return esc + first + (rest ? star : ''); + } + return star; + } + return esc ? m : `\\${m}`; + }); + + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ''); + } else { + output = output.replace(/\\+/g, m => { + return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); + }); + } + } + + if (output === input && opts.contains === true) { + state.output = input; + return state; + } + + state.output = utils.wrapOutput(output, state, options); + return state; + } + + /** + * Tokenize input until we reach end-of-string + */ + + while (!eos()) { + value = advance(); + + if (value === '\u0000') { + continue; + } + + /** + * Escaped characters + */ + + if (value === '\\') { + const next = peek(); + + if (next === '/' && opts.bash !== true) { + continue; + } + + if (next === '.' || next === ';') { + continue; + } + + if (!next) { + value += '\\'; + push({ type: 'text', value }); + continue; + } + + // collapse slashes to reduce potential for exploits + const match = /^\\+/.exec(remaining()); + let slashes = 0; + + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += '\\'; + } + } + + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); + } + + if (state.brackets === 0) { + push({ type: 'text', value }); + continue; + } + } + + /** + * If we're inside a regex character class, continue + * until we reach the closing bracket. + */ + + if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { + if (opts.posix !== false && value === ':') { + const inner = prev.value.slice(1); + if (inner.includes('[')) { + prev.posix = true; + + if (inner.includes(':')) { + const idx = prev.value.lastIndexOf('['); + const pre = prev.value.slice(0, idx); + const rest = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); + + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } + + if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { + value = `\\${value}`; + } + + if (value === ']' && (prev.value === '[' || prev.value === '[^')) { + value = `\\${value}`; + } + + if (opts.posix === true && value === '!' && prev.value === '[') { + value = '^'; + } + + prev.value += value; + append({ value }); + continue; + } + + /** + * If we're inside a quoted string, continue + * until we reach the closing double quote. + */ + + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } + + /** + * Double quotes + */ + + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: 'text', value }); + } + continue; + } + + /** + * Parentheses + */ + + if (value === '(') { + increment('parens'); + push({ type: 'paren', value }); + continue; + } + + if (value === ')') { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '(')); + } + + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + + push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); + decrement('parens'); + continue; + } + + /** + * Square brackets + */ + + if (value === '[') { + if (opts.nobracket === true || !remaining().includes(']')) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('closing', ']')); + } + + value = `\\${value}`; + } else { + increment('brackets'); + } + + push({ type: 'bracket', value }); + continue; + } + + if (value === ']') { + if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { + push({ type: 'text', value, output: `\\${value}` }); + continue; + } + + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '[')); + } + + push({ type: 'text', value, output: `\\${value}` }); + continue; + } + + decrement('brackets'); + + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { + value = `/${value}`; + } + + prev.value += value; + append({ value }); + + // when literal brackets are explicitly disabled + // assume we should match with a regex character class + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } + + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + + // when literal brackets are explicitly enabled + // assume we should escape the brackets to match literal characters + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } + + // when the user specifies nothing, try to match both + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } + + /** + * Braces + */ + + if (value === '{' && opts.nobrace !== true) { + increment('braces'); + + const open = { + type: 'brace', + value, + output: '(', + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; + + braces.push(open); + push(open); + continue; + } + + if (value === '}') { + const brace = braces[braces.length - 1]; + + if (opts.nobrace === true || !brace) { + push({ type: 'text', value, output: value }); + continue; + } + + let output = ')'; + + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; + + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === 'brace') { + break; + } + if (arr[i].type !== 'dots') { + range.unshift(arr[i].value); + } + } + + output = expandRange(range, opts); + state.backtrack = true; + } + + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = '\\{'; + value = output = '\\}'; + state.output = out; + for (const t of toks) { + state.output += (t.output || t.value); + } + } + + push({ type: 'brace', value, output }); + decrement('braces'); + braces.pop(); + continue; + } + + /** + * Pipes + */ + + if (value === '|') { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: 'text', value }); + continue; + } + + /** + * Commas + */ + + if (value === ',') { + let output = value; + + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === 'braces') { + brace.comma = true; + output = '|'; + } + + push({ type: 'comma', value, output }); + continue; + } + + /** + * Slashes + */ + + if (value === '/') { + // if the beginning of the glob is "./", advance the start + // to the current index, and don't add the "./" characters + // to the state. This greatly simplifies lookbehinds when + // checking for BOS characters like "!" and "." (not "./") + if (prev.type === 'dot' && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ''; + state.output = ''; + tokens.pop(); + prev = bos; // reset "prev" to the first token + continue; + } + + push({ type: 'slash', value, output: SLASH_LITERAL }); + continue; + } + + /** + * Dots + */ + + if (value === '.') { + if (state.braces > 0 && prev.type === 'dot') { + if (prev.value === '.') prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = 'dots'; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } + + if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { + push({ type: 'text', value, output: DOT_LITERAL }); + continue; + } + + push({ type: 'dot', value, output: DOT_LITERAL }); + continue; + } + + /** + * Question marks + */ + + if (value === '?') { + const isGroup = prev && prev.value === '('; + if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('qmark', value); + continue; + } + + if (prev && prev.type === 'paren') { + const next = peek(); + let output = value; + + if (next === '<' && !utils.supportsLookbehinds()) { + throw new Error('Node.js v10 or higher is required for regex lookbehinds'); + } + + if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { + output = `\\${value}`; + } + + push({ type: 'text', value, output }); + continue; + } + + if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { + push({ type: 'qmark', value, output: QMARK_NO_DOT }); + continue; + } + + push({ type: 'qmark', value, output: QMARK }); + continue; + } + + /** + * Exclamation + */ + + if (value === '!') { + if (opts.noextglob !== true && peek() === '(') { + if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { + extglobOpen('negate', value); + continue; + } + } + + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } + + /** + * Plus + */ + + if (value === '+') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('plus', value); + continue; + } + + if ((prev && prev.value === '(') || opts.regex === false) { + push({ type: 'plus', value, output: PLUS_LITERAL }); + continue; + } + + if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { + push({ type: 'plus', value }); + continue; + } + + push({ type: 'plus', value: PLUS_LITERAL }); + continue; + } + + /** + * Plain text + */ + + if (value === '@') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + push({ type: 'at', extglob: true, value, output: '' }); + continue; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Plain text + */ + + if (value !== '*') { + if (value === '$' || value === '^') { + value = `\\${value}`; + } + + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Stars + */ + + if (prev && (prev.type === 'globstar' || prev.star === true)) { + prev.type = 'star'; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen('star', value); + continue; + } + + if (prev.type === 'star') { + if (opts.noglobstar === true) { + consume(value); + continue; + } + + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === 'slash' || prior.type === 'bos'; + const afterStar = before && (before.type === 'star' || before.type === 'globstar'); + + if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { + push({ type: 'star', value, output: '' }); + continue; + } + + const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); + const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); + if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { + push({ type: 'star', value, output: '' }); + continue; + } + + // strip consecutive `/**/` + while (rest.slice(0, 3) === '/**') { + const after = input[state.index + 4]; + if (after && after !== '/') { + break; + } + rest = rest.slice(3); + consume('/**', 3); + } + + if (prior.type === 'bos' && eos()) { + prev.type = 'globstar'; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } + + if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + + prev.type = 'globstar'; + prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } + + if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { + const end = rest[1] !== void 0 ? '|$' : ''; + + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + + prev.type = 'globstar'; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; + + state.output += prior.output + prev.output; + state.globstar = true; + + consume(value + advance()); + + push({ type: 'slash', value: '/', output: '' }); + continue; + } + + if (prior.type === 'bos' && rest[0] === '/') { + prev.type = 'globstar'; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: 'slash', value: '/', output: '' }); + continue; + } + + // remove single star from output + state.output = state.output.slice(0, -prev.output.length); + + // reset previous token to globstar + prev.type = 'globstar'; + prev.output = globstar(opts); + prev.value += value; + + // reset output with globstar + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } + + const token = { type: 'star', value, output: star }; + + if (opts.bash === true) { + token.output = '.*?'; + if (prev.type === 'bos' || prev.type === 'slash') { + token.output = nodot + token.output; + } + push(token); + continue; + } + + if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { + token.output = value; + push(token); + continue; + } + + if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { + if (prev.type === 'dot') { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; + + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; + + } else { + state.output += nodot; + prev.output += nodot; + } + + if (peek() !== '*') { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } + + push(token); + } + + while (state.brackets > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); + state.output = utils.escapeLast(state.output, '['); + decrement('brackets'); + } + + while (state.parens > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); + state.output = utils.escapeLast(state.output, '('); + decrement('parens'); + } + + while (state.braces > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); + state.output = utils.escapeLast(state.output, '{'); + decrement('braces'); + } + + if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { + push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); + } + + // rebuild the output if we had to backtrack at any point + if (state.backtrack === true) { + state.output = ''; + + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; + + if (token.suffix) { + state.output += token.suffix; + } + } + } + + return state; +}; + +/** + * Fast paths for creating regular expressions for common glob patterns. + * This can significantly speed up processing and has very little downside + * impact when none of the fast paths match. + */ + +parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); + + // create constants based on platform, for windows or posix + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); + + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? '' : '?:'; + const state = { negated: false, prefix: '' }; + let star = opts.bash === true ? '.*?' : STAR; + + if (opts.capture) { + star = `(${star})`; + } + + const globstar = opts => { + if (opts.noglobstar === true) return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + + const create = str => { + switch (str) { + case '*': + return `${nodot}${ONE_CHAR}${star}`; + + case '.*': + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '*.*': + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '*/*': + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + + case '**': + return nodot + globstar(opts); + + case '**/*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; + + case '**/*.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '**/.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) return; + + const source = create(match[1]); + if (!source) return; + + return source + DOT_LITERAL + match[2]; + } + } + }; + + const output = utils.removePrefix(input, state); + let source = create(output); + + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; + } + + return source; +}; + +module.exports = parse; diff --git a/node_modules/picomatch/lib/picomatch.js b/node_modules/picomatch/lib/picomatch.js new file mode 100644 index 0000000..782d809 --- /dev/null +++ b/node_modules/picomatch/lib/picomatch.js @@ -0,0 +1,342 @@ +'use strict'; + +const path = require('path'); +const scan = require('./scan'); +const parse = require('./parse'); +const utils = require('./utils'); +const constants = require('./constants'); +const isObject = val => val && typeof val === 'object' && !Array.isArray(val); + +/** + * Creates a matcher function from one or more glob patterns. The + * returned function takes a string to match as its first argument, + * and returns true if the string is a match. The returned matcher + * function also takes a boolean as the second argument that, when true, + * returns an object with additional information. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch(glob[, options]); + * + * const isMatch = picomatch('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @name picomatch + * @param {String|Array} `globs` One or more glob patterns. + * @param {Object=} `options` + * @return {Function=} Returns a matcher function. + * @api public + */ + +const picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map(input => picomatch(input, options, returnState)); + const arrayMatcher = str => { + for (const isMatch of fns) { + const state = isMatch(str); + if (state) return state; + } + return false; + }; + return arrayMatcher; + } + + const isState = isObject(glob) && glob.tokens && glob.input; + + if (glob === '' || (typeof glob !== 'string' && !isState)) { + throw new TypeError('Expected pattern to be a non-empty string'); + } + + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState + ? picomatch.compileRe(glob, options) + : picomatch.makeRe(glob, options, false, true); + + const state = regex.state; + delete regex.state; + + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } + + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; + + if (typeof opts.onResult === 'function') { + opts.onResult(result); + } + + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } + + if (isIgnored(input)) { + if (typeof opts.onIgnore === 'function') { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } + + if (typeof opts.onMatch === 'function') { + opts.onMatch(result); + } + return returnObject ? result : true; + }; + + if (returnState) { + matcher.state = state; + } + + return matcher; +}; + +/** + * Test `input` with the given `regex`. This is used by the main + * `picomatch()` function to test the input string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.test(input, regex[, options]); + * + * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); + * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } + * ``` + * @param {String} `input` String to test. + * @param {RegExp} `regex` + * @return {Object} Returns an object with matching info. + * @api public + */ + +picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected input to be a string'); + } + + if (input === '') { + return { isMatch: false, output: '' }; + } + + const opts = options || {}; + const format = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = (match && format) ? format(input) : input; + + if (match === false) { + output = format ? format(input) : input; + match = output === glob; + } + + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } + + return { isMatch: Boolean(match), match, output }; +}; + +/** + * Match the basename of a filepath. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.matchBase(input, glob[, options]); + * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true + * ``` + * @param {String} `input` String to test. + * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). + * @return {Boolean} + * @api public + */ + +picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path.basename(input)); +}; + +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.isMatch(string, patterns[, options]); + * + * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String|Array} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const picomatch = require('picomatch'); + * const result = picomatch.parse(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as a regex source string. + * @api public + */ + +picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); + return parse(pattern, { ...options, fastpaths: false }); +}; + +/** + * Scan a glob pattern to separate the pattern into segments. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.scan(input[, options]); + * + * const result = picomatch.scan('!./foo/*.js'); + * console.log(result); + * { prefix: '!./', + * input: '!./foo/*.js', + * start: 3, + * base: 'foo', + * glob: '*.js', + * isBrace: false, + * isBracket: false, + * isGlob: true, + * isExtglob: false, + * isGlobstar: false, + * negated: true } + * ``` + * @param {String} `input` Glob pattern to scan. + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +picomatch.scan = (input, options) => scan(input, options); + +/** + * Compile a regular expression from the `state` object returned by the + * [parse()](#parse) method. + * + * @param {Object} `state` + * @param {Object} `options` + * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. + * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. + * @return {RegExp} + * @api public + */ + +picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; + } + + const opts = options || {}; + const prepend = opts.contains ? '' : '^'; + const append = opts.contains ? '' : '$'; + + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*$`; + } + + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } + + return regex; +}; + +/** + * Create a regular expression from a parsed glob pattern. + * + * ```js + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); + * + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `options` + * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. + * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== 'string') { + throw new TypeError('Expected a non-empty string'); + } + + let parsed = { negated: false, fastpaths: true }; + + if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + parsed.output = parse.fastpaths(input, options); + } + + if (!parsed.output) { + parsed = parse(input, options); + } + + return picomatch.compileRe(parsed, options, returnOutput, returnState); +}; + +/** + * Create a regular expression from the given regex source string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.toRegex(source[, options]); + * + * const { output } = picomatch.parse('*.js'); + * console.log(picomatch.toRegex(output)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `source` Regular expression source string. + * @param {Object} `options` + * @return {RegExp} + * @api public + */ + +picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); + } catch (err) { + if (options && options.debug === true) throw err; + return /$^/; + } +}; + +/** + * Picomatch constants. + * @return {Object} + */ + +picomatch.constants = constants; + +/** + * Expose "picomatch" + */ + +module.exports = picomatch; diff --git a/node_modules/picomatch/lib/scan.js b/node_modules/picomatch/lib/scan.js new file mode 100644 index 0000000..e59cd7a --- /dev/null +++ b/node_modules/picomatch/lib/scan.js @@ -0,0 +1,391 @@ +'use strict'; + +const utils = require('./utils'); +const { + CHAR_ASTERISK, /* * */ + CHAR_AT, /* @ */ + CHAR_BACKWARD_SLASH, /* \ */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_EXCLAMATION_MARK, /* ! */ + CHAR_FORWARD_SLASH, /* / */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_PLUS, /* + */ + CHAR_QUESTION_MARK, /* ? */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_RIGHT_SQUARE_BRACKET /* ] */ +} = require('./constants'); + +const isPathSeparator = code => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +}; + +const depth = token => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; + } +}; + +/** + * Quickly scans a glob pattern and returns an object with a handful of + * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), + * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not + * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). + * + * ```js + * const pm = require('picomatch'); + * console.log(pm.scan('foo/bar/*.js')); + * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {Object} Returns an object with tokens and regex source string. + * @api public + */ + +const scan = (input, options) => { + const opts = options || {}; + + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; + + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: '', depth: 0, isGlob: false }; + + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); + }; + + while (index < length) { + code = advance(); + let next; + + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; + + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: '', depth: 0, isGlob: false }; + + if (finished === true) continue; + if (prev === CHAR_DOT && index === (start + 1)) { + start += 2; + continue; + } + + lastIndex = index + 1; + continue; + } + + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS + || code === CHAR_AT + || code === CHAR_ASTERISK + || code === CHAR_QUESTION_MARK + || code === CHAR_EXCLAMATION_MARK; + + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } + + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } + + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } + } + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } + + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + + if (isGlob === true) { + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + } + + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } + + let base = str; + let prefix = ''; + let glob = ''; + + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } + + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ''; + glob = str; + } else { + base = str; + } + + if (base && base !== '' && base !== '/' && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + + if (opts.unescape === true) { + if (glob) glob = utils.removeBackslashes(glob); + + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; + + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } + + if (opts.parts === true || opts.tokens === true) { + let prevIndex; + + for (let idx = 0; idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== '') { + parts.push(value); + } + prevIndex = i; + } + + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } + + state.slashes = slashes; + state.parts = parts; + } + + return state; +}; + +module.exports = scan; diff --git a/node_modules/picomatch/lib/utils.js b/node_modules/picomatch/lib/utils.js new file mode 100644 index 0000000..c3ca766 --- /dev/null +++ b/node_modules/picomatch/lib/utils.js @@ -0,0 +1,64 @@ +'use strict'; + +const path = require('path'); +const win32 = process.platform === 'win32'; +const { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL +} = require('./constants'); + +exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); +exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); +exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); +exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); + +exports.removeBackslashes = str => { + return str.replace(REGEX_REMOVE_BACKSLASH, match => { + return match === '\\' ? '' : match; + }); +}; + +exports.supportsLookbehinds = () => { + const segs = process.version.slice(1).split('.').map(Number); + if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { + return true; + } + return false; +}; + +exports.isWindows = options => { + if (options && typeof options.windows === 'boolean') { + return options.windows; + } + return win32 === true || path.sep === '\\'; +}; + +exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) return input; + if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; +}; + +exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith('./')) { + output = output.slice(2); + state.prefix = './'; + } + return output; +}; + +exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? '' : '^'; + const append = options.contains ? '' : '$'; + + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*$)`; + } + return output; +}; diff --git a/node_modules/picomatch/package.json b/node_modules/picomatch/package.json new file mode 100644 index 0000000..3db22d4 --- /dev/null +++ b/node_modules/picomatch/package.json @@ -0,0 +1,81 @@ +{ + "name": "picomatch", + "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.", + "version": "2.3.1", + "homepage": "https://github.com/micromatch/picomatch", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "funding": "https://github.com/sponsors/jonschlinkert", + "repository": "micromatch/picomatch", + "bugs": { + "url": "https://github.com/micromatch/picomatch/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "lib" + ], + "main": "index.js", + "engines": { + "node": ">=8.6" + }, + "scripts": { + "lint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives --ignore-path .gitignore .", + "mocha": "mocha --reporter dot", + "test": "npm run lint && npm run mocha", + "test:ci": "npm run test:cover", + "test:cover": "nyc npm run mocha" + }, + "devDependencies": { + "eslint": "^6.8.0", + "fill-range": "^7.0.1", + "gulp-format-md": "^2.0.0", + "mocha": "^6.2.2", + "nyc": "^15.0.0", + "time-require": "github:jonschlinkert/time-require" + }, + "keywords": [ + "glob", + "match", + "picomatch" + ], + "nyc": { + "reporter": [ + "html", + "lcov", + "text-summary" + ] + }, + "verb": { + "toc": { + "render": true, + "method": "preWrite", + "maxdepth": 3 + }, + "layout": "empty", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "braces", + "micromatch" + ] + }, + "reflinks": [ + "braces", + "expand-brackets", + "extglob", + "fill-range", + "micromatch", + "minimatch", + "nanomatch", + "picomatch" + ] + } +} diff --git a/node_modules/postcss/LICENSE b/node_modules/postcss/LICENSE new file mode 100644 index 0000000..da057b4 --- /dev/null +++ b/node_modules/postcss/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2013 Andrey Sitnik + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/postcss/README.md b/node_modules/postcss/README.md new file mode 100644 index 0000000..ab7a4c4 --- /dev/null +++ b/node_modules/postcss/README.md @@ -0,0 +1,28 @@ +# PostCSS + +Philosopher’s stone, logo of PostCSS + +PostCSS is a tool for transforming styles with JS plugins. +These plugins can lint your CSS, support variables and mixins, +transpile future CSS syntax, inline images, and more. + +PostCSS is used by industry leaders including Wikipedia, Twitter, Alibaba, +and JetBrains. The [Autoprefixer] and [Stylelint] PostCSS plugins is one of the most popular CSS tools. + +--- + +  Made in Evil Martians, product consulting for developer tools. + +--- + +[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree +[Evil Martians]: https://evilmartians.com/?utm_source=postcss +[Autoprefixer]: https://github.com/postcss/autoprefixer +[Stylelint]: https://stylelint.io/ +[plugins]: https://github.com/postcss/postcss#plugins + + +## Docs +Read full docs **[here](https://postcss.org/)**. diff --git a/node_modules/postcss/lib/at-rule.d.ts b/node_modules/postcss/lib/at-rule.d.ts new file mode 100644 index 0000000..8eebc48 --- /dev/null +++ b/node_modules/postcss/lib/at-rule.d.ts @@ -0,0 +1,115 @@ +import Container, { ContainerProps } from './container.js' + +declare namespace AtRule { + export interface AtRuleRaws extends Record { + /** + * The space symbols after the last child of the node to the end of the node. + */ + after?: string + + /** + * The space between the at-rule name and its parameters. + */ + afterName?: string + + /** + * The space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + */ + before?: string + + /** + * The symbols between the last parameter and `{` for rules. + */ + between?: string + + /** + * The rule’s selector with comments. + */ + params?: { + raw: string + value: string + } + + /** + * Contains `true` if the last child has an (optional) semicolon. + */ + semicolon?: boolean + } + + export interface AtRuleProps extends ContainerProps { + /** Name of the at-rule. */ + name: string + /** Parameters following the name of the at-rule. */ + params?: number | string + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: AtRuleRaws + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { AtRule_ as default } +} + +/** + * Represents an at-rule. + * + * ```js + * Once (root, { AtRule }) { + * let media = new AtRule({ name: 'media', params: 'print' }) + * media.append(…) + * root.append(media) + * } + * ``` + * + * If it’s followed in the CSS by a `{}` block, this node will have + * a nodes property representing its children. + * + * ```js + * const root = postcss.parse('@charset "UTF-8"; @media print {}') + * + * const charset = root.first + * charset.type //=> 'atrule' + * charset.nodes //=> undefined + * + * const media = root.last + * media.nodes //=> [] + * ``` + */ +declare class AtRule_ extends Container { + /** + * The at-rule’s name immediately follows the `@`. + * + * ```js + * const root = postcss.parse('@media print {}') + * media.name //=> 'media' + * const media = root.first + * ``` + */ + name: string + /** + * The at-rule’s parameters, the values that follow the at-rule’s name + * but precede any `{}` block. + * + * ```js + * const root = postcss.parse('@media print, screen {}') + * const media = root.first + * media.params //=> 'print, screen' + * ``` + */ + params: string + parent: Container | undefined + + raws: AtRule.AtRuleRaws + + type: 'atrule' + + constructor(defaults?: AtRule.AtRuleProps) + assign(overrides: AtRule.AtRuleProps | object): this + clone(overrides?: Partial): AtRule + cloneAfter(overrides?: Partial): AtRule + cloneBefore(overrides?: Partial): AtRule +} + +declare class AtRule extends AtRule_ {} + +export = AtRule diff --git a/node_modules/postcss/lib/at-rule.js b/node_modules/postcss/lib/at-rule.js new file mode 100644 index 0000000..9486447 --- /dev/null +++ b/node_modules/postcss/lib/at-rule.js @@ -0,0 +1,25 @@ +'use strict' + +let Container = require('./container') + +class AtRule extends Container { + constructor(defaults) { + super(defaults) + this.type = 'atrule' + } + + append(...children) { + if (!this.proxyOf.nodes) this.nodes = [] + return super.append(...children) + } + + prepend(...children) { + if (!this.proxyOf.nodes) this.nodes = [] + return super.prepend(...children) + } +} + +module.exports = AtRule +AtRule.default = AtRule + +Container.registerAtRule(AtRule) diff --git a/node_modules/postcss/lib/comment.d.ts b/node_modules/postcss/lib/comment.d.ts new file mode 100644 index 0000000..d244508 --- /dev/null +++ b/node_modules/postcss/lib/comment.d.ts @@ -0,0 +1,67 @@ +import Container from './container.js' +import Node, { NodeProps } from './node.js' + +declare namespace Comment { + export interface CommentRaws extends Record { + /** + * The space symbols before the node. + */ + before?: string + + /** + * The space symbols between `/*` and the comment’s text. + */ + left?: string + + /** + * The space symbols between the comment’s text. + */ + right?: string + } + + export interface CommentProps extends NodeProps { + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: CommentRaws + /** Content of the comment. */ + text: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Comment_ as default } +} + +/** + * It represents a class that handles + * [CSS comments](https://developer.mozilla.org/en-US/docs/Web/CSS/Comments) + * + * ```js + * Once (root, { Comment }) { + * const note = new Comment({ text: 'Note: …' }) + * root.append(note) + * } + * ``` + * + * Remember that CSS comments inside selectors, at-rule parameters, + * or declaration values will be stored in the `raws` properties + * explained above. + */ +declare class Comment_ extends Node { + parent: Container | undefined + raws: Comment.CommentRaws + /** + * The comment's text. + */ + text: string + + type: 'comment' + + constructor(defaults?: Comment.CommentProps) + assign(overrides: Comment.CommentProps | object): this + clone(overrides?: Partial): Comment + cloneAfter(overrides?: Partial): Comment + cloneBefore(overrides?: Partial): Comment +} + +declare class Comment extends Comment_ {} + +export = Comment diff --git a/node_modules/postcss/lib/comment.js b/node_modules/postcss/lib/comment.js new file mode 100644 index 0000000..c566506 --- /dev/null +++ b/node_modules/postcss/lib/comment.js @@ -0,0 +1,13 @@ +'use strict' + +let Node = require('./node') + +class Comment extends Node { + constructor(defaults) { + super(defaults) + this.type = 'comment' + } +} + +module.exports = Comment +Comment.default = Comment diff --git a/node_modules/postcss/lib/container.d.ts b/node_modules/postcss/lib/container.d.ts new file mode 100644 index 0000000..bd6b1ba --- /dev/null +++ b/node_modules/postcss/lib/container.d.ts @@ -0,0 +1,452 @@ +import AtRule from './at-rule.js' +import Comment from './comment.js' +import Declaration from './declaration.js' +import Node, { ChildNode, ChildProps, NodeProps } from './node.js' +import Rule from './rule.js' + +declare namespace Container { + export interface ValueOptions { + /** + * String that’s used to narrow down values and speed up the regexp search. + */ + fast?: string + + /** + * An array of property names. + */ + props?: string[] + } + + export interface ContainerProps extends NodeProps { + nodes?: (ChildNode | ChildProps)[] + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Container_ as default } +} + +/** + * The `Root`, `AtRule`, and `Rule` container nodes + * inherit some common methods to help work with their children. + * + * Note that all containers can store any content. If you write a rule inside + * a rule, PostCSS will parse it. + */ +declare abstract class Container_ extends Node { + /** + * An array containing the container’s children. + * + * ```js + * const root = postcss.parse('a { color: black }') + * root.nodes.length //=> 1 + * root.nodes[0].selector //=> 'a' + * root.nodes[0].nodes[0].prop //=> 'color' + * ``` + */ + nodes: Child[] + + /** + * Inserts new nodes to the end of the container. + * + * ```js + * const decl1 = new Declaration({ prop: 'color', value: 'black' }) + * const decl2 = new Declaration({ prop: 'background-color', value: 'white' }) + * rule.append(decl1, decl2) + * + * root.append({ name: 'charset', params: '"UTF-8"' }) // at-rule + * root.append({ selector: 'a' }) // rule + * rule.append({ prop: 'color', value: 'black' }) // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}') + * root.first.append('color: black; z-index: 1') + * ``` + * + * @param nodes New nodes. + * @return This node for methods chain. + */ + append( + ...nodes: (ChildProps | ChildProps[] | Node | Node[] | string | string[])[] + ): this + + assign(overrides: Container.ContainerProps | object): this + clone(overrides?: Partial): Container + cloneAfter(overrides?: Partial): Container + cloneBefore(overrides?: Partial): Container + + /** + * Iterates through the container’s immediate children, + * calling `callback` for each child. + * + * Returning `false` in the callback will break iteration. + * + * This method only iterates through the container’s immediate children. + * If you need to recursively iterate through all the container’s descendant + * nodes, use `Container#walk`. + * + * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe + * if you are mutating the array of child nodes during iteration. + * PostCSS will adjust the current index to match the mutations. + * + * ```js + * const root = postcss.parse('a { color: black; z-index: 1 }') + * const rule = root.first + * + * for (const decl of rule.nodes) { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }) + * // Cycle will be infinite, because cloneBefore moves the current node + * // to the next index + * } + * + * rule.each(decl => { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }) + * // Will be executed only for color and z-index + * }) + * ``` + * + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + each( + callback: (node: Child, index: number) => false | void + ): false | undefined + + /** + * Returns `true` if callback returns `true` + * for all of the container’s children. + * + * ```js + * const noPrefixes = rule.every(i => i.prop[0] !== '-') + * ``` + * + * @param condition Iterator returns true or false. + * @return Is every child pass condition. + */ + every( + condition: (node: Child, index: number, nodes: Child[]) => boolean + ): boolean + /** + * Returns a `child`’s index within the `Container#nodes` array. + * + * ```js + * rule.index( rule.nodes[2] ) //=> 2 + * ``` + * + * @param child Child of the current container. + * @return Child index. + */ + index(child: Child | number): number + + /** + * Insert new node after old node within the container. + * + * @param oldNode Child or child’s index. + * @param newNode New node. + * @return This node for methods chain. + */ + insertAfter( + oldNode: Child | number, + newNode: Child | Child[] | ChildProps | ChildProps[] | string | string[] + ): this + /** + * Insert new node before old node within the container. + * + * ```js + * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop })) + * ``` + * + * @param oldNode Child or child’s index. + * @param newNode New node. + * @return This node for methods chain. + */ + insertBefore( + oldNode: Child | number, + newNode: Child | Child[] | ChildProps | ChildProps[] | string | string[] + ): this + + /** + * Traverses the container’s descendant nodes, calling callback + * for each comment node. + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * ```js + * root.walkComments(comment => { + * comment.remove() + * }) + * ``` + * + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + + /** + * Inserts new nodes to the start of the container. + * + * ```js + * const decl1 = new Declaration({ prop: 'color', value: 'black' }) + * const decl2 = new Declaration({ prop: 'background-color', value: 'white' }) + * rule.prepend(decl1, decl2) + * + * root.append({ name: 'charset', params: '"UTF-8"' }) // at-rule + * root.append({ selector: 'a' }) // rule + * rule.append({ prop: 'color', value: 'black' }) // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}') + * root.first.append('color: black; z-index: 1') + * ``` + * + * @param nodes New nodes. + * @return This node for methods chain. + */ + prepend( + ...nodes: (ChildProps | ChildProps[] | Node | Node[] | string | string[])[] + ): this + /** + * Add child to the end of the node. + * + * ```js + * rule.push(new Declaration({ prop: 'color', value: 'black' })) + * ``` + * + * @param child New node. + * @return This node for methods chain. + */ + push(child: Child): this + + /** + * Removes all children from the container + * and cleans their parent properties. + * + * ```js + * rule.removeAll() + * rule.nodes.length //=> 0 + * ``` + * + * @return This node for methods chain. + */ + removeAll(): this + + /** + * Removes node from the container and cleans the parent properties + * from the node and its children. + * + * ```js + * rule.nodes.length //=> 5 + * rule.removeChild(decl) + * rule.nodes.length //=> 4 + * decl.parent //=> undefined + * ``` + * + * @param child Child or child’s index. + * @return This node for methods chain. + */ + removeChild(child: Child | number): this + + replaceValues( + pattern: RegExp | string, + replaced: { (substring: string, ...args: any[]): string } | string + ): this + + /** + * Passes all declaration values within the container that match pattern + * through callback, replacing those values with the returned result + * of callback. + * + * This method is useful if you are using a custom unit or function + * and need to iterate through all values. + * + * ```js + * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => { + * return 15 * parseInt(string) + 'px' + * }) + * ``` + * + * @param pattern Replace pattern. + * @param {object} opts Options to speed up the search. + * @param callback String to replace pattern or callback + * that returns a new value. The callback + * will receive the same arguments + * as those passed to a function parameter + * of `String#replace`. + * @return This node for methods chain. + */ + replaceValues( + pattern: RegExp | string, + options: Container.ValueOptions, + replaced: { (substring: string, ...args: any[]): string } | string + ): this + + /** + * Returns `true` if callback returns `true` for (at least) one + * of the container’s children. + * + * ```js + * const hasPrefix = rule.some(i => i.prop[0] === '-') + * ``` + * + * @param condition Iterator returns true or false. + * @return Is some child pass condition. + */ + some( + condition: (node: Child, index: number, nodes: Child[]) => boolean + ): boolean + + /** + * Traverses the container’s descendant nodes, calling callback + * for each node. + * + * Like container.each(), this method is safe to use + * if you are mutating arrays during iteration. + * + * If you only need to iterate through the container’s immediate children, + * use `Container#each`. + * + * ```js + * root.walk(node => { + * // Traverses all descendant nodes. + * }) + * ``` + * + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walk( + callback: (node: ChildNode, index: number) => false | void + ): false | undefined + + /** + * Traverses the container’s descendant nodes, calling callback + * for each at-rule node. + * + * If you pass a filter, iteration will only happen over at-rules + * that have matching names. + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * ```js + * root.walkAtRules(rule => { + * if (isOld(rule.name)) rule.remove() + * }) + * + * let first = false + * root.walkAtRules('charset', rule => { + * if (!first) { + * first = true + * } else { + * rule.remove() + * } + * }) + * ``` + * + * @param name String or regular expression to filter at-rules by name. + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walkAtRules( + nameFilter: RegExp | string, + callback: (atRule: AtRule, index: number) => false | void + ): false | undefined + + walkAtRules( + callback: (atRule: AtRule, index: number) => false | void + ): false | undefined + walkComments( + callback: (comment: Comment, indexed: number) => false | void + ): false | undefined + + walkComments( + callback: (comment: Comment, indexed: number) => false | void + ): false | undefined + + /** + * Traverses the container’s descendant nodes, calling callback + * for each declaration node. + * + * If you pass a filter, iteration will only happen over declarations + * with matching properties. + * + * ```js + * root.walkDecls(decl => { + * checkPropertySupport(decl.prop) + * }) + * + * root.walkDecls('border-radius', decl => { + * decl.remove() + * }) + * + * root.walkDecls(/^background/, decl => { + * decl.value = takeFirstColorFromGradient(decl.value) + * }) + * ``` + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param prop String or regular expression to filter declarations + * by property name. + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walkDecls( + propFilter: RegExp | string, + callback: (decl: Declaration, index: number) => false | void + ): false | undefined + + walkDecls( + callback: (decl: Declaration, index: number) => false | void + ): false | undefined + + /** + * Traverses the container’s descendant nodes, calling callback + * for each rule node. + * + * If you pass a filter, iteration will only happen over rules + * with matching selectors. + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * ```js + * const selectors = [] + * root.walkRules(rule => { + * selectors.push(rule.selector) + * }) + * console.log(`Your CSS uses ${ selectors.length } selectors`) + * ``` + * + * @param selector String or regular expression to filter rules by selector. + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walkRules( + selectorFilter: RegExp | string, + callback: (rule: Rule, index: number) => false | void + ): false | undefined + walkRules( + callback: (rule: Rule, index: number) => false | void + ): false | undefined + /** + * The container’s first child. + * + * ```js + * rule.first === rules.nodes[0] + * ``` + */ + get first(): Child | undefined + /** + * The container’s last child. + * + * ```js + * rule.last === rule.nodes[rule.nodes.length - 1] + * ``` + */ + get last(): Child | undefined +} + +declare class Container extends Container_ {} + +export = Container diff --git a/node_modules/postcss/lib/container.js b/node_modules/postcss/lib/container.js new file mode 100644 index 0000000..914c053 --- /dev/null +++ b/node_modules/postcss/lib/container.js @@ -0,0 +1,439 @@ +'use strict' + +let { isClean, my } = require('./symbols') +let Declaration = require('./declaration') +let Comment = require('./comment') +let Node = require('./node') + +let parse, Rule, AtRule, Root + +function cleanSource(nodes) { + return nodes.map(i => { + if (i.nodes) i.nodes = cleanSource(i.nodes) + delete i.source + return i + }) +} + +function markDirtyUp(node) { + node[isClean] = false + if (node.proxyOf.nodes) { + for (let i of node.proxyOf.nodes) { + markDirtyUp(i) + } + } +} + +class Container extends Node { + append(...children) { + for (let child of children) { + let nodes = this.normalize(child, this.last) + for (let node of nodes) this.proxyOf.nodes.push(node) + } + + this.markDirty() + + return this + } + + cleanRaws(keepBetween) { + super.cleanRaws(keepBetween) + if (this.nodes) { + for (let node of this.nodes) node.cleanRaws(keepBetween) + } + } + + each(callback) { + if (!this.proxyOf.nodes) return undefined + let iterator = this.getIterator() + + let index, result + while (this.indexes[iterator] < this.proxyOf.nodes.length) { + index = this.indexes[iterator] + result = callback(this.proxyOf.nodes[index], index) + if (result === false) break + + this.indexes[iterator] += 1 + } + + delete this.indexes[iterator] + return result + } + + every(condition) { + return this.nodes.every(condition) + } + + getIterator() { + if (!this.lastEach) this.lastEach = 0 + if (!this.indexes) this.indexes = {} + + this.lastEach += 1 + let iterator = this.lastEach + this.indexes[iterator] = 0 + + return iterator + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (!node[prop]) { + return node[prop] + } else if ( + prop === 'each' || + (typeof prop === 'string' && prop.startsWith('walk')) + ) { + return (...args) => { + return node[prop]( + ...args.map(i => { + if (typeof i === 'function') { + return (child, index) => i(child.toProxy(), index) + } else { + return i + } + }) + ) + } + } else if (prop === 'every' || prop === 'some') { + return cb => { + return node[prop]((child, ...other) => + cb(child.toProxy(), ...other) + ) + } + } else if (prop === 'root') { + return () => node.root().toProxy() + } else if (prop === 'nodes') { + return node.nodes.map(i => i.toProxy()) + } else if (prop === 'first' || prop === 'last') { + return node[prop].toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value + if (prop === 'name' || prop === 'params' || prop === 'selector') { + node.markDirty() + } + return true + } + } + } + + index(child) { + if (typeof child === 'number') return child + if (child.proxyOf) child = child.proxyOf + return this.proxyOf.nodes.indexOf(child) + } + + insertAfter(exist, add) { + let existIndex = this.index(exist) + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse() + existIndex = this.index(exist) + for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (existIndex < index) { + this.indexes[id] = index + nodes.length + } + } + + this.markDirty() + + return this + } + + insertBefore(exist, add) { + let existIndex = this.index(exist) + let type = existIndex === 0 ? 'prepend' : false + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse() + existIndex = this.index(exist) + for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (existIndex <= index) { + this.indexes[id] = index + nodes.length + } + } + + this.markDirty() + + return this + } + + normalize(nodes, sample) { + if (typeof nodes === 'string') { + nodes = cleanSource(parse(nodes).nodes) + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0) + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore') + } + } else if (nodes.type === 'root' && this.type !== 'document') { + nodes = nodes.nodes.slice(0) + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore') + } + } else if (nodes.type) { + nodes = [nodes] + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation') + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value) + } + nodes = [new Declaration(nodes)] + } else if (nodes.selector) { + nodes = [new Rule(nodes)] + } else if (nodes.name) { + nodes = [new AtRule(nodes)] + } else if (nodes.text) { + nodes = [new Comment(nodes)] + } else { + throw new Error('Unknown node type in node creation') + } + + let processed = nodes.map(i => { + /* c8 ignore next */ + if (!i[my]) Container.rebuild(i) + i = i.proxyOf + if (i.parent) i.parent.removeChild(i) + if (i[isClean]) markDirtyUp(i) + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/\S/g, '') + } + } + i.parent = this.proxyOf + return i + }) + + return processed + } + + prepend(...children) { + children = children.reverse() + for (let child of children) { + let nodes = this.normalize(child, this.first, 'prepend').reverse() + for (let node of nodes) this.proxyOf.nodes.unshift(node) + for (let id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length + } + } + + this.markDirty() + + return this + } + + push(child) { + child.parent = this + this.proxyOf.nodes.push(child) + return this + } + + removeAll() { + for (let node of this.proxyOf.nodes) node.parent = undefined + this.proxyOf.nodes = [] + + this.markDirty() + + return this + } + + removeChild(child) { + child = this.index(child) + this.proxyOf.nodes[child].parent = undefined + this.proxyOf.nodes.splice(child, 1) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (index >= child) { + this.indexes[id] = index - 1 + } + } + + this.markDirty() + + return this + } + + replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts + opts = {} + } + + this.walkDecls(decl => { + if (opts.props && !opts.props.includes(decl.prop)) return + if (opts.fast && !decl.value.includes(opts.fast)) return + + decl.value = decl.value.replace(pattern, callback) + }) + + this.markDirty() + + return this + } + + some(condition) { + return this.nodes.some(condition) + } + + walk(callback) { + return this.each((child, i) => { + let result + try { + result = callback(child, i) + } catch (e) { + throw child.addToError(e) + } + if (result !== false && child.walk) { + result = child.walk(callback) + } + + return result + }) + } + + walkAtRules(name, callback) { + if (!callback) { + callback = name + return this.walk((child, i) => { + if (child.type === 'atrule') { + return callback(child, i) + } + }) + } + if (name instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i) + } + }) + } + + walkComments(callback) { + return this.walk((child, i) => { + if (child.type === 'comment') { + return callback(child, i) + } + }) + } + + walkDecls(prop, callback) { + if (!callback) { + callback = prop + return this.walk((child, i) => { + if (child.type === 'decl') { + return callback(child, i) + } + }) + } + if (prop instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i) + } + }) + } + + walkRules(selector, callback) { + if (!callback) { + callback = selector + + return this.walk((child, i) => { + if (child.type === 'rule') { + return callback(child, i) + } + }) + } + if (selector instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i) + } + }) + } + + get first() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[0] + } + + get last() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[this.proxyOf.nodes.length - 1] + } +} + +Container.registerParse = dependant => { + parse = dependant +} + +Container.registerRule = dependant => { + Rule = dependant +} + +Container.registerAtRule = dependant => { + AtRule = dependant +} + +Container.registerRoot = dependant => { + Root = dependant +} + +module.exports = Container +Container.default = Container + +/* c8 ignore start */ +Container.rebuild = node => { + if (node.type === 'atrule') { + Object.setPrototypeOf(node, AtRule.prototype) + } else if (node.type === 'rule') { + Object.setPrototypeOf(node, Rule.prototype) + } else if (node.type === 'decl') { + Object.setPrototypeOf(node, Declaration.prototype) + } else if (node.type === 'comment') { + Object.setPrototypeOf(node, Comment.prototype) + } else if (node.type === 'root') { + Object.setPrototypeOf(node, Root.prototype) + } + + node[my] = true + + if (node.nodes) { + node.nodes.forEach(child => { + Container.rebuild(child) + }) + } +} +/* c8 ignore stop */ diff --git a/node_modules/postcss/lib/css-syntax-error.d.ts b/node_modules/postcss/lib/css-syntax-error.d.ts new file mode 100644 index 0000000..d2d11bf --- /dev/null +++ b/node_modules/postcss/lib/css-syntax-error.d.ts @@ -0,0 +1,248 @@ +import { FilePosition } from './input.js' + +declare namespace CssSyntaxError { + /** + * A position that is part of a range. + */ + export interface RangePosition { + /** + * The column number in the input. + */ + column: number + + /** + * The line number in the input. + */ + line: number + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { CssSyntaxError_ as default } +} + +/** + * The CSS parser throws this error for broken CSS. + * + * Custom parsers can throw this error for broken custom syntax using + * the `Node#error` method. + * + * PostCSS will use the input source map to detect the original error location. + * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, + * PostCSS will show the original position in the Sass file. + * + * If you need the position in the PostCSS input + * (e.g., to debug the previous compiler), use `error.input.file`. + * + * ```js + * // Raising error from plugin + * throw node.error('Unknown variable', { plugin: 'postcss-vars' }) + * ``` + * + * ```js + * // Catching and checking syntax error + * try { + * postcss.parse('a{') + * } catch (error) { + * if (error.name === 'CssSyntaxError') { + * error //=> CssSyntaxError + * } + * } + * ``` + */ +declare class CssSyntaxError_ { + /** + * Source column of the error. + * + * ```js + * error.column //=> 1 + * error.input.column //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.column`. + */ + column?: number + + /** + * Source column of the error's end, exclusive. Provided if the error pertains + * to a range. + * + * ```js + * error.endColumn //=> 1 + * error.input.endColumn //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.endColumn`. + */ + endColumn?: number + + /** + * Source line of the error's end, exclusive. Provided if the error pertains + * to a range. + * + * ```js + * error.endLine //=> 3 + * error.input.endLine //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.endLine`. + */ + endLine?: number + + /** + * Absolute path to the broken file. + * + * ```js + * error.file //=> 'a.sass' + * error.input.file //=> 'a.css' + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.file`. + */ + file?: string + + /** + * Input object with PostCSS internal information + * about input file. If input has source map + * from previous tool, PostCSS will use origin + * (for example, Sass) source. You can use this + * object to get PostCSS input source. + * + * ```js + * error.input.file //=> 'a.css' + * error.file //=> 'a.sass' + * ``` + */ + input?: FilePosition + + /** + * Source line of the error. + * + * ```js + * error.line //=> 2 + * error.input.line //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.line`. + */ + line?: number + + /** + * Full error text in the GNU error format + * with plugin, file, line and column. + * + * ```js + * error.message //=> 'a.css:1:1: Unclosed block' + * ``` + */ + message: string + + /** + * Always equal to `'CssSyntaxError'`. You should always check error type + * by `error.name === 'CssSyntaxError'` + * instead of `error instanceof CssSyntaxError`, + * because npm could have several PostCSS versions. + * + * ```js + * if (error.name === 'CssSyntaxError') { + * error //=> CssSyntaxError + * } + * ``` + */ + name: 'CssSyntaxError' + + /** + * Plugin name, if error came from plugin. + * + * ```js + * error.plugin //=> 'postcss-vars' + * ``` + */ + plugin?: string + + /** + * Error message. + * + * ```js + * error.message //=> 'Unclosed block' + * ``` + */ + reason: string + + /** + * Source code of the broken file. + * + * ```js + * error.source //=> 'a { b {} }' + * error.input.source //=> 'a b { }' + * ``` + */ + source?: string + + stack: string + + /** + * Instantiates a CSS syntax error. Can be instantiated for a single position + * or for a range. + * @param message Error message. + * @param lineOrStartPos If for a single position, the line number, or if for + * a range, the inclusive start position of the error. + * @param columnOrEndPos If for a single position, the column number, or if for + * a range, the exclusive end position of the error. + * @param source Source code of the broken file. + * @param file Absolute path to the broken file. + * @param plugin PostCSS plugin name, if error came from plugin. + */ + constructor( + message: string, + lineOrStartPos?: CssSyntaxError.RangePosition | number, + columnOrEndPos?: CssSyntaxError.RangePosition | number, + source?: string, + file?: string, + plugin?: string + ) + + /** + * Returns a few lines of CSS source that caused the error. + * + * If the CSS has an input source map without `sourceContent`, + * this method will return an empty string. + * + * ```js + * error.showSourceCode() //=> " 4 | } + * // 5 | a { + * // > 6 | bad + * // | ^ + * // 7 | } + * // 8 | b {" + * ``` + * + * @param color Whether arrow will be colored red by terminal + * color codes. By default, PostCSS will detect + * color support by `process.stdout.isTTY` + * and `process.env.NODE_DISABLE_COLORS`. + * @return Few lines of CSS source that caused the error. + */ + showSourceCode(color?: boolean): string + + /** + * Returns error position, message and source code of the broken part. + * + * ```js + * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block + * // > 1 | a { + * // | ^" + * ``` + * + * @return Error position, message and source code. + */ + toString(): string +} + +declare class CssSyntaxError extends CssSyntaxError_ {} + +export = CssSyntaxError diff --git a/node_modules/postcss/lib/css-syntax-error.js b/node_modules/postcss/lib/css-syntax-error.js new file mode 100644 index 0000000..1693033 --- /dev/null +++ b/node_modules/postcss/lib/css-syntax-error.js @@ -0,0 +1,100 @@ +'use strict' + +let pico = require('picocolors') + +let terminalHighlight = require('./terminal-highlight') + +class CssSyntaxError extends Error { + constructor(message, line, column, source, file, plugin) { + super(message) + this.name = 'CssSyntaxError' + this.reason = message + + if (file) { + this.file = file + } + if (source) { + this.source = source + } + if (plugin) { + this.plugin = plugin + } + if (typeof line !== 'undefined' && typeof column !== 'undefined') { + if (typeof line === 'number') { + this.line = line + this.column = column + } else { + this.line = line.line + this.column = line.column + this.endLine = column.line + this.endColumn = column.column + } + } + + this.setMessage() + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError) + } + } + + setMessage() { + this.message = this.plugin ? this.plugin + ': ' : '' + this.message += this.file ? this.file : '' + if (typeof this.line !== 'undefined') { + this.message += ':' + this.line + ':' + this.column + } + this.message += ': ' + this.reason + } + + showSourceCode(color) { + if (!this.source) return '' + + let css = this.source + if (color == null) color = pico.isColorSupported + if (terminalHighlight) { + if (color) css = terminalHighlight(css) + } + + let lines = css.split(/\r?\n/) + let start = Math.max(this.line - 3, 0) + let end = Math.min(this.line + 2, lines.length) + + let maxWidth = String(end).length + + let mark, aside + if (color) { + let { bold, gray, red } = pico.createColors(true) + mark = text => bold(red(text)) + aside = text => gray(text) + } else { + mark = aside = str => str + } + + return lines + .slice(start, end) + .map((line, index) => { + let number = start + 1 + index + let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ' + if (number === this.line) { + let spacing = + aside(gutter.replace(/\d/g, ' ')) + + line.slice(0, this.column - 1).replace(/[^\t]/g, ' ') + return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^') + } + return ' ' + aside(gutter) + line + }) + .join('\n') + } + + toString() { + let code = this.showSourceCode() + if (code) { + code = '\n\n' + code + '\n' + } + return this.name + ': ' + this.message + code + } +} + +module.exports = CssSyntaxError +CssSyntaxError.default = CssSyntaxError diff --git a/node_modules/postcss/lib/declaration.d.ts b/node_modules/postcss/lib/declaration.d.ts new file mode 100644 index 0000000..655deea --- /dev/null +++ b/node_modules/postcss/lib/declaration.d.ts @@ -0,0 +1,148 @@ +import Container from './container.js' +import Node from './node.js' + +declare namespace Declaration { + export interface DeclarationRaws extends Record { + /** + * The space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + */ + before?: string + + /** + * The symbols between the property and value for declarations. + */ + between?: string + + /** + * The content of the important statement, if it is not just `!important`. + */ + important?: string + + /** + * Declaration value with comments. + */ + value?: { + raw: string + value: string + } + } + + export interface DeclarationProps { + /** Whether the declaration has an `!important` annotation. */ + important?: boolean + /** Name of the declaration. */ + prop: string + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: DeclarationRaws + /** Value of the declaration. */ + value: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Declaration_ as default } +} + +/** + * It represents a class that handles + * [CSS declarations](https://developer.mozilla.org/en-US/docs/Web/CSS/Syntax#css_declarations) + * + * ```js + * Once (root, { Declaration }) { + * const color = new Declaration({ prop: 'color', value: 'black' }) + * root.append(color) + * } + * ``` + * + * ```js + * const root = postcss.parse('a { color: black }') + * const decl = root.first?.first + * + * decl.type //=> 'decl' + * decl.toString() //=> ' color: black' + * ``` + */ +declare class Declaration_ extends Node { + /** + * It represents a specificity of the declaration. + * + * If true, the CSS declaration will have an + * [important](https://developer.mozilla.org/en-US/docs/Web/CSS/important) + * specifier. + * + * ```js + * const root = postcss.parse('a { color: black !important; color: red }') + * + * root.first.first.important //=> true + * root.first.last.important //=> undefined + * ``` + */ + important: boolean + + parent: Container | undefined + + /** + * The property name for a CSS declaration. + * + * ```js + * const root = postcss.parse('a { color: black }') + * const decl = root.first.first + * + * decl.prop //=> 'color' + * ``` + */ + prop: string + + raws: Declaration.DeclarationRaws + + type: 'decl' + + /** + * The property value for a CSS declaration. + * + * Any CSS comments inside the value string will be filtered out. + * CSS comments present in the source value will be available in + * the `raws` property. + * + * Assigning new `value` would ignore the comments in `raws` + * property while compiling node to string. + * + * ```js + * const root = postcss.parse('a { color: black }') + * const decl = root.first.first + * + * decl.value //=> 'black' + * ``` + */ + value: string + + /** + * It represents a getter that returns `true` if a declaration starts with + * `--` or `$`, which are used to declare variables in CSS and SASS/SCSS. + * + * ```js + * const root = postcss.parse(':root { --one: 1 }') + * const one = root.first.first + * + * one.variable //=> true + * ``` + * + * ```js + * const root = postcss.parse('$one: 1') + * const one = root.first + * + * one.variable //=> true + * ``` + */ + variable: boolean + + constructor(defaults?: Declaration.DeclarationProps) + assign(overrides: Declaration.DeclarationProps | object): this + clone(overrides?: Partial): Declaration + cloneAfter(overrides?: Partial): Declaration + cloneBefore(overrides?: Partial): Declaration +} + +declare class Declaration extends Declaration_ {} + +export = Declaration diff --git a/node_modules/postcss/lib/declaration.js b/node_modules/postcss/lib/declaration.js new file mode 100644 index 0000000..a04bdec --- /dev/null +++ b/node_modules/postcss/lib/declaration.js @@ -0,0 +1,24 @@ +'use strict' + +let Node = require('./node') + +class Declaration extends Node { + constructor(defaults) { + if ( + defaults && + typeof defaults.value !== 'undefined' && + typeof defaults.value !== 'string' + ) { + defaults = { ...defaults, value: String(defaults.value) } + } + super(defaults) + this.type = 'decl' + } + + get variable() { + return this.prop.startsWith('--') || this.prop[0] === '$' + } +} + +module.exports = Declaration +Declaration.default = Declaration diff --git a/node_modules/postcss/lib/document.d.ts b/node_modules/postcss/lib/document.d.ts new file mode 100644 index 0000000..f018f6e --- /dev/null +++ b/node_modules/postcss/lib/document.d.ts @@ -0,0 +1,68 @@ +import Container, { ContainerProps } from './container.js' +import { ProcessOptions } from './postcss.js' +import Result from './result.js' +import Root from './root.js' + +declare namespace Document { + export interface DocumentProps extends ContainerProps { + nodes?: Root[] + + /** + * Information to generate byte-to-byte equal node string as it was + * in the origin input. + * + * Every parser saves its own properties. + */ + raws?: Record + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Document_ as default } +} + +/** + * Represents a file and contains all its parsed nodes. + * + * **Experimental:** some aspects of this node could change within minor + * or patch version releases. + * + * ```js + * const document = htmlParser( + * '' + * ) + * document.type //=> 'document' + * document.nodes.length //=> 2 + * ``` + */ +declare class Document_ extends Container { + parent: undefined + type: 'document' + + constructor(defaults?: Document.DocumentProps) + + assign(overrides: Document.DocumentProps | object): this + clone(overrides?: Partial): Document + cloneAfter(overrides?: Partial): Document + cloneBefore(overrides?: Partial): Document + + /** + * Returns a `Result` instance representing the document’s CSS roots. + * + * ```js + * const root1 = postcss.parse(css1, { from: 'a.css' }) + * const root2 = postcss.parse(css2, { from: 'b.css' }) + * const document = postcss.document() + * document.append(root1) + * document.append(root2) + * const result = document.toResult({ to: 'all.css', map: true }) + * ``` + * + * @param opts Options. + * @return Result with current document’s CSS. + */ + toResult(options?: ProcessOptions): Result +} + +declare class Document extends Document_ {} + +export = Document diff --git a/node_modules/postcss/lib/document.js b/node_modules/postcss/lib/document.js new file mode 100644 index 0000000..4468991 --- /dev/null +++ b/node_modules/postcss/lib/document.js @@ -0,0 +1,33 @@ +'use strict' + +let Container = require('./container') + +let LazyResult, Processor + +class Document extends Container { + constructor(defaults) { + // type needs to be passed to super, otherwise child roots won't be normalized correctly + super({ type: 'document', ...defaults }) + + if (!this.nodes) { + this.nodes = [] + } + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts) + + return lazy.stringify() + } +} + +Document.registerLazyResult = dependant => { + LazyResult = dependant +} + +Document.registerProcessor = dependant => { + Processor = dependant +} + +module.exports = Document +Document.default = Document diff --git a/node_modules/postcss/lib/fromJSON.d.ts b/node_modules/postcss/lib/fromJSON.d.ts new file mode 100644 index 0000000..e1deedb --- /dev/null +++ b/node_modules/postcss/lib/fromJSON.d.ts @@ -0,0 +1,9 @@ +import { JSONHydrator } from './postcss.js' + +interface FromJSON extends JSONHydrator { + default: FromJSON +} + +declare const fromJSON: FromJSON + +export = fromJSON diff --git a/node_modules/postcss/lib/fromJSON.js b/node_modules/postcss/lib/fromJSON.js new file mode 100644 index 0000000..09f2b89 --- /dev/null +++ b/node_modules/postcss/lib/fromJSON.js @@ -0,0 +1,54 @@ +'use strict' + +let Declaration = require('./declaration') +let PreviousMap = require('./previous-map') +let Comment = require('./comment') +let AtRule = require('./at-rule') +let Input = require('./input') +let Root = require('./root') +let Rule = require('./rule') + +function fromJSON(json, inputs) { + if (Array.isArray(json)) return json.map(n => fromJSON(n)) + + let { inputs: ownInputs, ...defaults } = json + if (ownInputs) { + inputs = [] + for (let input of ownInputs) { + let inputHydrated = { ...input, __proto__: Input.prototype } + if (inputHydrated.map) { + inputHydrated.map = { + ...inputHydrated.map, + __proto__: PreviousMap.prototype + } + } + inputs.push(inputHydrated) + } + } + if (defaults.nodes) { + defaults.nodes = json.nodes.map(n => fromJSON(n, inputs)) + } + if (defaults.source) { + let { inputId, ...source } = defaults.source + defaults.source = source + if (inputId != null) { + defaults.source.input = inputs[inputId] + } + } + if (defaults.type === 'root') { + return new Root(defaults) + } else if (defaults.type === 'decl') { + return new Declaration(defaults) + } else if (defaults.type === 'rule') { + return new Rule(defaults) + } else if (defaults.type === 'comment') { + return new Comment(defaults) + } else if (defaults.type === 'atrule') { + return new AtRule(defaults) + } else { + throw new Error('Unknown node type: ' + json.type) + } +} + +module.exports = fromJSON +fromJSON.default = fromJSON diff --git a/node_modules/postcss/lib/input.d.ts b/node_modules/postcss/lib/input.d.ts new file mode 100644 index 0000000..c718bd1 --- /dev/null +++ b/node_modules/postcss/lib/input.d.ts @@ -0,0 +1,194 @@ +import { CssSyntaxError, ProcessOptions } from './postcss.js' +import PreviousMap from './previous-map.js' + +declare namespace Input { + export interface FilePosition { + /** + * Column of inclusive start position in source file. + */ + column: number + + /** + * Column of exclusive end position in source file. + */ + endColumn?: number + + /** + * Line of exclusive end position in source file. + */ + endLine?: number + + /** + * Absolute path to the source file. + */ + file?: string + + /** + * Line of inclusive start position in source file. + */ + line: number + + /** + * Source code. + */ + source?: string + + /** + * URL for the source file. + */ + url: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Input_ as default } +} + +/** + * Represents the source CSS. + * + * ```js + * const root = postcss.parse(css, { from: file }) + * const input = root.source.input + * ``` + */ +declare class Input_ { + /** + * Input CSS source. + * + * ```js + * const input = postcss.parse('a{}', { from: file }).input + * input.css //=> "a{}" + * ``` + */ + css: string + + /** + * The absolute path to the CSS source file defined + * with the `from` option. + * + * ```js + * const root = postcss.parse(css, { from: 'a.css' }) + * root.source.input.file //=> '/home/ai/a.css' + * ``` + */ + file?: string + + /** + * The flag to indicate whether or not the source code has Unicode BOM. + */ + hasBOM: boolean + + /** + * The unique ID of the CSS source. It will be created if `from` option + * is not provided (because PostCSS does not know the file path). + * + * ```js + * const root = postcss.parse(css) + * root.source.input.file //=> undefined + * root.source.input.id //=> "" + * ``` + */ + id?: string + + /** + * The input source map passed from a compilation step before PostCSS + * (for example, from Sass compiler). + * + * ```js + * root.source.input.map.consumer().sources //=> ['a.sass'] + * ``` + */ + map: PreviousMap + + /** + * @param css Input CSS source. + * @param opts Process options. + */ + constructor(css: string, opts?: ProcessOptions) + + error( + message: string, + start: + | { + column: number + line: number + } + | { + offset: number + }, + end: + | { + column: number + line: number + } + | { + offset: number + }, + opts?: { plugin?: CssSyntaxError['plugin'] } + ): CssSyntaxError + + /** + * Returns `CssSyntaxError` with information about the error and its position. + */ + error( + message: string, + line: number, + column: number, + opts?: { plugin?: CssSyntaxError['plugin'] } + ): CssSyntaxError + + error( + message: string, + offset: number, + opts?: { plugin?: CssSyntaxError['plugin'] } + ): CssSyntaxError + + /** + * Converts source offset to line and column. + * + * @param offset Source offset. + */ + fromOffset(offset: number): { col: number; line: number } | null + /** + * Reads the input source map and returns a symbol position + * in the input source (e.g., in a Sass file that was compiled + * to CSS before being passed to PostCSS). Optionally takes an + * end position, exclusive. + * + * ```js + * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 } + * root.source.input.origin(1, 1, 1, 4) + * //=> { file: 'a.css', line: 3, column: 1, endLine: 3, endColumn: 4 } + * ``` + * + * @param line Line for inclusive start position in input CSS. + * @param column Column for inclusive start position in input CSS. + * @param endLine Line for exclusive end position in input CSS. + * @param endColumn Column for exclusive end position in input CSS. + * + * @return Position in input source. + */ + origin( + line: number, + column: number, + endLine?: number, + endColumn?: number + ): false | Input.FilePosition + /** + * The CSS source identifier. Contains `Input#file` if the user + * set the `from` option, or `Input#id` if they did not. + * + * ```js + * const root = postcss.parse(css, { from: 'a.css' }) + * root.source.input.from //=> "/home/ai/a.css" + * + * const root = postcss.parse(css) + * root.source.input.from //=> "" + * ``` + */ + get from(): string +} + +declare class Input extends Input_ {} + +export = Input diff --git a/node_modules/postcss/lib/input.js b/node_modules/postcss/lib/input.js new file mode 100644 index 0000000..4b5ee5e --- /dev/null +++ b/node_modules/postcss/lib/input.js @@ -0,0 +1,248 @@ +'use strict' + +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { fileURLToPath, pathToFileURL } = require('url') +let { isAbsolute, resolve } = require('path') +let { nanoid } = require('nanoid/non-secure') + +let terminalHighlight = require('./terminal-highlight') +let CssSyntaxError = require('./css-syntax-error') +let PreviousMap = require('./previous-map') + +let fromOffsetCache = Symbol('fromOffsetCache') + +let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator) +let pathAvailable = Boolean(resolve && isAbsolute) + +class Input { + constructor(css, opts = {}) { + if ( + css === null || + typeof css === 'undefined' || + (typeof css === 'object' && !css.toString) + ) { + throw new Error(`PostCSS received ${css} instead of CSS string`) + } + + this.css = css.toString() + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.hasBOM = true + this.css = this.css.slice(1) + } else { + this.hasBOM = false + } + + if (opts.from) { + if ( + !pathAvailable || + /^\w+:\/\//.test(opts.from) || + isAbsolute(opts.from) + ) { + this.file = opts.from + } else { + this.file = resolve(opts.from) + } + } + + if (pathAvailable && sourceMapAvailable) { + let map = new PreviousMap(this.css, opts) + if (map.text) { + this.map = map + let file = map.consumer().file + if (!this.file && file) this.file = this.mapResolve(file) + } + } + + if (!this.file) { + this.id = '' + } + if (this.map) this.map.file = this.from + } + + error(message, line, column, opts = {}) { + let result, endLine, endColumn + + if (line && typeof line === 'object') { + let start = line + let end = column + if (typeof start.offset === 'number') { + let pos = this.fromOffset(start.offset) + line = pos.line + column = pos.col + } else { + line = start.line + column = start.column + } + if (typeof end.offset === 'number') { + let pos = this.fromOffset(end.offset) + endLine = pos.line + endColumn = pos.col + } else { + endLine = end.line + endColumn = end.column + } + } else if (!column) { + let pos = this.fromOffset(line) + line = pos.line + column = pos.col + } + + let origin = this.origin(line, column, endLine, endColumn) + if (origin) { + result = new CssSyntaxError( + message, + origin.endLine === undefined + ? origin.line + : { column: origin.column, line: origin.line }, + origin.endLine === undefined + ? origin.column + : { column: origin.endColumn, line: origin.endLine }, + origin.source, + origin.file, + opts.plugin + ) + } else { + result = new CssSyntaxError( + message, + endLine === undefined ? line : { column, line }, + endLine === undefined ? column : { column: endColumn, line: endLine }, + this.css, + this.file, + opts.plugin + ) + } + + result.input = { column, endColumn, endLine, line, source: this.css } + if (this.file) { + if (pathToFileURL) { + result.input.url = pathToFileURL(this.file).toString() + } + result.input.file = this.file + } + + return result + } + + fromOffset(offset) { + let lastLine, lineToIndex + if (!this[fromOffsetCache]) { + let lines = this.css.split('\n') + lineToIndex = new Array(lines.length) + let prevIndex = 0 + + for (let i = 0, l = lines.length; i < l; i++) { + lineToIndex[i] = prevIndex + prevIndex += lines[i].length + 1 + } + + this[fromOffsetCache] = lineToIndex + } else { + lineToIndex = this[fromOffsetCache] + } + lastLine = lineToIndex[lineToIndex.length - 1] + + let min = 0 + if (offset >= lastLine) { + min = lineToIndex.length - 1 + } else { + let max = lineToIndex.length - 2 + let mid + while (min < max) { + mid = min + ((max - min) >> 1) + if (offset < lineToIndex[mid]) { + max = mid - 1 + } else if (offset >= lineToIndex[mid + 1]) { + min = mid + 1 + } else { + min = mid + break + } + } + } + return { + col: offset - lineToIndex[min] + 1, + line: min + 1 + } + } + + mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file + } + return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file) + } + + origin(line, column, endLine, endColumn) { + if (!this.map) return false + let consumer = this.map.consumer() + + let from = consumer.originalPositionFor({ column, line }) + if (!from.source) return false + + let to + if (typeof endLine === 'number') { + to = consumer.originalPositionFor({ column: endColumn, line: endLine }) + } + + let fromUrl + + if (isAbsolute(from.source)) { + fromUrl = pathToFileURL(from.source) + } else { + fromUrl = new URL( + from.source, + this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile) + ) + } + + let result = { + column: from.column, + endColumn: to && to.column, + endLine: to && to.line, + line: from.line, + url: fromUrl.toString() + } + + if (fromUrl.protocol === 'file:') { + if (fileURLToPath) { + result.file = fileURLToPath(fromUrl) + } else { + /* c8 ignore next 2 */ + throw new Error(`file: protocol is not available in this PostCSS build`) + } + } + + let source = consumer.sourceContentFor(from.source) + if (source) result.source = source + + return result + } + + toJSON() { + let json = {} + for (let name of ['hasBOM', 'css', 'file', 'id']) { + if (this[name] != null) { + json[name] = this[name] + } + } + if (this.map) { + json.map = { ...this.map } + if (json.map.consumerCache) { + json.map.consumerCache = undefined + } + } + return json + } + + get from() { + return this.file || this.id + } +} + +module.exports = Input +Input.default = Input + +if (terminalHighlight && terminalHighlight.registerInput) { + terminalHighlight.registerInput(Input) +} diff --git a/node_modules/postcss/lib/lazy-result.d.ts b/node_modules/postcss/lib/lazy-result.d.ts new file mode 100644 index 0000000..dd291aa --- /dev/null +++ b/node_modules/postcss/lib/lazy-result.d.ts @@ -0,0 +1,190 @@ +import Document from './document.js' +import { SourceMap } from './postcss.js' +import Processor from './processor.js' +import Result, { Message, ResultOptions } from './result.js' +import Root from './root.js' +import Warning from './warning.js' + +declare namespace LazyResult { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { LazyResult_ as default } +} + +/** + * A Promise proxy for the result of PostCSS transformations. + * + * A `LazyResult` instance is returned by `Processor#process`. + * + * ```js + * const lazy = postcss([autoprefixer]).process(css) + * ``` + */ +declare class LazyResult_ + implements PromiseLike> +{ + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls onRejected for each error thrown in any plugin. + * + * It implements standard Promise API. + * + * ```js + * postcss([autoprefixer]).process(css).then(result => { + * console.log(result.css) + * }).catch(error => { + * console.error(error) + * }) + * ``` + */ + catch: Promise>['catch'] + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls onFinally on any error or when all plugins will finish work. + * + * It implements standard Promise API. + * + * ```js + * postcss([autoprefixer]).process(css).finally(() => { + * console.log('processing ended') + * }) + * ``` + */ + finally: Promise>['finally'] + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls `onFulfilled` with a Result instance. If a plugin throws + * an error, the `onRejected` callback will be executed. + * + * It implements standard Promise API. + * + * ```js + * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => { + * console.log(result.css) + * }) + * ``` + */ + then: Promise>['then'] + + /** + * @param processor Processor used for this transformation. + * @param css CSS to parse and transform. + * @param opts Options from the `Processor#process` or `Root#toResult`. + */ + constructor(processor: Processor, css: string, opts: ResultOptions) + + /** + * Run plugin in async way and return `Result`. + * + * @return Result with output content. + */ + async(): Promise> + + /** + * Run plugin in sync way and return `Result`. + * + * @return Result with output content. + */ + sync(): Result + + /** + * Alias for the `LazyResult#css` property. + * + * ```js + * lazy + '' === lazy.css + * ``` + * + * @return Output CSS. + */ + toString(): string + + /** + * Processes input CSS through synchronous plugins + * and calls `Result#warnings`. + * + * @return Warnings from plugins. + */ + warnings(): Warning[] + + /** + * An alias for the `css` property. Use it with syntaxes + * that generate non-CSS output. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get content(): string + + /** + * Processes input CSS through synchronous plugins, converts `Root` + * to a CSS string and returns `Result#css`. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get css(): string + + /** + * Processes input CSS through synchronous plugins + * and returns `Result#map`. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get map(): SourceMap + + /** + * Processes input CSS through synchronous plugins + * and returns `Result#messages`. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get messages(): Message[] + + /** + * Options from the `Processor#process` call. + */ + get opts(): ResultOptions + + /** + * Returns a `Processor` instance, which will be used + * for CSS transformations. + */ + get processor(): Processor + + /** + * Processes input CSS through synchronous plugins + * and returns `Result#root`. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get root(): RootNode + + /** + * Returns the default string description of an object. + * Required to implement the Promise interface. + */ + get [Symbol.toStringTag](): string +} + +declare class LazyResult< + RootNode = Document | Root +> extends LazyResult_ {} + +export = LazyResult diff --git a/node_modules/postcss/lib/lazy-result.js b/node_modules/postcss/lib/lazy-result.js new file mode 100644 index 0000000..126f40c --- /dev/null +++ b/node_modules/postcss/lib/lazy-result.js @@ -0,0 +1,550 @@ +'use strict' + +let { isClean, my } = require('./symbols') +let MapGenerator = require('./map-generator') +let stringify = require('./stringify') +let Container = require('./container') +let Document = require('./document') +let warnOnce = require('./warn-once') +let Result = require('./result') +let parse = require('./parse') +let Root = require('./root') + +const TYPE_TO_CLASS_NAME = { + atrule: 'AtRule', + comment: 'Comment', + decl: 'Declaration', + document: 'Document', + root: 'Root', + rule: 'Rule' +} + +const PLUGIN_PROPS = { + AtRule: true, + AtRuleExit: true, + Comment: true, + CommentExit: true, + Declaration: true, + DeclarationExit: true, + Document: true, + DocumentExit: true, + Once: true, + OnceExit: true, + postcssPlugin: true, + prepare: true, + Root: true, + RootExit: true, + Rule: true, + RuleExit: true +} + +const NOT_VISITORS = { + Once: true, + postcssPlugin: true, + prepare: true +} + +const CHILDREN = 0 + +function isPromise(obj) { + return typeof obj === 'object' && typeof obj.then === 'function' +} + +function getEvents(node) { + let key = false + let type = TYPE_TO_CLASS_NAME[node.type] + if (node.type === 'decl') { + key = node.prop.toLowerCase() + } else if (node.type === 'atrule') { + key = node.name.toLowerCase() + } + + if (key && node.append) { + return [ + type, + type + '-' + key, + CHILDREN, + type + 'Exit', + type + 'Exit-' + key + ] + } else if (key) { + return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key] + } else if (node.append) { + return [type, CHILDREN, type + 'Exit'] + } else { + return [type, type + 'Exit'] + } +} + +function toStack(node) { + let events + if (node.type === 'document') { + events = ['Document', CHILDREN, 'DocumentExit'] + } else if (node.type === 'root') { + events = ['Root', CHILDREN, 'RootExit'] + } else { + events = getEvents(node) + } + + return { + eventIndex: 0, + events, + iterator: 0, + node, + visitorIndex: 0, + visitors: [] + } +} + +function cleanMarks(node) { + node[isClean] = false + if (node.nodes) node.nodes.forEach(i => cleanMarks(i)) + return node +} + +let postcss = {} + +class LazyResult { + constructor(processor, css, opts) { + this.stringified = false + this.processed = false + + let root + if ( + typeof css === 'object' && + css !== null && + (css.type === 'root' || css.type === 'document') + ) { + root = cleanMarks(css) + } else if (css instanceof LazyResult || css instanceof Result) { + root = cleanMarks(css.root) + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {} + if (!opts.map.inline) opts.map.inline = false + opts.map.prev = css.map + } + } else { + let parser = parse + if (opts.syntax) parser = opts.syntax.parse + if (opts.parser) parser = opts.parser + if (parser.parse) parser = parser.parse + + try { + root = parser(css, opts) + } catch (error) { + this.processed = true + this.error = error + } + + if (root && !root[my]) { + /* c8 ignore next 2 */ + Container.rebuild(root) + } + } + + this.result = new Result(processor, root, opts) + this.helpers = { ...postcss, postcss, result: this.result } + this.plugins = this.processor.plugins.map(plugin => { + if (typeof plugin === 'object' && plugin.prepare) { + return { ...plugin, ...plugin.prepare(this.result) } + } else { + return plugin + } + }) + } + + async() { + if (this.error) return Promise.reject(this.error) + if (this.processed) return Promise.resolve(this.result) + if (!this.processing) { + this.processing = this.runAsync() + } + return this.processing + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + getAsyncError() { + throw new Error('Use process(css).then(cb) to work with async plugins') + } + + handleError(error, node) { + let plugin = this.result.lastPlugin + try { + if (node) node.addToError(error) + this.error = error + if (error.name === 'CssSyntaxError' && !error.plugin) { + error.plugin = plugin.postcssPlugin + error.setMessage() + } else if (plugin.postcssVersion) { + if (process.env.NODE_ENV !== 'production') { + let pluginName = plugin.postcssPlugin + let pluginVer = plugin.postcssVersion + let runtimeVer = this.result.processor.version + let a = pluginVer.split('.') + let b = runtimeVer.split('.') + + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + // eslint-disable-next-line no-console + console.error( + 'Unknown error from PostCSS plugin. Your current PostCSS ' + + 'version is ' + + runtimeVer + + ', but ' + + pluginName + + ' uses ' + + pluginVer + + '. Perhaps this is the source of the error below.' + ) + } + } + } + } catch (err) { + /* c8 ignore next 3 */ + // eslint-disable-next-line no-console + if (console && console.error) console.error(err) + } + return error + } + + prepareVisitors() { + this.listeners = {} + let add = (plugin, type, cb) => { + if (!this.listeners[type]) this.listeners[type] = [] + this.listeners[type].push([plugin, cb]) + } + for (let plugin of this.plugins) { + if (typeof plugin === 'object') { + for (let event in plugin) { + if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { + throw new Error( + `Unknown event ${event} in ${plugin.postcssPlugin}. ` + + `Try to update PostCSS (${this.processor.version} now).` + ) + } + if (!NOT_VISITORS[event]) { + if (typeof plugin[event] === 'object') { + for (let filter in plugin[event]) { + if (filter === '*') { + add(plugin, event, plugin[event][filter]) + } else { + add( + plugin, + event + '-' + filter.toLowerCase(), + plugin[event][filter] + ) + } + } + } else if (typeof plugin[event] === 'function') { + add(plugin, event, plugin[event]) + } + } + } + } + } + this.hasListener = Object.keys(this.listeners).length > 0 + } + + async runAsync() { + this.plugin = 0 + for (let i = 0; i < this.plugins.length; i++) { + let plugin = this.plugins[i] + let promise = this.runOnRoot(plugin) + if (isPromise(promise)) { + try { + await promise + } catch (error) { + throw this.handleError(error) + } + } + } + + this.prepareVisitors() + if (this.hasListener) { + let root = this.result.root + while (!root[isClean]) { + root[isClean] = true + let stack = [toStack(root)] + while (stack.length > 0) { + let promise = this.visitTick(stack) + if (isPromise(promise)) { + try { + await promise + } catch (e) { + let node = stack[stack.length - 1].node + throw this.handleError(e, node) + } + } + } + } + + if (this.listeners.OnceExit) { + for (let [plugin, visitor] of this.listeners.OnceExit) { + this.result.lastPlugin = plugin + try { + if (root.type === 'document') { + let roots = root.nodes.map(subRoot => + visitor(subRoot, this.helpers) + ) + + await Promise.all(roots) + } else { + await visitor(root, this.helpers) + } + } catch (e) { + throw this.handleError(e) + } + } + } + } + + this.processed = true + return this.stringify() + } + + runOnRoot(plugin) { + this.result.lastPlugin = plugin + try { + if (typeof plugin === 'object' && plugin.Once) { + if (this.result.root.type === 'document') { + let roots = this.result.root.nodes.map(root => + plugin.Once(root, this.helpers) + ) + + if (isPromise(roots[0])) { + return Promise.all(roots) + } + + return roots + } + + return plugin.Once(this.result.root, this.helpers) + } else if (typeof plugin === 'function') { + return plugin(this.result.root, this.result) + } + } catch (error) { + throw this.handleError(error) + } + } + + stringify() { + if (this.error) throw this.error + if (this.stringified) return this.result + this.stringified = true + + this.sync() + + let opts = this.result.opts + let str = stringify + if (opts.syntax) str = opts.syntax.stringify + if (opts.stringifier) str = opts.stringifier + if (str.stringify) str = str.stringify + + let map = new MapGenerator(str, this.result.root, this.result.opts) + let data = map.generate() + this.result.css = data[0] + this.result.map = data[1] + + return this.result + } + + sync() { + if (this.error) throw this.error + if (this.processed) return this.result + this.processed = true + + if (this.processing) { + throw this.getAsyncError() + } + + for (let plugin of this.plugins) { + let promise = this.runOnRoot(plugin) + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + + this.prepareVisitors() + if (this.hasListener) { + let root = this.result.root + while (!root[isClean]) { + root[isClean] = true + this.walkSync(root) + } + if (this.listeners.OnceExit) { + if (root.type === 'document') { + for (let subRoot of root.nodes) { + this.visitSync(this.listeners.OnceExit, subRoot) + } + } else { + this.visitSync(this.listeners.OnceExit, root) + } + } + } + + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this.opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ) + } + } + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this.css + } + + visitSync(visitors, node) { + for (let [plugin, visitor] of visitors) { + this.result.lastPlugin = plugin + let promise + try { + promise = visitor(node, this.helpers) + } catch (e) { + throw this.handleError(e, node.proxyOf) + } + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + return true + } + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + } + + visitTick(stack) { + let visit = stack[stack.length - 1] + let { node, visitors } = visit + + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + stack.pop() + return + } + + if (visitors.length > 0 && visit.visitorIndex < visitors.length) { + let [plugin, visitor] = visitors[visit.visitorIndex] + visit.visitorIndex += 1 + if (visit.visitorIndex === visitors.length) { + visit.visitors = [] + visit.visitorIndex = 0 + } + this.result.lastPlugin = plugin + try { + return visitor(node.toProxy(), this.helpers) + } catch (e) { + throw this.handleError(e, node) + } + } + + if (visit.iterator !== 0) { + let iterator = visit.iterator + let child + while ((child = node.nodes[node.indexes[iterator]])) { + node.indexes[iterator] += 1 + if (!child[isClean]) { + child[isClean] = true + stack.push(toStack(child)) + return + } + } + visit.iterator = 0 + delete node.indexes[iterator] + } + + let events = visit.events + while (visit.eventIndex < events.length) { + let event = events[visit.eventIndex] + visit.eventIndex += 1 + if (event === CHILDREN) { + if (node.nodes && node.nodes.length) { + node[isClean] = true + visit.iterator = node.getIterator() + } + return + } else if (this.listeners[event]) { + visit.visitors = this.listeners[event] + return + } + } + stack.pop() + } + + walkSync(node) { + node[isClean] = true + let events = getEvents(node) + for (let event of events) { + if (event === CHILDREN) { + if (node.nodes) { + node.each(child => { + if (!child[isClean]) this.walkSync(child) + }) + } + } else { + let visitors = this.listeners[event] + if (visitors) { + if (this.visitSync(visitors, node.toProxy())) return + } + } + } + } + + warnings() { + return this.sync().warnings() + } + + get content() { + return this.stringify().content + } + + get css() { + return this.stringify().css + } + + get map() { + return this.stringify().map + } + + get messages() { + return this.sync().messages + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + return this.sync().root + } + + get [Symbol.toStringTag]() { + return 'LazyResult' + } +} + +LazyResult.registerPostcss = dependant => { + postcss = dependant +} + +module.exports = LazyResult +LazyResult.default = LazyResult + +Root.registerLazyResult(LazyResult) +Document.registerLazyResult(LazyResult) diff --git a/node_modules/postcss/lib/list.d.ts b/node_modules/postcss/lib/list.d.ts new file mode 100644 index 0000000..1a74d74 --- /dev/null +++ b/node_modules/postcss/lib/list.d.ts @@ -0,0 +1,57 @@ +declare namespace list { + type List = { + /** + * Safely splits comma-separated values (such as those for `transition-*` + * and `background` properties). + * + * ```js + * Once (root, { list }) { + * list.comma('black, linear-gradient(white, black)') + * //=> ['black', 'linear-gradient(white, black)'] + * } + * ``` + * + * @param str Comma-separated values. + * @return Split values. + */ + comma(str: string): string[] + + default: List + + /** + * Safely splits space-separated values (such as those for `background`, + * `border-radius`, and other shorthand properties). + * + * ```js + * Once (root, { list }) { + * list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)'] + * } + * ``` + * + * @param str Space-separated values. + * @return Split values. + */ + space(str: string): string[] + + /** + * Safely splits values. + * + * ```js + * Once (root, { list }) { + * list.split('1px calc(10% + 1px)', [' ', '\n', '\t']) //=> ['1px', 'calc(10% + 1px)'] + * } + * ``` + * + * @param string separated values. + * @param separators array of separators. + * @param last boolean indicator. + * @return Split values. + */ + split(string: string, separators: string[], last: boolean): string[] + } +} + +// eslint-disable-next-line @typescript-eslint/no-redeclare +declare const list: list.List + +export = list diff --git a/node_modules/postcss/lib/list.js b/node_modules/postcss/lib/list.js new file mode 100644 index 0000000..1b31f98 --- /dev/null +++ b/node_modules/postcss/lib/list.js @@ -0,0 +1,58 @@ +'use strict' + +let list = { + comma(string) { + return list.split(string, [','], true) + }, + + space(string) { + let spaces = [' ', '\n', '\t'] + return list.split(string, spaces) + }, + + split(string, separators, last) { + let array = [] + let current = '' + let split = false + + let func = 0 + let inQuote = false + let prevQuote = '' + let escape = false + + for (let letter of string) { + if (escape) { + escape = false + } else if (letter === '\\') { + escape = true + } else if (inQuote) { + if (letter === prevQuote) { + inQuote = false + } + } else if (letter === '"' || letter === "'") { + inQuote = true + prevQuote = letter + } else if (letter === '(') { + func += 1 + } else if (letter === ')') { + if (func > 0) func -= 1 + } else if (func === 0) { + if (separators.includes(letter)) split = true + } + + if (split) { + if (current !== '') array.push(current.trim()) + current = '' + split = false + } else { + current += letter + } + } + + if (last || current !== '') array.push(current.trim()) + return array + } +} + +module.exports = list +list.default = list diff --git a/node_modules/postcss/lib/map-generator.js b/node_modules/postcss/lib/map-generator.js new file mode 100644 index 0000000..523b463 --- /dev/null +++ b/node_modules/postcss/lib/map-generator.js @@ -0,0 +1,359 @@ +'use strict' + +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { dirname, relative, resolve, sep } = require('path') +let { pathToFileURL } = require('url') + +let Input = require('./input') + +let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator) +let pathAvailable = Boolean(dirname && resolve && relative && sep) + +class MapGenerator { + constructor(stringify, root, opts, cssString) { + this.stringify = stringify + this.mapOpts = opts.map || {} + this.root = root + this.opts = opts + this.css = cssString + this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute + + this.memoizedFileURLs = new Map() + this.memoizedPaths = new Map() + this.memoizedURLs = new Map() + } + + addAnnotation() { + let content + + if (this.isInline()) { + content = + 'data:application/json;base64,' + this.toBase64(this.map.toString()) + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation + } else if (typeof this.mapOpts.annotation === 'function') { + content = this.mapOpts.annotation(this.opts.to, this.root) + } else { + content = this.outputFile() + '.map' + } + let eol = '\n' + if (this.css.includes('\r\n')) eol = '\r\n' + + this.css += eol + '/*# sourceMappingURL=' + content + ' */' + } + + applyPrevMaps() { + for (let prev of this.previous()) { + let from = this.toUrl(this.path(prev.file)) + let root = prev.root || dirname(prev.file) + let map + + if (this.mapOpts.sourcesContent === false) { + map = new SourceMapConsumer(prev.text) + if (map.sourcesContent) { + map.sourcesContent = map.sourcesContent.map(() => null) + } + } else { + map = prev.consumer() + } + + this.map.applySourceMap(map, from, this.toUrl(this.path(root))) + } + } + + clearAnnotation() { + if (this.mapOpts.annotation === false) return + + if (this.root) { + let node + for (let i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i] + if (node.type !== 'comment') continue + if (node.text.indexOf('# sourceMappingURL=') === 0) { + this.root.removeChild(i) + } + } + } else if (this.css) { + this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, '') + } + } + + generate() { + this.clearAnnotation() + if (pathAvailable && sourceMapAvailable && this.isMap()) { + return this.generateMap() + } else { + let result = '' + this.stringify(this.root, i => { + result += i + }) + return [result] + } + } + + generateMap() { + if (this.root) { + this.generateString() + } else if (this.previous().length === 1) { + let prev = this.previous()[0].consumer() + prev.file = this.outputFile() + this.map = SourceMapGenerator.fromSourceMap(prev) + } else { + this.map = new SourceMapGenerator({ file: this.outputFile() }) + this.map.addMapping({ + generated: { column: 0, line: 1 }, + original: { column: 0, line: 1 }, + source: this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '' + }) + } + + if (this.isSourcesContent()) this.setSourcesContent() + if (this.root && this.previous().length > 0) this.applyPrevMaps() + if (this.isAnnotation()) this.addAnnotation() + + if (this.isInline()) { + return [this.css] + } else { + return [this.css, this.map] + } + } + + generateString() { + this.css = '' + this.map = new SourceMapGenerator({ file: this.outputFile() }) + + let line = 1 + let column = 1 + + let noSource = '' + let mapping = { + generated: { column: 0, line: 0 }, + original: { column: 0, line: 0 }, + source: '' + } + + let lines, last + this.stringify(this.root, (str, node, type) => { + this.css += str + + if (node && type !== 'end') { + mapping.generated.line = line + mapping.generated.column = column - 1 + if (node.source && node.source.start) { + mapping.source = this.sourcePath(node) + mapping.original.line = node.source.start.line + mapping.original.column = node.source.start.column - 1 + this.map.addMapping(mapping) + } else { + mapping.source = noSource + mapping.original.line = 1 + mapping.original.column = 0 + this.map.addMapping(mapping) + } + } + + lines = str.match(/\n/g) + if (lines) { + line += lines.length + last = str.lastIndexOf('\n') + column = str.length - last + } else { + column += str.length + } + + if (node && type !== 'start') { + let p = node.parent || { raws: {} } + let childless = + node.type === 'decl' || (node.type === 'atrule' && !node.nodes) + if (!childless || node !== p.last || p.raws.semicolon) { + if (node.source && node.source.end) { + mapping.source = this.sourcePath(node) + mapping.original.line = node.source.end.line + mapping.original.column = node.source.end.column - 1 + mapping.generated.line = line + mapping.generated.column = column - 2 + this.map.addMapping(mapping) + } else { + mapping.source = noSource + mapping.original.line = 1 + mapping.original.column = 0 + mapping.generated.line = line + mapping.generated.column = column - 1 + this.map.addMapping(mapping) + } + } + } + }) + } + + isAnnotation() { + if (this.isInline()) { + return true + } + if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation + } + if (this.previous().length) { + return this.previous().some(i => i.annotation) + } + return true + } + + isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline + } + + let annotation = this.mapOpts.annotation + if (typeof annotation !== 'undefined' && annotation !== true) { + return false + } + + if (this.previous().length) { + return this.previous().some(i => i.inline) + } + return true + } + + isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map + } + return this.previous().length > 0 + } + + isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent + } + if (this.previous().length) { + return this.previous().some(i => i.withContent()) + } + return true + } + + outputFile() { + if (this.opts.to) { + return this.path(this.opts.to) + } else if (this.opts.from) { + return this.path(this.opts.from) + } else { + return 'to.css' + } + } + + path(file) { + if (this.mapOpts.absolute) return file + if (file.charCodeAt(0) === 60 /* `<` */) return file + if (/^\w+:\/\//.test(file)) return file + let cached = this.memoizedPaths.get(file) + if (cached) return cached + + let from = this.opts.to ? dirname(this.opts.to) : '.' + + if (typeof this.mapOpts.annotation === 'string') { + from = dirname(resolve(from, this.mapOpts.annotation)) + } + + let path = relative(from, file) + this.memoizedPaths.set(file, path) + + return path + } + + previous() { + if (!this.previousMaps) { + this.previousMaps = [] + if (this.root) { + this.root.walk(node => { + if (node.source && node.source.input.map) { + let map = node.source.input.map + if (!this.previousMaps.includes(map)) { + this.previousMaps.push(map) + } + } + }) + } else { + let input = new Input(this.css, this.opts) + if (input.map) this.previousMaps.push(input.map) + } + } + + return this.previousMaps + } + + setSourcesContent() { + let already = {} + if (this.root) { + this.root.walk(node => { + if (node.source) { + let from = node.source.input.from + if (from && !already[from]) { + already[from] = true + let fromUrl = this.usesFileUrls + ? this.toFileUrl(from) + : this.toUrl(this.path(from)) + this.map.setSourceContent(fromUrl, node.source.input.css) + } + } + }) + } else if (this.css) { + let from = this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '' + this.map.setSourceContent(from, this.css) + } + } + + sourcePath(node) { + if (this.mapOpts.from) { + return this.toUrl(this.mapOpts.from) + } else if (this.usesFileUrls) { + return this.toFileUrl(node.source.input.from) + } else { + return this.toUrl(this.path(node.source.input.from)) + } + } + + toBase64(str) { + if (Buffer) { + return Buffer.from(str).toString('base64') + } else { + return window.btoa(unescape(encodeURIComponent(str))) + } + } + + toFileUrl(path) { + let cached = this.memoizedFileURLs.get(path) + if (cached) return cached + + if (pathToFileURL) { + let fileURL = pathToFileURL(path).toString() + this.memoizedFileURLs.set(path, fileURL) + + return fileURL + } else { + throw new Error( + '`map.absolute` option is not available in this PostCSS build' + ) + } + } + + toUrl(path) { + let cached = this.memoizedURLs.get(path) + if (cached) return cached + + if (sep === '\\') { + path = path.replace(/\\/g, '/') + } + + let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent) + this.memoizedURLs.set(path, url) + + return url + } +} + +module.exports = MapGenerator diff --git a/node_modules/postcss/lib/no-work-result.d.ts b/node_modules/postcss/lib/no-work-result.d.ts new file mode 100644 index 0000000..8039076 --- /dev/null +++ b/node_modules/postcss/lib/no-work-result.d.ts @@ -0,0 +1,46 @@ +import LazyResult from './lazy-result.js' +import { SourceMap } from './postcss.js' +import Processor from './processor.js' +import Result, { Message, ResultOptions } from './result.js' +import Root from './root.js' +import Warning from './warning.js' + +declare namespace NoWorkResult { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { NoWorkResult_ as default } +} + +/** + * A Promise proxy for the result of PostCSS transformations. + * This lazy result instance doesn't parse css unless `NoWorkResult#root` or `Result#root` + * are accessed. See the example below for details. + * A `NoWork` instance is returned by `Processor#process` ONLY when no plugins defined. + * + * ```js + * const noWorkResult = postcss().process(css) // No plugins are defined. + * // CSS is not parsed + * let root = noWorkResult.root // now css is parsed because we accessed the root + * ``` + */ +declare class NoWorkResult_ implements LazyResult { + catch: Promise>['catch'] + finally: Promise>['finally'] + then: Promise>['then'] + constructor(processor: Processor, css: string, opts: ResultOptions) + async(): Promise> + sync(): Result + toString(): string + warnings(): Warning[] + get content(): string + get css(): string + get map(): SourceMap + get messages(): Message[] + get opts(): ResultOptions + get processor(): Processor + get root(): Root + get [Symbol.toStringTag](): string +} + +declare class NoWorkResult extends NoWorkResult_ {} + +export = NoWorkResult diff --git a/node_modules/postcss/lib/no-work-result.js b/node_modules/postcss/lib/no-work-result.js new file mode 100644 index 0000000..a0609f7 --- /dev/null +++ b/node_modules/postcss/lib/no-work-result.js @@ -0,0 +1,135 @@ +'use strict' + +let MapGenerator = require('./map-generator') +let stringify = require('./stringify') +let warnOnce = require('./warn-once') +let parse = require('./parse') +const Result = require('./result') + +class NoWorkResult { + constructor(processor, css, opts) { + css = css.toString() + this.stringified = false + + this._processor = processor + this._css = css + this._opts = opts + this._map = undefined + let root + + let str = stringify + this.result = new Result(this._processor, root, this._opts) + this.result.css = css + + let self = this + Object.defineProperty(this.result, 'root', { + get() { + return self.root + } + }) + + let map = new MapGenerator(str, root, this._opts, css) + if (map.isMap()) { + let [generatedCSS, generatedMap] = map.generate() + if (generatedCSS) { + this.result.css = generatedCSS + } + if (generatedMap) { + this.result.map = generatedMap + } + } + } + + async() { + if (this.error) return Promise.reject(this.error) + return Promise.resolve(this.result) + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + sync() { + if (this.error) throw this.error + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this._opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ) + } + } + + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this._css + } + + warnings() { + return [] + } + + get content() { + return this.result.css + } + + get css() { + return this.result.css + } + + get map() { + return this.result.map + } + + get messages() { + return [] + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + if (this._root) { + return this._root + } + + let root + let parser = parse + + try { + root = parser(this._css, this._opts) + } catch (error) { + this.error = error + } + + if (this.error) { + throw this.error + } else { + this._root = root + return root + } + } + + get [Symbol.toStringTag]() { + return 'NoWorkResult' + } +} + +module.exports = NoWorkResult +NoWorkResult.default = NoWorkResult diff --git a/node_modules/postcss/lib/node.d.ts b/node_modules/postcss/lib/node.d.ts new file mode 100644 index 0000000..71b3015 --- /dev/null +++ b/node_modules/postcss/lib/node.d.ts @@ -0,0 +1,536 @@ +import AtRule = require('./at-rule.js') + +import { AtRuleProps } from './at-rule.js' +import Comment, { CommentProps } from './comment.js' +import Container from './container.js' +import CssSyntaxError from './css-syntax-error.js' +import Declaration, { DeclarationProps } from './declaration.js' +import Document from './document.js' +import Input from './input.js' +import { Stringifier, Syntax } from './postcss.js' +import Result from './result.js' +import Root from './root.js' +import Rule, { RuleProps } from './rule.js' +import Warning, { WarningOptions } from './warning.js' + +declare namespace Node { + export type ChildNode = AtRule.default | Comment | Declaration | Rule + + export type AnyNode = + | AtRule.default + | Comment + | Declaration + | Document + | Root + | Rule + + export type ChildProps = + | AtRuleProps + | CommentProps + | DeclarationProps + | RuleProps + + export interface Position { + /** + * Source line in file. In contrast to `offset` it starts from 1. + */ + column: number + + /** + * Source column in file. + */ + line: number + + /** + * Source offset in file. It starts from 0. + */ + offset: number + } + + export interface Range { + /** + * End position, exclusive. + */ + end: Position + + /** + * Start position, inclusive. + */ + start: Position + } + + /** + * Source represents an interface for the {@link Node.source} property. + */ + export interface Source { + /** + * The inclusive ending position for the source + * code of a node. + */ + end?: Position + + /** + * The source file from where a node has originated. + */ + input: Input + + /** + * The inclusive starting position for the source + * code of a node. + */ + start?: Position + } + + /** + * Interface represents an interface for an object received + * as parameter by Node class constructor. + */ + export interface NodeProps { + source?: Source + } + + export interface NodeErrorOptions { + /** + * An ending index inside a node's string that should be highlighted as + * source of error. + */ + endIndex?: number + /** + * An index inside a node's string that should be highlighted as source + * of error. + */ + index?: number + /** + * Plugin name that created this error. PostCSS will set it automatically. + */ + plugin?: string + /** + * A word inside a node's string, that should be highlighted as source + * of error. + */ + word?: string + } + + // eslint-disable-next-line @typescript-eslint/no-shadow + class Node extends Node_ {} + export { Node as default } +} + +/** + * It represents an abstract class that handles common + * methods for other CSS abstract syntax tree nodes. + * + * Any node that represents CSS selector or value should + * not extend the `Node` class. + */ +declare abstract class Node_ { + /** + * It represents parent of the current node. + * + * ```js + * root.nodes[0].parent === root //=> true + * ``` + */ + parent: Container | Document | undefined + + /** + * It represents unnecessary whitespace and characters present + * in the css source code. + * + * Information to generate byte-to-byte equal node string as it was + * in the origin input. + * + * The properties of the raws object are decided by parser, + * the default parser uses the following properties: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * * `afterName`: the space between the at-rule name and its parameters. + * * `left`: the space symbols between `/*` and the comment’s text. + * * `right`: the space symbols between the comment’s text + * and */. + * - `important`: the content of the important statement, + * if it is not just `!important`. + * + * PostCSS filters out the comments inside selectors, declaration values + * and at-rule parameters but it stores the origin content in raws. + * + * ```js + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '\n ', between: ':' } + * ``` + */ + raws: any + + /** + * It represents information related to origin of a node and is required + * for generating source maps. + * + * The nodes that are created manually using the public APIs + * provided by PostCSS will have `source` undefined and + * will be absent in the source map. + * + * For this reason, the plugin developer should consider + * duplicating nodes as the duplicate node will have the + * same source as the original node by default or assign + * source to a node created manually. + * + * ```js + * decl.source.input.from //=> '/home/ai/source.css' + * decl.source.start //=> { line: 10, column: 2 } + * decl.source.end //=> { line: 10, column: 12 } + * ``` + * + * ```js + * // Incorrect method, source not specified! + * const prefixed = postcss.decl({ + * prop: '-moz-' + decl.prop, + * value: decl.value + * }) + * + * // Correct method, source is inherited when duplicating. + * const prefixed = decl.clone({ + * prop: '-moz-' + decl.prop + * }) + * ``` + * + * ```js + * if (atrule.name === 'add-link') { + * const rule = postcss.rule({ + * selector: 'a', + * source: atrule.source + * }) + * + * atrule.parent.insertBefore(atrule, rule) + * } + * ``` + */ + source?: Node.Source + + /** + * It represents type of a node in + * an abstract syntax tree. + * + * A type of node helps in identification of a node + * and perform operation based on it's type. + * + * ```js + * const declaration = new Declaration({ + * prop: 'color', + * value: 'black' + * }) + * + * declaration.type //=> 'decl' + * ``` + */ + type: string + + constructor(defaults?: object) + + /** + * Insert new node after current node to current node’s parent. + * + * Just alias for `node.parent.insertAfter(node, add)`. + * + * ```js + * decl.after('color: black') + * ``` + * + * @param newNode New node. + * @return This node for methods chain. + */ + after(newNode: Node | Node.ChildProps | Node[] | string): this + + /** + * It assigns properties to an existing node instance. + * + * ```js + * decl.assign({ prop: 'word-wrap', value: 'break-word' }) + * ``` + * + * @param overrides New properties to override the node. + * + * @return `this` for method chaining. + */ + assign(overrides: object): this + + /** + * Insert new node before current node to current node’s parent. + * + * Just alias for `node.parent.insertBefore(node, add)`. + * + * ```js + * decl.before('content: ""') + * ``` + * + * @param newNode New node. + * @return This node for methods chain. + */ + before(newNode: Node | Node.ChildProps | Node[] | string): this + + /** + * Clear the code style properties for the node and its children. + * + * ```js + * node.raws.before //=> ' ' + * node.cleanRaws() + * node.raws.before //=> undefined + * ``` + * + * @param keepBetween Keep the `raws.between` symbols. + */ + cleanRaws(keepBetween?: boolean): void + + /** + * It creates clone of an existing node, which includes all the properties + * and their values, that includes `raws` but not `type`. + * + * ```js + * decl.raws.before //=> "\n " + * const cloned = decl.clone({ prop: '-moz-' + decl.prop }) + * cloned.raws.before //=> "\n " + * cloned.toString() //=> -moz-transform: scale(0) + * ``` + * + * @param overrides New properties to override in the clone. + * + * @return Duplicate of the node instance. + */ + clone(overrides?: object): Node + + /** + * Shortcut to clone the node and insert the resulting cloned node + * after the current node. + * + * @param overrides New properties to override in the clone. + * @return New node. + */ + cloneAfter(overrides?: object): Node + + /** + * Shortcut to clone the node and insert the resulting cloned node + * before the current node. + * + * ```js + * decl.cloneBefore({ prop: '-moz-' + decl.prop }) + * ``` + * + * @param overrides Mew properties to override in the clone. + * + * @return New node + */ + cloneBefore(overrides?: object): Node + + /** + * It creates an instance of the class `CssSyntaxError` and parameters passed + * to this method are assigned to the error instance. + * + * The error instance will have description for the + * error, original position of the node in the + * source, showing line and column number. + * + * If any previous map is present, it would be used + * to get original position of the source. + * + * The Previous Map here is referred to the source map + * generated by previous compilation, example: Less, + * Stylus and Sass. + * + * This method returns the error instance instead of + * throwing it. + * + * ```js + * if (!variables[name]) { + * throw decl.error(`Unknown variable ${name}`, { word: name }) + * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black + * // color: $black + * // a + * // ^ + * // background: white + * } + * ``` + * + * @param message Description for the error instance. + * @param options Options for the error instance. + * + * @return Error instance is returned. + */ + error(message: string, options?: Node.NodeErrorOptions): CssSyntaxError + + /** + * Returns the next child of the node’s parent. + * Returns `undefined` if the current node is the last child. + * + * ```js + * if (comment.text === 'delete next') { + * const next = comment.next() + * if (next) { + * next.remove() + * } + * } + * ``` + * + * @return Next node. + */ + next(): Node.ChildNode | undefined + + /** + * Get the position for a word or an index inside the node. + * + * @param opts Options. + * @return Position. + */ + positionBy(opts?: Pick): Node.Position + + /** + * Convert string index to line/column. + * + * @param index The symbol number in the node’s string. + * @return Symbol position in file. + */ + positionInside(index: number): Node.Position + + /** + * Returns the previous child of the node’s parent. + * Returns `undefined` if the current node is the first child. + * + * ```js + * const annotation = decl.prev() + * if (annotation.type === 'comment') { + * readAnnotation(annotation.text) + * } + * ``` + * + * @return Previous node. + */ + prev(): Node.ChildNode | undefined + + /** + * Get the range for a word or start and end index inside the node. + * The start index is inclusive; the end index is exclusive. + * + * @param opts Options. + * @return Range. + */ + rangeBy( + opts?: Pick + ): Node.Range + + /** + * Returns a `raws` value. If the node is missing + * the code style property (because the node was manually built or cloned), + * PostCSS will try to autodetect the code style property by looking + * at other nodes in the tree. + * + * ```js + * const root = postcss.parse('a { background: white }') + * root.nodes[0].append({ prop: 'color', value: 'black' }) + * root.nodes[0].nodes[1].raws.before //=> undefined + * root.nodes[0].nodes[1].raw('before') //=> ' ' + * ``` + * + * @param prop Name of code style property. + * @param defaultType Name of default value, it can be missed + * if the value is the same as prop. + * @return {string} Code style value. + */ + raw(prop: string, defaultType?: string): string + + /** + * It removes the node from its parent and deletes its parent property. + * + * ```js + * if (decl.prop.match(/^-webkit-/)) { + * decl.remove() + * } + * ``` + * + * @return `this` for method chaining. + */ + remove(): this + + /** + * Inserts node(s) before the current node and removes the current node. + * + * ```js + * AtRule: { + * mixin: atrule => { + * atrule.replaceWith(mixinRules[atrule.params]) + * } + * } + * ``` + * + * @param nodes Mode(s) to replace current one. + * @return Current node to methods chain. + */ + replaceWith( + ...nodes: ( + | Node.ChildNode + | Node.ChildNode[] + | Node.ChildProps + | Node.ChildProps[] + )[] + ): this + + /** + * Finds the Root instance of the node’s tree. + * + * ```js + * root.nodes[0].nodes[0].root() === root + * ``` + * + * @return Root parent. + */ + root(): Root + + /** + * Fix circular links on `JSON.stringify()`. + * + * @return Cleaned object. + */ + toJSON(): object + + /** + * It compiles the node to browser readable cascading style sheets string + * depending on it's type. + * + * ```js + * new Rule({ selector: 'a' }).toString() //=> "a {}" + * ``` + * + * @param stringifier A syntax to use in string generation. + * @return CSS string of this node. + */ + toString(stringifier?: Stringifier | Syntax): string + + /** + * It is a wrapper for {@link Result#warn}, providing convenient + * way of generating warnings. + * + * ```js + * Declaration: { + * bad: (decl, { result }) => { + * decl.warn(result, 'Deprecated property: bad') + * } + * } + * ``` + * + * @param result The `Result` instance that will receive the warning. + * @param message Description for the warning. + * @param options Options for the warning. + * + * @return `Warning` instance is returned + */ + warn(result: Result, message: string, options?: WarningOptions): Warning +} + +declare class Node extends Node_ { } + +export = Node diff --git a/node_modules/postcss/lib/node.js b/node_modules/postcss/lib/node.js new file mode 100644 index 0000000..d79dd56 --- /dev/null +++ b/node_modules/postcss/lib/node.js @@ -0,0 +1,381 @@ +'use strict' + +let { isClean, my } = require('./symbols') +let CssSyntaxError = require('./css-syntax-error') +let Stringifier = require('./stringifier') +let stringify = require('./stringify') + +function cloneNode(obj, parent) { + let cloned = new obj.constructor() + + for (let i in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, i)) { + /* c8 ignore next 2 */ + continue + } + if (i === 'proxyCache') continue + let value = obj[i] + let type = typeof value + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent + } else if (i === 'source') { + cloned[i] = value + } else if (Array.isArray(value)) { + cloned[i] = value.map(j => cloneNode(j, cloned)) + } else { + if (type === 'object' && value !== null) value = cloneNode(value) + cloned[i] = value + } + } + + return cloned +} + +class Node { + constructor(defaults = {}) { + this.raws = {} + this[isClean] = false + this[my] = true + + for (let name in defaults) { + if (name === 'nodes') { + this.nodes = [] + for (let node of defaults[name]) { + if (typeof node.clone === 'function') { + this.append(node.clone()) + } else { + this.append(node) + } + } + } else { + this[name] = defaults[name] + } + } + } + + addToError(error) { + error.postcssNode = this + if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { + let s = this.source + error.stack = error.stack.replace( + /\n\s{4}at /, + `$&${s.input.from}:${s.start.line}:${s.start.column}$&` + ) + } + return error + } + + after(add) { + this.parent.insertAfter(this, add) + return this + } + + assign(overrides = {}) { + for (let name in overrides) { + this[name] = overrides[name] + } + return this + } + + before(add) { + this.parent.insertBefore(this, add) + return this + } + + cleanRaws(keepBetween) { + delete this.raws.before + delete this.raws.after + if (!keepBetween) delete this.raws.between + } + + clone(overrides = {}) { + let cloned = cloneNode(this) + for (let name in overrides) { + cloned[name] = overrides[name] + } + return cloned + } + + cloneAfter(overrides = {}) { + let cloned = this.clone(overrides) + this.parent.insertAfter(this, cloned) + return cloned + } + + cloneBefore(overrides = {}) { + let cloned = this.clone(overrides) + this.parent.insertBefore(this, cloned) + return cloned + } + + error(message, opts = {}) { + if (this.source) { + let { end, start } = this.rangeBy(opts) + return this.source.input.error( + message, + { column: start.column, line: start.line }, + { column: end.column, line: end.line }, + opts + ) + } + return new CssSyntaxError(message) + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (prop === 'root') { + return () => node.root().toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value + if ( + prop === 'prop' || + prop === 'value' || + prop === 'name' || + prop === 'params' || + prop === 'important' || + /* c8 ignore next */ + prop === 'text' + ) { + node.markDirty() + } + return true + } + } + } + + markDirty() { + if (this[isClean]) { + this[isClean] = false + let next = this + while ((next = next.parent)) { + next[isClean] = false + } + } + } + + next() { + if (!this.parent) return undefined + let index = this.parent.index(this) + return this.parent.nodes[index + 1] + } + + positionBy(opts, stringRepresentation) { + let pos = this.source.start + if (opts.index) { + pos = this.positionInside(opts.index, stringRepresentation) + } else if (opts.word) { + stringRepresentation = this.toString() + let index = stringRepresentation.indexOf(opts.word) + if (index !== -1) pos = this.positionInside(index, stringRepresentation) + } + return pos + } + + positionInside(index, stringRepresentation) { + let string = stringRepresentation || this.toString() + let column = this.source.start.column + let line = this.source.start.line + + for (let i = 0; i < index; i++) { + if (string[i] === '\n') { + column = 1 + line += 1 + } else { + column += 1 + } + } + + return { column, line } + } + + prev() { + if (!this.parent) return undefined + let index = this.parent.index(this) + return this.parent.nodes[index - 1] + } + + rangeBy(opts) { + let start = { + column: this.source.start.column, + line: this.source.start.line + } + let end = this.source.end + ? { + column: this.source.end.column + 1, + line: this.source.end.line + } + : { + column: start.column + 1, + line: start.line + } + + if (opts.word) { + let stringRepresentation = this.toString() + let index = stringRepresentation.indexOf(opts.word) + if (index !== -1) { + start = this.positionInside(index, stringRepresentation) + end = this.positionInside(index + opts.word.length, stringRepresentation) + } + } else { + if (opts.start) { + start = { + column: opts.start.column, + line: opts.start.line + } + } else if (opts.index) { + start = this.positionInside(opts.index) + } + + if (opts.end) { + end = { + column: opts.end.column, + line: opts.end.line + } + } else if (opts.endIndex) { + end = this.positionInside(opts.endIndex) + } else if (opts.index) { + end = this.positionInside(opts.index + 1) + } + } + + if ( + end.line < start.line || + (end.line === start.line && end.column <= start.column) + ) { + end = { column: start.column + 1, line: start.line } + } + + return { end, start } + } + + raw(prop, defaultType) { + let str = new Stringifier() + return str.raw(this, prop, defaultType) + } + + remove() { + if (this.parent) { + this.parent.removeChild(this) + } + this.parent = undefined + return this + } + + replaceWith(...nodes) { + if (this.parent) { + let bookmark = this + let foundSelf = false + for (let node of nodes) { + if (node === this) { + foundSelf = true + } else if (foundSelf) { + this.parent.insertAfter(bookmark, node) + bookmark = node + } else { + this.parent.insertBefore(bookmark, node) + } + } + + if (!foundSelf) { + this.remove() + } + } + + return this + } + + root() { + let result = this + while (result.parent && result.parent.type !== 'document') { + result = result.parent + } + return result + } + + toJSON(_, inputs) { + let fixed = {} + let emitInputs = inputs == null + inputs = inputs || new Map() + let inputsNextIndex = 0 + + for (let name in this) { + if (!Object.prototype.hasOwnProperty.call(this, name)) { + /* c8 ignore next 2 */ + continue + } + if (name === 'parent' || name === 'proxyCache') continue + let value = this[name] + + if (Array.isArray(value)) { + fixed[name] = value.map(i => { + if (typeof i === 'object' && i.toJSON) { + return i.toJSON(null, inputs) + } else { + return i + } + }) + } else if (typeof value === 'object' && value.toJSON) { + fixed[name] = value.toJSON(null, inputs) + } else if (name === 'source') { + let inputId = inputs.get(value.input) + if (inputId == null) { + inputId = inputsNextIndex + inputs.set(value.input, inputsNextIndex) + inputsNextIndex++ + } + fixed[name] = { + end: value.end, + inputId, + start: value.start + } + } else { + fixed[name] = value + } + } + + if (emitInputs) { + fixed.inputs = [...inputs.keys()].map(input => input.toJSON()) + } + + return fixed + } + + toProxy() { + if (!this.proxyCache) { + this.proxyCache = new Proxy(this, this.getProxyProcessor()) + } + return this.proxyCache + } + + toString(stringifier = stringify) { + if (stringifier.stringify) stringifier = stringifier.stringify + let result = '' + stringifier(this, i => { + result += i + }) + return result + } + + warn(result, text, opts) { + let data = { node: this } + for (let i in opts) data[i] = opts[i] + return result.warn(text, data) + } + + get proxyOf() { + return this + } +} + +module.exports = Node +Node.default = Node diff --git a/node_modules/postcss/lib/parse.d.ts b/node_modules/postcss/lib/parse.d.ts new file mode 100644 index 0000000..4c943a4 --- /dev/null +++ b/node_modules/postcss/lib/parse.d.ts @@ -0,0 +1,9 @@ +import { Parser } from './postcss.js' + +interface Parse extends Parser { + default: Parse +} + +declare const parse: Parse + +export = parse diff --git a/node_modules/postcss/lib/parse.js b/node_modules/postcss/lib/parse.js new file mode 100644 index 0000000..971431f --- /dev/null +++ b/node_modules/postcss/lib/parse.js @@ -0,0 +1,42 @@ +'use strict' + +let Container = require('./container') +let Parser = require('./parser') +let Input = require('./input') + +function parse(css, opts) { + let input = new Input(css, opts) + let parser = new Parser(input) + try { + parser.parse() + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + if (e.name === 'CssSyntaxError' && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += + '\nYou tried to parse SCSS with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-scss parser' + } else if (/\.sass/i.test(opts.from)) { + e.message += + '\nYou tried to parse Sass with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-sass parser' + } else if (/\.less$/i.test(opts.from)) { + e.message += + '\nYou tried to parse Less with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-less parser' + } + } + } + throw e + } + + return parser.root +} + +module.exports = parse +parse.default = parse + +Container.registerParse(parse) diff --git a/node_modules/postcss/lib/parser.js b/node_modules/postcss/lib/parser.js new file mode 100644 index 0000000..e1e2e19 --- /dev/null +++ b/node_modules/postcss/lib/parser.js @@ -0,0 +1,610 @@ +'use strict' + +let Declaration = require('./declaration') +let tokenizer = require('./tokenize') +let Comment = require('./comment') +let AtRule = require('./at-rule') +let Root = require('./root') +let Rule = require('./rule') + +const SAFE_COMMENT_NEIGHBOR = { + empty: true, + space: true +} + +function findLastWithPosition(tokens) { + for (let i = tokens.length - 1; i >= 0; i--) { + let token = tokens[i] + let pos = token[3] || token[2] + if (pos) return pos + } +} + +class Parser { + constructor(input) { + this.input = input + + this.root = new Root() + this.current = this.root + this.spaces = '' + this.semicolon = false + this.customProperty = false + + this.createTokenizer() + this.root.source = { input, start: { column: 1, line: 1, offset: 0 } } + } + + atrule(token) { + let node = new AtRule() + node.name = token[1].slice(1) + if (node.name === '') { + this.unnamedAtrule(node, token) + } + this.init(node, token[2]) + + let type + let prev + let shift + let last = false + let open = false + let params = [] + let brackets = [] + + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken() + type = token[0] + + if (type === '(' || type === '[') { + brackets.push(type === '(' ? ')' : ']') + } else if (type === '{' && brackets.length > 0) { + brackets.push('}') + } else if (type === brackets[brackets.length - 1]) { + brackets.pop() + } + + if (brackets.length === 0) { + if (type === ';') { + node.source.end = this.getPosition(token[2]) + node.source.end.offset++ + this.semicolon = true + break + } else if (type === '{') { + open = true + break + } else if (type === '}') { + if (params.length > 0) { + shift = params.length - 1 + prev = params[shift] + while (prev && prev[0] === 'space') { + prev = params[--shift] + } + if (prev) { + node.source.end = this.getPosition(prev[3] || prev[2]) + node.source.end.offset++ + } + } + this.end(token) + break + } else { + params.push(token) + } + } else { + params.push(token) + } + + if (this.tokenizer.endOfFile()) { + last = true + break + } + } + + node.raws.between = this.spacesAndCommentsFromEnd(params) + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params) + this.raw(node, 'params', params) + if (last) { + token = params[params.length - 1] + node.source.end = this.getPosition(token[3] || token[2]) + node.source.end.offset++ + this.spaces = node.raws.between + node.raws.between = '' + } + } else { + node.raws.afterName = '' + node.params = '' + } + + if (open) { + node.nodes = [] + this.current = node + } + } + + checkMissedSemicolon(tokens) { + let colon = this.colon(tokens) + if (colon === false) return + + let founded = 0 + let token + for (let j = colon - 1; j >= 0; j--) { + token = tokens[j] + if (token[0] !== 'space') { + founded += 1 + if (founded === 2) break + } + } + // If the token is a word, e.g. `!important`, `red` or any other valid property's value. + // Then we need to return the colon after that word token. [3] is the "end" colon of that word. + // And because we need it after that one we do +1 to get the next one. + throw this.input.error( + 'Missed semicolon', + token[0] === 'word' ? token[3] + 1 : token[2] + ) + } + + colon(tokens) { + let brackets = 0 + let token, type, prev + for (let [i, element] of tokens.entries()) { + token = element + type = token[0] + + if (type === '(') { + brackets += 1 + } + if (type === ')') { + brackets -= 1 + } + if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token) + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue + } else { + return i + } + } + + prev = token + } + return false + } + + comment(token) { + let node = new Comment() + this.init(node, token[2]) + node.source.end = this.getPosition(token[3] || token[2]) + node.source.end.offset++ + + let text = token[1].slice(2, -2) + if (/^\s*$/.test(text)) { + node.text = '' + node.raws.left = text + node.raws.right = '' + } else { + let match = text.match(/^(\s*)([^]*\S)(\s*)$/) + node.text = match[2] + node.raws.left = match[1] + node.raws.right = match[3] + } + } + + createTokenizer() { + this.tokenizer = tokenizer(this.input) + } + + decl(tokens, customProperty) { + let node = new Declaration() + this.init(node, tokens[0][2]) + + let last = tokens[tokens.length - 1] + if (last[0] === ';') { + this.semicolon = true + tokens.pop() + } + + node.source.end = this.getPosition( + last[3] || last[2] || findLastWithPosition(tokens) + ) + node.source.end.offset++ + + while (tokens[0][0] !== 'word') { + if (tokens.length === 1) this.unknownWord(tokens) + node.raws.before += tokens.shift()[1] + } + node.source.start = this.getPosition(tokens[0][2]) + + node.prop = '' + while (tokens.length) { + let type = tokens[0][0] + if (type === ':' || type === 'space' || type === 'comment') { + break + } + node.prop += tokens.shift()[1] + } + + node.raws.between = '' + + let token + while (tokens.length) { + token = tokens.shift() + + if (token[0] === ':') { + node.raws.between += token[1] + break + } else { + if (token[0] === 'word' && /\w/.test(token[1])) { + this.unknownWord([token]) + } + node.raws.between += token[1] + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0] + node.prop = node.prop.slice(1) + } + + let firstSpaces = [] + let next + while (tokens.length) { + next = tokens[0][0] + if (next !== 'space' && next !== 'comment') break + firstSpaces.push(tokens.shift()) + } + + this.precheckMissedSemicolon(tokens) + + for (let i = tokens.length - 1; i >= 0; i--) { + token = tokens[i] + if (token[1].toLowerCase() === '!important') { + node.important = true + let string = this.stringFrom(tokens, i) + string = this.spacesFromEnd(tokens) + string + if (string !== ' !important') node.raws.important = string + break + } else if (token[1].toLowerCase() === 'important') { + let cache = tokens.slice(0) + let str = '' + for (let j = i; j > 0; j--) { + let type = cache[j][0] + if (str.trim().indexOf('!') === 0 && type !== 'space') { + break + } + str = cache.pop()[1] + str + } + if (str.trim().indexOf('!') === 0) { + node.important = true + node.raws.important = str + tokens = cache + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break + } + } + + let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment') + + if (hasWord) { + node.raws.between += firstSpaces.map(i => i[1]).join('') + firstSpaces = [] + } + this.raw(node, 'value', firstSpaces.concat(tokens), customProperty) + + if (node.value.includes(':') && !customProperty) { + this.checkMissedSemicolon(tokens) + } + } + + doubleColon(token) { + throw this.input.error( + 'Double colon', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } + + emptyRule(token) { + let node = new Rule() + this.init(node, token[2]) + node.selector = '' + node.raws.between = '' + this.current = node + } + + end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon + } + this.semicolon = false + + this.current.raws.after = (this.current.raws.after || '') + this.spaces + this.spaces = '' + + if (this.current.parent) { + this.current.source.end = this.getPosition(token[2]) + this.current.source.end.offset++ + this.current = this.current.parent + } else { + this.unexpectedClose(token) + } + } + + endFile() { + if (this.current.parent) this.unclosedBlock() + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon + } + this.current.raws.after = (this.current.raws.after || '') + this.spaces + this.root.source.end = this.getPosition(this.tokenizer.position()) + } + + freeSemicolon(token) { + this.spaces += token[1] + if (this.current.nodes) { + let prev = this.current.nodes[this.current.nodes.length - 1] + if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) { + prev.raws.ownSemicolon = this.spaces + this.spaces = '' + } + } + } + + // Helpers + + getPosition(offset) { + let pos = this.input.fromOffset(offset) + return { + column: pos.col, + line: pos.line, + offset + } + } + + init(node, offset) { + this.current.push(node) + node.source = { + input: this.input, + start: this.getPosition(offset) + } + node.raws.before = this.spaces + this.spaces = '' + if (node.type !== 'comment') this.semicolon = false + } + + other(start) { + let end = false + let type = null + let colon = false + let bracket = null + let brackets = [] + let customProperty = start[1].startsWith('--') + + let tokens = [] + let token = start + while (token) { + type = token[0] + tokens.push(token) + + if (type === '(' || type === '[') { + if (!bracket) bracket = token + brackets.push(type === '(' ? ')' : ']') + } else if (customProperty && colon && type === '{') { + if (!bracket) bracket = token + brackets.push('}') + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(tokens, customProperty) + return + } else { + break + } + } else if (type === '{') { + this.rule(tokens) + return + } else if (type === '}') { + this.tokenizer.back(tokens.pop()) + end = true + break + } else if (type === ':') { + colon = true + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop() + if (brackets.length === 0) bracket = null + } + + token = this.tokenizer.nextToken() + } + + if (this.tokenizer.endOfFile()) end = true + if (brackets.length > 0) this.unclosedBracket(bracket) + + if (end && colon) { + if (!customProperty) { + while (tokens.length) { + token = tokens[tokens.length - 1][0] + if (token !== 'space' && token !== 'comment') break + this.tokenizer.back(tokens.pop()) + } + } + this.decl(tokens, customProperty) + } else { + this.unknownWord(tokens) + } + } + + parse() { + let token + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken() + + switch (token[0]) { + case 'space': + this.spaces += token[1] + break + + case ';': + this.freeSemicolon(token) + break + + case '}': + this.end(token) + break + + case 'comment': + this.comment(token) + break + + case 'at-word': + this.atrule(token) + break + + case '{': + this.emptyRule(token) + break + + default: + this.other(token) + break + } + } + this.endFile() + } + + precheckMissedSemicolon(/* tokens */) { + // Hook for Safe Parser + } + + raw(node, prop, tokens, customProperty) { + let token, type + let length = tokens.length + let value = '' + let clean = true + let next, prev + + for (let i = 0; i < length; i += 1) { + token = tokens[i] + type = token[0] + if (type === 'space' && i === length - 1 && !customProperty) { + clean = false + } else if (type === 'comment') { + prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty' + next = tokens[i + 1] ? tokens[i + 1][0] : 'empty' + if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) { + if (value.slice(-1) === ',') { + clean = false + } else { + value += token[1] + } + } else { + clean = false + } + } else { + value += token[1] + } + } + if (!clean) { + let raw = tokens.reduce((all, i) => all + i[1], '') + node.raws[prop] = { raw, value } + } + node[prop] = value + } + + rule(tokens) { + tokens.pop() + + let node = new Rule() + this.init(node, tokens[0][2]) + + node.raws.between = this.spacesAndCommentsFromEnd(tokens) + this.raw(node, 'selector', tokens) + this.current = node + } + + spacesAndCommentsFromEnd(tokens) { + let lastTokenType + let spaces = '' + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0] + if (lastTokenType !== 'space' && lastTokenType !== 'comment') break + spaces = tokens.pop()[1] + spaces + } + return spaces + } + + // Errors + + spacesAndCommentsFromStart(tokens) { + let next + let spaces = '' + while (tokens.length) { + next = tokens[0][0] + if (next !== 'space' && next !== 'comment') break + spaces += tokens.shift()[1] + } + return spaces + } + + spacesFromEnd(tokens) { + let lastTokenType + let spaces = '' + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0] + if (lastTokenType !== 'space') break + spaces = tokens.pop()[1] + spaces + } + return spaces + } + + stringFrom(tokens, from) { + let result = '' + for (let i = from; i < tokens.length; i++) { + result += tokens[i][1] + } + tokens.splice(from, tokens.length - from) + return result + } + + unclosedBlock() { + let pos = this.current.source.start + throw this.input.error('Unclosed block', pos.line, pos.column) + } + + unclosedBracket(bracket) { + throw this.input.error( + 'Unclosed bracket', + { offset: bracket[2] }, + { offset: bracket[2] + 1 } + ) + } + + unexpectedClose(token) { + throw this.input.error( + 'Unexpected }', + { offset: token[2] }, + { offset: token[2] + 1 } + ) + } + + unknownWord(tokens) { + throw this.input.error( + 'Unknown word', + { offset: tokens[0][2] }, + { offset: tokens[0][2] + tokens[0][1].length } + ) + } + + unnamedAtrule(node, token) { + throw this.input.error( + 'At-rule without name', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } +} + +module.exports = Parser diff --git a/node_modules/postcss/lib/postcss.d.mts b/node_modules/postcss/lib/postcss.d.mts new file mode 100644 index 0000000..a8ca8c7 --- /dev/null +++ b/node_modules/postcss/lib/postcss.d.mts @@ -0,0 +1,72 @@ +export { + // postcss function / namespace + default, + + // Value exports from postcss.mjs + stringify, + fromJSON, + // @ts-expect-error This value exists, but it’s untyped. + plugin, + parse, + list, + + document, + comment, + atRule, + rule, + decl, + root, + + CssSyntaxError, + Declaration, + Container, + Processor, + Document, + Comment, + Warning, + AtRule, + Result, + Input, + Rule, + Root, + Node, + + // Type-only exports + AcceptedPlugin, + AnyNode, + AtRuleProps, + Builder, + ChildNode, + ChildProps, + CommentProps, + ContainerProps, + DeclarationProps, + DocumentProps, + FilePosition, + Helpers, + JSONHydrator, + Message, + NodeErrorOptions, + NodeProps, + OldPlugin, + Parser, + Plugin, + PluginCreator, + Position, + Postcss, + ProcessOptions, + RootProps, + RuleProps, + Source, + SourceMap, + SourceMapOptions, + Stringifier, + Syntax, + TransformCallback, + Transformer, + WarningOptions, + + // This is a class, but it’s not re-exported. That’s why it’s exported as type-only here. + type LazyResult, + +} from './postcss.js' diff --git a/node_modules/postcss/lib/postcss.d.ts b/node_modules/postcss/lib/postcss.d.ts new file mode 100644 index 0000000..70d7589 --- /dev/null +++ b/node_modules/postcss/lib/postcss.d.ts @@ -0,0 +1,441 @@ +import { RawSourceMap, SourceMapGenerator } from 'source-map-js' + +import AtRule, { AtRuleProps } from './at-rule.js' +import Comment, { CommentProps } from './comment.js' +import Container, { ContainerProps } from './container.js' +import CssSyntaxError from './css-syntax-error.js' +import Declaration, { DeclarationProps } from './declaration.js' +import Document, { DocumentProps } from './document.js' +import Input, { FilePosition } from './input.js' +import LazyResult from './lazy-result.js' +import list from './list.js' +import Node, { + AnyNode, + ChildNode, + ChildProps, + NodeErrorOptions, + NodeProps, + Position, + Source +} from './node.js' +import Processor from './processor.js' +import Result, { Message } from './result.js' +import Root, { RootProps } from './root.js' +import Rule, { RuleProps } from './rule.js' +import Warning, { WarningOptions } from './warning.js' + +type DocumentProcessor = ( + document: Document, + helper: postcss.Helpers +) => Promise | void +type RootProcessor = (root: Root, helper: postcss.Helpers) => Promise | void +type DeclarationProcessor = ( + decl: Declaration, + helper: postcss.Helpers +) => Promise | void +type RuleProcessor = (rule: Rule, helper: postcss.Helpers) => Promise | void +type AtRuleProcessor = (atRule: AtRule, helper: postcss.Helpers) => Promise | void +type CommentProcessor = ( + comment: Comment, + helper: postcss.Helpers +) => Promise | void + +interface Processors { + /** + * Will be called on all`AtRule` nodes. + * + * Will be called again on node or children changes. + */ + AtRule?: { [name: string]: AtRuleProcessor } | AtRuleProcessor + + /** + * Will be called on all `AtRule` nodes, when all children will be processed. + * + * Will be called again on node or children changes. + */ + AtRuleExit?: { [name: string]: AtRuleProcessor } | AtRuleProcessor + + /** + * Will be called on all `Comment` nodes. + * + * Will be called again on node or children changes. + */ + Comment?: CommentProcessor + + /** + * Will be called on all `Comment` nodes after listeners + * for `Comment` event. + * + * Will be called again on node or children changes. + */ + CommentExit?: CommentProcessor + + /** + * Will be called on all `Declaration` nodes after listeners + * for `Declaration` event. + * + * Will be called again on node or children changes. + */ + Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor + + /** + * Will be called on all `Declaration` nodes. + * + * Will be called again on node or children changes. + */ + DeclarationExit?: + | { [prop: string]: DeclarationProcessor } + | DeclarationProcessor + + /** + * Will be called on `Document` node. + * + * Will be called again on children changes. + */ + Document?: DocumentProcessor + + /** + * Will be called on `Document` node, when all children will be processed. + * + * Will be called again on children changes. + */ + DocumentExit?: DocumentProcessor + + /** + * Will be called on `Root` node once. + */ + Once?: RootProcessor + + /** + * Will be called on `Root` node once, when all children will be processed. + */ + OnceExit?: RootProcessor + + /** + * Will be called on `Root` node. + * + * Will be called again on children changes. + */ + Root?: RootProcessor + + /** + * Will be called on `Root` node, when all children will be processed. + * + * Will be called again on children changes. + */ + RootExit?: RootProcessor + + /** + * Will be called on all `Rule` nodes. + * + * Will be called again on node or children changes. + */ + Rule?: RuleProcessor + + /** + * Will be called on all `Rule` nodes, when all children will be processed. + * + * Will be called again on node or children changes. + */ + RuleExit?: RuleProcessor +} + +declare namespace postcss { + export { + AnyNode, + AtRule, + AtRuleProps, + ChildNode, + ChildProps, + Comment, + CommentProps, + Container, + ContainerProps, + CssSyntaxError, + Declaration, + DeclarationProps, + Document, + DocumentProps, + FilePosition, + Input, + LazyResult, + list, + Message, + Node, + NodeErrorOptions, + NodeProps, + Position, + Processor, + Result, + Root, + RootProps, + Rule, + RuleProps, + Source, + Warning, + WarningOptions + } + + export type SourceMap = SourceMapGenerator & { + toJSON(): RawSourceMap + } + + export type Helpers = { postcss: Postcss; result: Result } & Postcss + + export interface Plugin extends Processors { + postcssPlugin: string + prepare?: (result: Result) => Processors + } + + export interface PluginCreator { + (opts?: PluginOptions): Plugin | Processor + postcss: true + } + + export interface Transformer extends TransformCallback { + postcssPlugin: string + postcssVersion: string + } + + export interface TransformCallback { + (root: Root, result: Result): Promise | void + } + + export interface OldPlugin extends Transformer { + (opts?: T): Transformer + postcss: Transformer + } + + export type AcceptedPlugin = + | { + postcss: Processor | TransformCallback + } + | OldPlugin + | Plugin + | PluginCreator + | Processor + | TransformCallback + + export interface Parser { + ( + css: { toString(): string } | string, + opts?: Pick + ): RootNode + } + + export interface Builder { + (part: string, node?: AnyNode, type?: 'end' | 'start'): void + } + + export interface Stringifier { + (node: AnyNode, builder: Builder): void + } + + export interface JSONHydrator { + (data: object): Node + (data: object[]): Node[] + } + + export interface Syntax { + /** + * Function to generate AST by string. + */ + parse?: Parser + + /** + * Class to generate string by AST. + */ + stringify?: Stringifier + } + + export interface SourceMapOptions { + /** + * Use absolute path in generated source map. + */ + absolute?: boolean + + /** + * Indicates that PostCSS should add annotation comments to the CSS. + * By default, PostCSS will always add a comment with a path + * to the source map. PostCSS will not add annotations to CSS files + * that do not contain any comments. + * + * By default, PostCSS presumes that you want to save the source map as + * `opts.to + '.map'` and will use this path in the annotation comment. + * A different path can be set by providing a string value for annotation. + * + * If you have set `inline: true`, annotation cannot be disabled. + */ + annotation?: ((file: string, root: Root) => string) | boolean | string + + /** + * Override `from` in map’s sources. + */ + from?: string + + /** + * Indicates that the source map should be embedded in the output CSS + * as a Base64-encoded comment. By default, it is `true`. + * But if all previous maps are external, not inline, PostCSS will not embed + * the map even if you do not set this option. + * + * If you have an inline source map, the result.map property will be empty, + * as the source map will be contained within the text of `result.css`. + */ + inline?: boolean + + /** + * Source map content from a previous processing step (e.g., Sass). + * + * PostCSS will try to read the previous source map + * automatically (based on comments within the source CSS), but you can use + * this option to identify it manually. + * + * If desired, you can omit the previous map with prev: `false`. + */ + prev?: ((file: string) => string) | boolean | object | string + + /** + * Indicates that PostCSS should set the origin content (e.g., Sass source) + * of the source map. By default, it is true. But if all previous maps do not + * contain sources content, PostCSS will also leave it out even if you + * do not set this option. + */ + sourcesContent?: boolean + } + + export interface ProcessOptions { + /** + * The path of the CSS source file. You should always set `from`, + * because it is used in source map generation and syntax error messages. + */ + from?: string + + /** + * Source map options + */ + map?: boolean | SourceMapOptions + + /** + * Function to generate AST by string. + */ + parser?: Parser | Syntax + + /** + * Class to generate string by AST. + */ + stringifier?: Stringifier | Syntax + + /** + * Object with parse and stringify. + */ + syntax?: Syntax + + /** + * The path where you'll put the output CSS file. You should always set `to` + * to generate correct source maps. + */ + to?: string + } + + export type Postcss = typeof postcss + + /** + * Default function to convert a node tree into a CSS string. + */ + export let stringify: Stringifier + + /** + * Parses source css and returns a new `Root` or `Document` node, + * which contains the source CSS nodes. + * + * ```js + * // Simple CSS concatenation with source map support + * const root1 = postcss.parse(css1, { from: file1 }) + * const root2 = postcss.parse(css2, { from: file2 }) + * root1.append(root2).toResult().css + * ``` + */ + export let parse: Parser + + /** + * Rehydrate a JSON AST (from `Node#toJSON`) back into the AST classes. + * + * ```js + * const json = root.toJSON() + * // save to file, send by network, etc + * const root2 = postcss.fromJSON(json) + * ``` + */ + export let fromJSON: JSONHydrator + + /** + * Creates a new `Comment` node. + * + * @param defaults Properties for the new node. + * @return New comment node + */ + export function comment(defaults?: CommentProps): Comment + + /** + * Creates a new `AtRule` node. + * + * @param defaults Properties for the new node. + * @return New at-rule node. + */ + export function atRule(defaults?: AtRuleProps): AtRule + + /** + * Creates a new `Declaration` node. + * + * @param defaults Properties for the new node. + * @return New declaration node. + */ + export function decl(defaults?: DeclarationProps): Declaration + + /** + * Creates a new `Rule` node. + * + * @param default Properties for the new node. + * @return New rule node. + */ + export function rule(defaults?: RuleProps): Rule + + /** + * Creates a new `Root` node. + * + * @param defaults Properties for the new node. + * @return New root node. + */ + export function root(defaults?: RootProps): Root + + /** + * Creates a new `Document` node. + * + * @param defaults Properties for the new node. + * @return New document node. + */ + export function document(defaults?: DocumentProps): Document + + export { postcss as default } +} + +/** + * Create a new `Processor` instance that will apply `plugins` + * as CSS processors. + * + * ```js + * let postcss = require('postcss') + * + * postcss(plugins).process(css, { from, to }).then(result => { + * console.log(result.css) + * }) + * ``` + * + * @param plugins PostCSS plugins. + * @return Processor to process multiple CSS. + */ +declare function postcss(plugins?: postcss.AcceptedPlugin[]): Processor +declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor + +export = postcss diff --git a/node_modules/postcss/lib/postcss.js b/node_modules/postcss/lib/postcss.js new file mode 100644 index 0000000..080ee83 --- /dev/null +++ b/node_modules/postcss/lib/postcss.js @@ -0,0 +1,101 @@ +'use strict' + +let CssSyntaxError = require('./css-syntax-error') +let Declaration = require('./declaration') +let LazyResult = require('./lazy-result') +let Container = require('./container') +let Processor = require('./processor') +let stringify = require('./stringify') +let fromJSON = require('./fromJSON') +let Document = require('./document') +let Warning = require('./warning') +let Comment = require('./comment') +let AtRule = require('./at-rule') +let Result = require('./result.js') +let Input = require('./input') +let parse = require('./parse') +let list = require('./list') +let Rule = require('./rule') +let Root = require('./root') +let Node = require('./node') + +function postcss(...plugins) { + if (plugins.length === 1 && Array.isArray(plugins[0])) { + plugins = plugins[0] + } + return new Processor(plugins) +} + +postcss.plugin = function plugin(name, initializer) { + let warningPrinted = false + function creator(...args) { + // eslint-disable-next-line no-console + if (console && console.warn && !warningPrinted) { + warningPrinted = true + // eslint-disable-next-line no-console + console.warn( + name + + ': postcss.plugin was deprecated. Migration guide:\n' + + 'https://evilmartians.com/chronicles/postcss-8-plugin-migration' + ) + if (process.env.LANG && process.env.LANG.startsWith('cn')) { + /* c8 ignore next 7 */ + // eslint-disable-next-line no-console + console.warn( + name + + ': 里面 postcss.plugin 被弃用. 迁移指南:\n' + + 'https://www.w3ctech.com/topic/2226' + ) + } + } + let transformer = initializer(...args) + transformer.postcssPlugin = name + transformer.postcssVersion = new Processor().version + return transformer + } + + let cache + Object.defineProperty(creator, 'postcss', { + get() { + if (!cache) cache = creator() + return cache + } + }) + + creator.process = function (css, processOpts, pluginOpts) { + return postcss([creator(pluginOpts)]).process(css, processOpts) + } + + return creator +} + +postcss.stringify = stringify +postcss.parse = parse +postcss.fromJSON = fromJSON +postcss.list = list + +postcss.comment = defaults => new Comment(defaults) +postcss.atRule = defaults => new AtRule(defaults) +postcss.decl = defaults => new Declaration(defaults) +postcss.rule = defaults => new Rule(defaults) +postcss.root = defaults => new Root(defaults) +postcss.document = defaults => new Document(defaults) + +postcss.CssSyntaxError = CssSyntaxError +postcss.Declaration = Declaration +postcss.Container = Container +postcss.Processor = Processor +postcss.Document = Document +postcss.Comment = Comment +postcss.Warning = Warning +postcss.AtRule = AtRule +postcss.Result = Result +postcss.Input = Input +postcss.Rule = Rule +postcss.Root = Root +postcss.Node = Node + +LazyResult.registerPostcss(postcss) + +module.exports = postcss +postcss.default = postcss diff --git a/node_modules/postcss/lib/postcss.mjs b/node_modules/postcss/lib/postcss.mjs new file mode 100644 index 0000000..3507598 --- /dev/null +++ b/node_modules/postcss/lib/postcss.mjs @@ -0,0 +1,30 @@ +import postcss from './postcss.js' + +export default postcss + +export const stringify = postcss.stringify +export const fromJSON = postcss.fromJSON +export const plugin = postcss.plugin +export const parse = postcss.parse +export const list = postcss.list + +export const document = postcss.document +export const comment = postcss.comment +export const atRule = postcss.atRule +export const rule = postcss.rule +export const decl = postcss.decl +export const root = postcss.root + +export const CssSyntaxError = postcss.CssSyntaxError +export const Declaration = postcss.Declaration +export const Container = postcss.Container +export const Processor = postcss.Processor +export const Document = postcss.Document +export const Comment = postcss.Comment +export const Warning = postcss.Warning +export const AtRule = postcss.AtRule +export const Result = postcss.Result +export const Input = postcss.Input +export const Rule = postcss.Rule +export const Root = postcss.Root +export const Node = postcss.Node diff --git a/node_modules/postcss/lib/previous-map.d.ts b/node_modules/postcss/lib/previous-map.d.ts new file mode 100644 index 0000000..23edeb5 --- /dev/null +++ b/node_modules/postcss/lib/previous-map.d.ts @@ -0,0 +1,81 @@ +import { SourceMapConsumer } from 'source-map-js' + +import { ProcessOptions } from './postcss.js' + +declare namespace PreviousMap { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { PreviousMap_ as default } +} + +/** + * Source map information from input CSS. + * For example, source map after Sass compiler. + * + * This class will automatically find source map in input CSS or in file system + * near input file (according `from` option). + * + * ```js + * const root = parse(css, { from: 'a.sass.css' }) + * root.input.map //=> PreviousMap + * ``` + */ +declare class PreviousMap_ { + /** + * `sourceMappingURL` content. + */ + annotation?: string + + /** + * The CSS source identifier. Contains `Input#file` if the user + * set the `from` option, or `Input#id` if they did not. + */ + file?: string + + /** + * Was source map inlined by data-uri to input CSS. + */ + inline: boolean + + /** + * Path to source map file. + */ + mapFile?: string + + /** + * The directory with source map file, if source map is in separated file. + */ + root?: string + + /** + * Source map file content. + */ + text?: string + + /** + * @param css Input CSS source. + * @param opts Process options. + */ + constructor(css: string, opts?: ProcessOptions) + + /** + * Create a instance of `SourceMapGenerator` class + * from the `source-map` library to work with source map information. + * + * It is lazy method, so it will create object only on first call + * and then it will use cache. + * + * @return Object with source map information. + */ + consumer(): SourceMapConsumer + + /** + * Does source map contains `sourcesContent` with input source text. + * + * @return Is `sourcesContent` present. + */ + withContent(): boolean +} + +declare class PreviousMap extends PreviousMap_ {} + +export = PreviousMap diff --git a/node_modules/postcss/lib/previous-map.js b/node_modules/postcss/lib/previous-map.js new file mode 100644 index 0000000..f3093df --- /dev/null +++ b/node_modules/postcss/lib/previous-map.js @@ -0,0 +1,142 @@ +'use strict' + +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { existsSync, readFileSync } = require('fs') +let { dirname, join } = require('path') + +function fromBase64(str) { + if (Buffer) { + return Buffer.from(str, 'base64').toString() + } else { + /* c8 ignore next 2 */ + return window.atob(str) + } +} + +class PreviousMap { + constructor(css, opts) { + if (opts.map === false) return + this.loadAnnotation(css) + this.inline = this.startWith(this.annotation, 'data:') + + let prev = opts.map ? opts.map.prev : undefined + let text = this.loadMap(opts.from, prev) + if (!this.mapFile && opts.from) { + this.mapFile = opts.from + } + if (this.mapFile) this.root = dirname(this.mapFile) + if (text) this.text = text + } + + consumer() { + if (!this.consumerCache) { + this.consumerCache = new SourceMapConsumer(this.text) + } + return this.consumerCache + } + + decodeInline(text) { + let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/ + let baseUri = /^data:application\/json;base64,/ + let charsetUri = /^data:application\/json;charset=utf-?8,/ + let uri = /^data:application\/json,/ + + if (charsetUri.test(text) || uri.test(text)) { + return decodeURIComponent(text.substr(RegExp.lastMatch.length)) + } + + if (baseCharsetUri.test(text) || baseUri.test(text)) { + return fromBase64(text.substr(RegExp.lastMatch.length)) + } + + let encoding = text.match(/data:application\/json;([^,]+),/)[1] + throw new Error('Unsupported source map encoding ' + encoding) + } + + getAnnotationURL(sourceMapString) { + return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, '').trim() + } + + isMap(map) { + if (typeof map !== 'object') return false + return ( + typeof map.mappings === 'string' || + typeof map._mappings === 'string' || + Array.isArray(map.sections) + ) + } + + loadAnnotation(css) { + let comments = css.match(/\/\*\s*# sourceMappingURL=/gm) + if (!comments) return + + // sourceMappingURLs from comments, strings, etc. + let start = css.lastIndexOf(comments.pop()) + let end = css.indexOf('*/', start) + + if (start > -1 && end > -1) { + // Locate the last sourceMappingURL to avoid pickin + this.annotation = this.getAnnotationURL(css.substring(start, end)) + } + } + + loadFile(path) { + this.root = dirname(path) + if (existsSync(path)) { + this.mapFile = path + return readFileSync(path, 'utf-8').toString().trim() + } + } + + loadMap(file, prev) { + if (prev === false) return false + + if (prev) { + if (typeof prev === 'string') { + return prev + } else if (typeof prev === 'function') { + let prevPath = prev(file) + if (prevPath) { + let map = this.loadFile(prevPath) + if (!map) { + throw new Error( + 'Unable to load previous source map: ' + prevPath.toString() + ) + } + return map + } + } else if (prev instanceof SourceMapConsumer) { + return SourceMapGenerator.fromSourceMap(prev).toString() + } else if (prev instanceof SourceMapGenerator) { + return prev.toString() + } else if (this.isMap(prev)) { + return JSON.stringify(prev) + } else { + throw new Error( + 'Unsupported previous source map format: ' + prev.toString() + ) + } + } else if (this.inline) { + return this.decodeInline(this.annotation) + } else if (this.annotation) { + let map = this.annotation + if (file) map = join(dirname(file), map) + return this.loadFile(map) + } + } + + startWith(string, start) { + if (!string) return false + return string.substr(0, start.length) === start + } + + withContent() { + return !!( + this.consumer().sourcesContent && + this.consumer().sourcesContent.length > 0 + ) + } +} + +module.exports = PreviousMap +PreviousMap.default = PreviousMap diff --git a/node_modules/postcss/lib/processor.d.ts b/node_modules/postcss/lib/processor.d.ts new file mode 100644 index 0000000..50c9a07 --- /dev/null +++ b/node_modules/postcss/lib/processor.d.ts @@ -0,0 +1,115 @@ +import Document from './document.js' +import LazyResult from './lazy-result.js' +import NoWorkResult from './no-work-result.js' +import { + AcceptedPlugin, + Plugin, + ProcessOptions, + TransformCallback, + Transformer +} from './postcss.js' +import Result from './result.js' +import Root from './root.js' + +declare namespace Processor { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Processor_ as default } +} + +/** + * Contains plugins to process CSS. Create one `Processor` instance, + * initialize its plugins, and then use that instance on numerous CSS files. + * + * ```js + * const processor = postcss([autoprefixer, postcssNested]) + * processor.process(css1).then(result => console.log(result.css)) + * processor.process(css2).then(result => console.log(result.css)) + * ``` + */ +declare class Processor_ { + /** + * Plugins added to this processor. + * + * ```js + * const processor = postcss([autoprefixer, postcssNested]) + * processor.plugins.length //=> 2 + * ``` + */ + plugins: (Plugin | TransformCallback | Transformer)[] + + /** + * Current PostCSS version. + * + * ```js + * if (result.processor.version.split('.')[0] !== '6') { + * throw new Error('This plugin works only with PostCSS 6') + * } + * ``` + */ + version: string + + /** + * @param plugins PostCSS plugins + */ + constructor(plugins?: AcceptedPlugin[]) + + /** + * Parses source CSS and returns a `LazyResult` Promise proxy. + * Because some plugins can be asynchronous it doesn’t make + * any transformations. Transformations will be applied + * in the `LazyResult` methods. + * + * ```js + * processor.process(css, { from: 'a.css', to: 'a.out.css' }) + * .then(result => { + * console.log(result.css) + * }) + * ``` + * + * @param css String with input CSS or any object with a `toString()` method, + * like a Buffer. Optionally, send a `Result` instance + * and the processor will take the `Root` from it. + * @param opts Options. + * @return Promise proxy. + */ + process( + css: { toString(): string } | LazyResult | Result | Root | string + ): LazyResult | NoWorkResult + process( + css: { toString(): string } | LazyResult | Result | Root | string, + options: ProcessOptions + ): LazyResult + + /** + * Adds a plugin to be used as a CSS processor. + * + * PostCSS plugin can be in 4 formats: + * * A plugin in `Plugin` format. + * * A plugin creator function with `pluginCreator.postcss = true`. + * PostCSS will call this function without argument to get plugin. + * * A function. PostCSS will pass the function a {@link Root} + * as the first argument and current `Result` instance + * as the second. + * * Another `Processor` instance. PostCSS will copy plugins + * from that instance into this one. + * + * Plugins can also be added by passing them as arguments when creating + * a `postcss` instance (see [`postcss(plugins)`]). + * + * Asynchronous plugins should return a `Promise` instance. + * + * ```js + * const processor = postcss() + * .use(autoprefixer) + * .use(postcssNested) + * ``` + * + * @param plugin PostCSS plugin or `Processor` with plugins. + * @return Current processor to make methods chain. + */ + use(plugin: AcceptedPlugin): this +} + +declare class Processor extends Processor_ {} + +export = Processor diff --git a/node_modules/postcss/lib/processor.js b/node_modules/postcss/lib/processor.js new file mode 100644 index 0000000..92842b6 --- /dev/null +++ b/node_modules/postcss/lib/processor.js @@ -0,0 +1,67 @@ +'use strict' + +let NoWorkResult = require('./no-work-result') +let LazyResult = require('./lazy-result') +let Document = require('./document') +let Root = require('./root') + +class Processor { + constructor(plugins = []) { + this.version = '8.4.31' + this.plugins = this.normalize(plugins) + } + + normalize(plugins) { + let normalized = [] + for (let i of plugins) { + if (i.postcss === true) { + i = i() + } else if (i.postcss) { + i = i.postcss + } + + if (typeof i === 'object' && Array.isArray(i.plugins)) { + normalized = normalized.concat(i.plugins) + } else if (typeof i === 'object' && i.postcssPlugin) { + normalized.push(i) + } else if (typeof i === 'function') { + normalized.push(i) + } else if (typeof i === 'object' && (i.parse || i.stringify)) { + if (process.env.NODE_ENV !== 'production') { + throw new Error( + 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' + + 'one of the syntax/parser/stringifier options as outlined ' + + 'in your PostCSS runner documentation.' + ) + } + } else { + throw new Error(i + ' is not a PostCSS plugin') + } + } + return normalized + } + + process(css, opts = {}) { + if ( + this.plugins.length === 0 && + typeof opts.parser === 'undefined' && + typeof opts.stringifier === 'undefined' && + typeof opts.syntax === 'undefined' + ) { + return new NoWorkResult(this, css, opts) + } else { + return new LazyResult(this, css, opts) + } + } + + use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])) + return this + } +} + +module.exports = Processor +Processor.default = Processor + +Root.registerProcessor(Processor) +Document.registerProcessor(Processor) diff --git a/node_modules/postcss/lib/result.d.ts b/node_modules/postcss/lib/result.d.ts new file mode 100644 index 0000000..c3dcbda --- /dev/null +++ b/node_modules/postcss/lib/result.d.ts @@ -0,0 +1,206 @@ +import { + Document, + Node, + Plugin, + ProcessOptions, + Root, + SourceMap, + TransformCallback, + Warning, + WarningOptions +} from './postcss.js' +import Processor from './processor.js' + +declare namespace Result { + export interface Message { + [others: string]: any + + /** + * Source PostCSS plugin name. + */ + plugin?: string + + /** + * Message type. + */ + type: string + } + + export interface ResultOptions extends ProcessOptions { + /** + * The CSS node that was the source of the warning. + */ + node?: Node + + /** + * Name of plugin that created this warning. `Result#warn` will fill it + * automatically with `Plugin#postcssPlugin` value. + */ + plugin?: string + } + + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Result_ as default } +} + +/** + * Provides the result of the PostCSS transformations. + * + * A Result instance is returned by `LazyResult#then` + * or `Root#toResult` methods. + * + * ```js + * postcss([autoprefixer]).process(css).then(result => { + * console.log(result.css) + * }) + * ``` + * + * ```js + * const result2 = postcss.parse(css).toResult() + * ``` + */ +declare class Result_ { + /** + * A CSS string representing of `Result#root`. + * + * ```js + * postcss.parse('a{}').toResult().css //=> "a{}" + * ``` + */ + css: string + + /** + * Last runned PostCSS plugin. + */ + lastPlugin: Plugin | TransformCallback + + /** + * An instance of `SourceMapGenerator` class from the `source-map` library, + * representing changes to the `Result#root` instance. + * + * ```js + * result.map.toJSON() //=> { version: 3, file: 'a.css', … } + * ``` + * + * ```js + * if (result.map) { + * fs.writeFileSync(result.opts.to + '.map', result.map.toString()) + * } + * ``` + */ + map: SourceMap + + /** + * Contains messages from plugins (e.g., warnings or custom messages). + * Each message should have type and plugin properties. + * + * ```js + * AtRule: { + * import: (atRule, { result }) { + * const importedFile = parseImport(atRule) + * result.messages.push({ + * type: 'dependency', + * plugin: 'postcss-import', + * file: importedFile, + * parent: result.opts.from + * }) + * } + * } + * ``` + */ + messages: Result.Message[] + + /** + * Options from the `Processor#process` or `Root#toResult` call + * that produced this Result instance.] + * + * ```js + * root.toResult(opts).opts === opts + * ``` + */ + opts: Result.ResultOptions + + /** + * The Processor instance used for this transformation. + * + * ```js + * for (const plugin of result.processor.plugins) { + * if (plugin.postcssPlugin === 'postcss-bad') { + * throw 'postcss-good is incompatible with postcss-bad' + * } + * }) + * ``` + */ + processor: Processor + + /** + * Root node after all transformations. + * + * ```js + * root.toResult().root === root + * ``` + */ + root: RootNode + + /** + * @param processor Processor used for this transformation. + * @param root Root node after all transformations. + * @param opts Options from the `Processor#process` or `Root#toResult`. + */ + constructor(processor: Processor, root: RootNode, opts: Result.ResultOptions) + + /** + * Returns for `Result#css` content. + * + * ```js + * result + '' === result.css + * ``` + * + * @return String representing of `Result#root`. + */ + toString(): string + + /** + * Creates an instance of `Warning` and adds it to `Result#messages`. + * + * ```js + * if (decl.important) { + * result.warn('Avoid !important', { node: decl, word: '!important' }) + * } + * ``` + * + * @param text Warning message. + * @param opts Warning options. + * @return Created warning. + */ + warn(message: string, options?: WarningOptions): Warning + + /** + * Returns warnings from plugins. Filters `Warning` instances + * from `Result#messages`. + * + * ```js + * result.warnings().forEach(warn => { + * console.warn(warn.toString()) + * }) + * ``` + * + * @return Warnings from plugins. + */ + warnings(): Warning[] + + /** + * An alias for the `Result#css` property. + * Use it with syntaxes that generate non-CSS output. + * + * ```js + * result.css === result.content + * ``` + */ + get content(): string +} + +declare class Result extends Result_ {} + +export = Result diff --git a/node_modules/postcss/lib/result.js b/node_modules/postcss/lib/result.js new file mode 100644 index 0000000..a39751d --- /dev/null +++ b/node_modules/postcss/lib/result.js @@ -0,0 +1,42 @@ +'use strict' + +let Warning = require('./warning') + +class Result { + constructor(processor, root, opts) { + this.processor = processor + this.messages = [] + this.root = root + this.opts = opts + this.css = undefined + this.map = undefined + } + + toString() { + return this.css + } + + warn(text, opts = {}) { + if (!opts.plugin) { + if (this.lastPlugin && this.lastPlugin.postcssPlugin) { + opts.plugin = this.lastPlugin.postcssPlugin + } + } + + let warning = new Warning(text, opts) + this.messages.push(warning) + + return warning + } + + warnings() { + return this.messages.filter(i => i.type === 'warning') + } + + get content() { + return this.css + } +} + +module.exports = Result +Result.default = Result diff --git a/node_modules/postcss/lib/root.d.ts b/node_modules/postcss/lib/root.d.ts new file mode 100644 index 0000000..98fb4bc --- /dev/null +++ b/node_modules/postcss/lib/root.d.ts @@ -0,0 +1,86 @@ +import Container, { ContainerProps } from './container.js' +import Document from './document.js' +import { ProcessOptions } from './postcss.js' +import Result from './result.js' + +declare namespace Root { + export interface RootRaws extends Record { + /** + * The space symbols after the last child to the end of file. + */ + after?: string + + /** + * Non-CSS code after `Root`, when `Root` is inside `Document`. + * + * **Experimental:** some aspects of this node could change within minor + * or patch version releases. + */ + codeAfter?: string + + /** + * Non-CSS code before `Root`, when `Root` is inside `Document`. + * + * **Experimental:** some aspects of this node could change within minor + * or patch version releases. + */ + codeBefore?: string + + /** + * Is the last child has an (optional) semicolon. + */ + semicolon?: boolean + } + + export interface RootProps extends ContainerProps { + /** + * Information used to generate byte-to-byte equal node string + * as it was in the origin input. + * */ + raws?: RootRaws + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Root_ as default } +} + +/** + * Represents a CSS file and contains all its parsed nodes. + * + * ```js + * const root = postcss.parse('a{color:black} b{z-index:2}') + * root.type //=> 'root' + * root.nodes.length //=> 2 + * ``` + */ +declare class Root_ extends Container { + parent: Document | undefined + raws: Root.RootRaws + type: 'root' + + constructor(defaults?: Root.RootProps) + + assign(overrides: object | Root.RootProps): this + clone(overrides?: Partial): Root + cloneAfter(overrides?: Partial): Root + cloneBefore(overrides?: Partial): Root + + /** + * Returns a `Result` instance representing the root’s CSS. + * + * ```js + * const root1 = postcss.parse(css1, { from: 'a.css' }) + * const root2 = postcss.parse(css2, { from: 'b.css' }) + * root1.append(root2) + * const result = root1.toResult({ to: 'all.css', map: true }) + * ``` + * + * @param opts Options. + * @return Result with current root’s CSS. + */ + toResult(options?: ProcessOptions): Result +} + +declare class Root extends Root_ {} + +export = Root diff --git a/node_modules/postcss/lib/root.js b/node_modules/postcss/lib/root.js new file mode 100644 index 0000000..ea574ed --- /dev/null +++ b/node_modules/postcss/lib/root.js @@ -0,0 +1,61 @@ +'use strict' + +let Container = require('./container') + +let LazyResult, Processor + +class Root extends Container { + constructor(defaults) { + super(defaults) + this.type = 'root' + if (!this.nodes) this.nodes = [] + } + + normalize(child, sample, type) { + let nodes = super.normalize(child) + + if (sample) { + if (type === 'prepend') { + if (this.nodes.length > 1) { + sample.raws.before = this.nodes[1].raws.before + } else { + delete sample.raws.before + } + } else if (this.first !== sample) { + for (let node of nodes) { + node.raws.before = sample.raws.before + } + } + } + + return nodes + } + + removeChild(child, ignore) { + let index = this.index(child) + + if (!ignore && index === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[index].raws.before + } + + return super.removeChild(child) + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts) + return lazy.stringify() + } +} + +Root.registerLazyResult = dependant => { + LazyResult = dependant +} + +Root.registerProcessor = dependant => { + Processor = dependant +} + +module.exports = Root +Root.default = Root + +Container.registerRoot(Root) diff --git a/node_modules/postcss/lib/rule.d.ts b/node_modules/postcss/lib/rule.d.ts new file mode 100644 index 0000000..04be5d6 --- /dev/null +++ b/node_modules/postcss/lib/rule.d.ts @@ -0,0 +1,113 @@ +import Container, { ContainerProps } from './container.js' + +declare namespace Rule { + export interface RuleRaws extends Record { + /** + * The space symbols after the last child of the node to the end of the node. + */ + after?: string + + /** + * The space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + */ + before?: string + + /** + * The symbols between the selector and `{` for rules. + */ + between?: string + + /** + * Contains `true` if there is semicolon after rule. + */ + ownSemicolon?: string + + /** + * The rule’s selector with comments. + */ + selector?: { + raw: string + value: string + } + + /** + * Contains `true` if the last child has an (optional) semicolon. + */ + semicolon?: boolean + } + + export interface RuleProps extends ContainerProps { + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: RuleRaws + /** Selector or selectors of the rule. */ + selector?: string + /** Selectors of the rule represented as an array of strings. */ + selectors?: string[] + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Rule_ as default } +} + +/** + * Represents a CSS rule: a selector followed by a declaration block. + * + * ```js + * Once (root, { Rule }) { + * let a = new Rule({ selector: 'a' }) + * a.append(…) + * root.append(a) + * } + * ``` + * + * ```js + * const root = postcss.parse('a{}') + * const rule = root.first + * rule.type //=> 'rule' + * rule.toString() //=> 'a{}' + * ``` + */ +declare class Rule_ extends Container { + parent: Container | undefined + raws: Rule.RuleRaws + /** + * The rule’s full selector represented as a string. + * + * ```js + * const root = postcss.parse('a, b { }') + * const rule = root.first + * rule.selector //=> 'a, b' + * ``` + */ + selector: string + + /** + * An array containing the rule’s individual selectors. + * Groups of selectors are split at commas. + * + * ```js + * const root = postcss.parse('a, b { }') + * const rule = root.first + * + * rule.selector //=> 'a, b' + * rule.selectors //=> ['a', 'b'] + * + * rule.selectors = ['a', 'strong'] + * rule.selector //=> 'a, strong' + * ``` + */ + selectors: string[] + + type: 'rule' + + constructor(defaults?: Rule.RuleProps) + assign(overrides: object | Rule.RuleProps): this + clone(overrides?: Partial): Rule + cloneAfter(overrides?: Partial): Rule + cloneBefore(overrides?: Partial): Rule +} + +declare class Rule extends Rule_ {} + +export = Rule diff --git a/node_modules/postcss/lib/rule.js b/node_modules/postcss/lib/rule.js new file mode 100644 index 0000000..a93ab25 --- /dev/null +++ b/node_modules/postcss/lib/rule.js @@ -0,0 +1,27 @@ +'use strict' + +let Container = require('./container') +let list = require('./list') + +class Rule extends Container { + constructor(defaults) { + super(defaults) + this.type = 'rule' + if (!this.nodes) this.nodes = [] + } + + get selectors() { + return list.comma(this.selector) + } + + set selectors(values) { + let match = this.selector ? this.selector.match(/,\s*/) : null + let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen') + this.selector = values.join(sep) + } +} + +module.exports = Rule +Rule.default = Rule + +Container.registerRule(Rule) diff --git a/node_modules/postcss/lib/stringifier.d.ts b/node_modules/postcss/lib/stringifier.d.ts new file mode 100644 index 0000000..f707a6a --- /dev/null +++ b/node_modules/postcss/lib/stringifier.d.ts @@ -0,0 +1,46 @@ +import { + AnyNode, + AtRule, + Builder, + Comment, + Container, + Declaration, + Document, + Root, + Rule +} from './postcss.js' + +declare namespace Stringifier { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Stringifier_ as default } +} + +declare class Stringifier_ { + builder: Builder + constructor(builder: Builder) + atrule(node: AtRule, semicolon?: boolean): void + beforeAfter(node: AnyNode, detect: 'after' | 'before'): string + block(node: AnyNode, start: string): void + body(node: Container): void + comment(node: Comment): void + decl(node: Declaration, semicolon?: boolean): void + document(node: Document): void + raw(node: AnyNode, own: null | string, detect?: string): string + rawBeforeClose(root: Root): string | undefined + rawBeforeComment(root: Root, node: Comment): string | undefined + rawBeforeDecl(root: Root, node: Declaration): string | undefined + rawBeforeOpen(root: Root): string | undefined + rawBeforeRule(root: Root): string | undefined + rawColon(root: Root): string | undefined + rawEmptyBody(root: Root): string | undefined + rawIndent(root: Root): string | undefined + rawSemicolon(root: Root): boolean | undefined + rawValue(node: AnyNode, prop: string): string + root(node: Root): void + rule(node: Rule): void + stringify(node: AnyNode, semicolon?: boolean): void +} + +declare class Stringifier extends Stringifier_ {} + +export = Stringifier diff --git a/node_modules/postcss/lib/stringifier.js b/node_modules/postcss/lib/stringifier.js new file mode 100644 index 0000000..e07ad12 --- /dev/null +++ b/node_modules/postcss/lib/stringifier.js @@ -0,0 +1,353 @@ +'use strict' + +const DEFAULT_RAW = { + after: '\n', + beforeClose: '\n', + beforeComment: '\n', + beforeDecl: '\n', + beforeOpen: ' ', + beforeRule: '\n', + colon: ': ', + commentLeft: ' ', + commentRight: ' ', + emptyBody: '', + indent: ' ', + semicolon: false +} + +function capitalize(str) { + return str[0].toUpperCase() + str.slice(1) +} + +class Stringifier { + constructor(builder) { + this.builder = builder + } + + atrule(node, semicolon) { + let name = '@' + node.name + let params = node.params ? this.rawValue(node, 'params') : '' + + if (typeof node.raws.afterName !== 'undefined') { + name += node.raws.afterName + } else if (params) { + name += ' ' + } + + if (node.nodes) { + this.block(node, name + params) + } else { + let end = (node.raws.between || '') + (semicolon ? ';' : '') + this.builder(name + params + end, node) + } + } + + beforeAfter(node, detect) { + let value + if (node.type === 'decl') { + value = this.raw(node, null, 'beforeDecl') + } else if (node.type === 'comment') { + value = this.raw(node, null, 'beforeComment') + } else if (detect === 'before') { + value = this.raw(node, null, 'beforeRule') + } else { + value = this.raw(node, null, 'beforeClose') + } + + let buf = node.parent + let depth = 0 + while (buf && buf.type !== 'root') { + depth += 1 + buf = buf.parent + } + + if (value.includes('\n')) { + let indent = this.raw(node, null, 'indent') + if (indent.length) { + for (let step = 0; step < depth; step++) value += indent + } + } + + return value + } + + block(node, start) { + let between = this.raw(node, 'between', 'beforeOpen') + this.builder(start + between + '{', node, 'start') + + let after + if (node.nodes && node.nodes.length) { + this.body(node) + after = this.raw(node, 'after') + } else { + after = this.raw(node, 'after', 'emptyBody') + } + + if (after) this.builder(after) + this.builder('}', node, 'end') + } + + body(node) { + let last = node.nodes.length - 1 + while (last > 0) { + if (node.nodes[last].type !== 'comment') break + last -= 1 + } + + let semicolon = this.raw(node, 'semicolon') + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i] + let before = this.raw(child, 'before') + if (before) this.builder(before) + this.stringify(child, last !== i || semicolon) + } + } + + comment(node) { + let left = this.raw(node, 'left', 'commentLeft') + let right = this.raw(node, 'right', 'commentRight') + this.builder('/*' + left + node.text + right + '*/', node) + } + + decl(node, semicolon) { + let between = this.raw(node, 'between', 'colon') + let string = node.prop + between + this.rawValue(node, 'value') + + if (node.important) { + string += node.raws.important || ' !important' + } + + if (semicolon) string += ';' + this.builder(string, node) + } + + document(node) { + this.body(node) + } + + raw(node, own, detect) { + let value + if (!detect) detect = own + + // Already had + if (own) { + value = node.raws[own] + if (typeof value !== 'undefined') return value + } + + let parent = node.parent + + if (detect === 'before') { + // Hack for first rule in CSS + if (!parent || (parent.type === 'root' && parent.first === node)) { + return '' + } + + // `root` nodes in `document` should use only their own raws + if (parent && parent.type === 'document') { + return '' + } + } + + // Floating child without parent + if (!parent) return DEFAULT_RAW[detect] + + // Detect style by other nodes + let root = node.root() + if (!root.rawCache) root.rawCache = {} + if (typeof root.rawCache[detect] !== 'undefined') { + return root.rawCache[detect] + } + + if (detect === 'before' || detect === 'after') { + return this.beforeAfter(node, detect) + } else { + let method = 'raw' + capitalize(detect) + if (this[method]) { + value = this[method](root, node) + } else { + root.walk(i => { + value = i.raws[own] + if (typeof value !== 'undefined') return false + }) + } + } + + if (typeof value === 'undefined') value = DEFAULT_RAW[detect] + + root.rawCache[detect] = value + return value + } + + rawBeforeClose(root) { + let value + root.walk(i => { + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== 'undefined') { + value = i.raws.after + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + } + }) + if (value) value = value.replace(/\S/g, '') + return value + } + + rawBeforeComment(root, node) { + let value + root.walkComments(i => { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + }) + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeDecl') + } else if (value) { + value = value.replace(/\S/g, '') + } + return value + } + + rawBeforeDecl(root, node) { + let value + root.walkDecls(i => { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + }) + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeRule') + } else if (value) { + value = value.replace(/\S/g, '') + } + return value + } + + rawBeforeOpen(root) { + let value + root.walk(i => { + if (i.type !== 'decl') { + value = i.raws.between + if (typeof value !== 'undefined') return false + } + }) + return value + } + + rawBeforeRule(root) { + let value + root.walk(i => { + if (i.nodes && (i.parent !== root || root.first !== i)) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + } + }) + if (value) value = value.replace(/\S/g, '') + return value + } + + rawColon(root) { + let value + root.walkDecls(i => { + if (typeof i.raws.between !== 'undefined') { + value = i.raws.between.replace(/[^\s:]/g, '') + return false + } + }) + return value + } + + rawEmptyBody(root) { + let value + root.walk(i => { + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after + if (typeof value !== 'undefined') return false + } + }) + return value + } + + rawIndent(root) { + if (root.raws.indent) return root.raws.indent + let value + root.walk(i => { + let p = i.parent + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== 'undefined') { + let parts = i.raws.before.split('\n') + value = parts[parts.length - 1] + value = value.replace(/\S/g, '') + return false + } + } + }) + return value + } + + rawSemicolon(root) { + let value + root.walk(i => { + if (i.nodes && i.nodes.length && i.last.type === 'decl') { + value = i.raws.semicolon + if (typeof value !== 'undefined') return false + } + }) + return value + } + + rawValue(node, prop) { + let value = node[prop] + let raw = node.raws[prop] + if (raw && raw.value === value) { + return raw.raw + } + + return value + } + + root(node) { + this.body(node) + if (node.raws.after) this.builder(node.raws.after) + } + + rule(node) { + this.block(node, this.rawValue(node, 'selector')) + if (node.raws.ownSemicolon) { + this.builder(node.raws.ownSemicolon, node, 'end') + } + } + + stringify(node, semicolon) { + /* c8 ignore start */ + if (!this[node.type]) { + throw new Error( + 'Unknown AST node type ' + + node.type + + '. ' + + 'Maybe you need to change PostCSS stringifier.' + ) + } + /* c8 ignore stop */ + this[node.type](node, semicolon) + } +} + +module.exports = Stringifier +Stringifier.default = Stringifier diff --git a/node_modules/postcss/lib/stringify.d.ts b/node_modules/postcss/lib/stringify.d.ts new file mode 100644 index 0000000..06ad0b4 --- /dev/null +++ b/node_modules/postcss/lib/stringify.d.ts @@ -0,0 +1,9 @@ +import { Stringifier } from './postcss.js' + +interface Stringify extends Stringifier { + default: Stringify +} + +declare const stringify: Stringify + +export = stringify diff --git a/node_modules/postcss/lib/stringify.js b/node_modules/postcss/lib/stringify.js new file mode 100644 index 0000000..77bd017 --- /dev/null +++ b/node_modules/postcss/lib/stringify.js @@ -0,0 +1,11 @@ +'use strict' + +let Stringifier = require('./stringifier') + +function stringify(node, builder) { + let str = new Stringifier(builder) + str.stringify(node) +} + +module.exports = stringify +stringify.default = stringify diff --git a/node_modules/postcss/lib/symbols.js b/node_modules/postcss/lib/symbols.js new file mode 100644 index 0000000..a142c26 --- /dev/null +++ b/node_modules/postcss/lib/symbols.js @@ -0,0 +1,5 @@ +'use strict' + +module.exports.isClean = Symbol('isClean') + +module.exports.my = Symbol('my') diff --git a/node_modules/postcss/lib/terminal-highlight.js b/node_modules/postcss/lib/terminal-highlight.js new file mode 100644 index 0000000..6196c9d --- /dev/null +++ b/node_modules/postcss/lib/terminal-highlight.js @@ -0,0 +1,70 @@ +'use strict' + +let pico = require('picocolors') + +let tokenizer = require('./tokenize') + +let Input + +function registerInput(dependant) { + Input = dependant +} + +const HIGHLIGHT_THEME = { + ';': pico.yellow, + ':': pico.yellow, + '(': pico.cyan, + ')': pico.cyan, + '[': pico.yellow, + ']': pico.yellow, + '{': pico.yellow, + '}': pico.yellow, + 'at-word': pico.cyan, + 'brackets': pico.cyan, + 'call': pico.cyan, + 'class': pico.yellow, + 'comment': pico.gray, + 'hash': pico.magenta, + 'string': pico.green +} + +function getTokenType([type, value], processor) { + if (type === 'word') { + if (value[0] === '.') { + return 'class' + } + if (value[0] === '#') { + return 'hash' + } + } + + if (!processor.endOfFile()) { + let next = processor.nextToken() + processor.back(next) + if (next[0] === 'brackets' || next[0] === '(') return 'call' + } + + return type +} + +function terminalHighlight(css) { + let processor = tokenizer(new Input(css), { ignoreErrors: true }) + let result = '' + while (!processor.endOfFile()) { + let token = processor.nextToken() + let color = HIGHLIGHT_THEME[getTokenType(token, processor)] + if (color) { + result += token[1] + .split(/\r?\n/) + .map(i => color(i)) + .join('\n') + } else { + result += token[1] + } + } + return result +} + +terminalHighlight.registerInput = registerInput + +module.exports = terminalHighlight diff --git a/node_modules/postcss/lib/tokenize.js b/node_modules/postcss/lib/tokenize.js new file mode 100644 index 0000000..39a20a3 --- /dev/null +++ b/node_modules/postcss/lib/tokenize.js @@ -0,0 +1,266 @@ +'use strict' + +const SINGLE_QUOTE = "'".charCodeAt(0) +const DOUBLE_QUOTE = '"'.charCodeAt(0) +const BACKSLASH = '\\'.charCodeAt(0) +const SLASH = '/'.charCodeAt(0) +const NEWLINE = '\n'.charCodeAt(0) +const SPACE = ' '.charCodeAt(0) +const FEED = '\f'.charCodeAt(0) +const TAB = '\t'.charCodeAt(0) +const CR = '\r'.charCodeAt(0) +const OPEN_SQUARE = '['.charCodeAt(0) +const CLOSE_SQUARE = ']'.charCodeAt(0) +const OPEN_PARENTHESES = '('.charCodeAt(0) +const CLOSE_PARENTHESES = ')'.charCodeAt(0) +const OPEN_CURLY = '{'.charCodeAt(0) +const CLOSE_CURLY = '}'.charCodeAt(0) +const SEMICOLON = ';'.charCodeAt(0) +const ASTERISK = '*'.charCodeAt(0) +const COLON = ':'.charCodeAt(0) +const AT = '@'.charCodeAt(0) + +const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g +const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g +const RE_BAD_BRACKET = /.[\r\n"'(/\\]/ +const RE_HEX_ESCAPE = /[\da-f]/i + +module.exports = function tokenizer(input, options = {}) { + let css = input.css.valueOf() + let ignore = options.ignoreErrors + + let code, next, quote, content, escape + let escaped, escapePos, prev, n, currentToken + + let length = css.length + let pos = 0 + let buffer = [] + let returned = [] + + function position() { + return pos + } + + function unclosed(what) { + throw input.error('Unclosed ' + what, pos) + } + + function endOfFile() { + return returned.length === 0 && pos >= length + } + + function nextToken(opts) { + if (returned.length) return returned.pop() + if (pos >= length) return + + let ignoreUnclosed = opts ? opts.ignoreUnclosed : false + + code = css.charCodeAt(pos) + + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: { + next = pos + do { + next += 1 + code = css.charCodeAt(next) + } while ( + code === SPACE || + code === NEWLINE || + code === TAB || + code === CR || + code === FEED + ) + + currentToken = ['space', css.slice(pos, next)] + pos = next - 1 + break + } + + case OPEN_SQUARE: + case CLOSE_SQUARE: + case OPEN_CURLY: + case CLOSE_CURLY: + case COLON: + case SEMICOLON: + case CLOSE_PARENTHESES: { + let controlChar = String.fromCharCode(code) + currentToken = [controlChar, controlChar, pos] + break + } + + case OPEN_PARENTHESES: { + prev = buffer.length ? buffer.pop()[1] : '' + n = css.charCodeAt(pos + 1) + if ( + prev === 'url' && + n !== SINGLE_QUOTE && + n !== DOUBLE_QUOTE && + n !== SPACE && + n !== NEWLINE && + n !== TAB && + n !== FEED && + n !== CR + ) { + next = pos + do { + escaped = false + next = css.indexOf(')', next + 1) + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos + break + } else { + unclosed('bracket') + } + } + escapePos = next + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1 + escaped = !escaped + } + } while (escaped) + + currentToken = ['brackets', css.slice(pos, next + 1), pos, next] + + pos = next + } else { + next = css.indexOf(')', pos + 1) + content = css.slice(pos, next + 1) + + if (next === -1 || RE_BAD_BRACKET.test(content)) { + currentToken = ['(', '(', pos] + } else { + currentToken = ['brackets', content, pos, next] + pos = next + } + } + + break + } + + case SINGLE_QUOTE: + case DOUBLE_QUOTE: { + quote = code === SINGLE_QUOTE ? "'" : '"' + next = pos + do { + escaped = false + next = css.indexOf(quote, next + 1) + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos + 1 + break + } else { + unclosed('string') + } + } + escapePos = next + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1 + escaped = !escaped + } + } while (escaped) + + currentToken = ['string', css.slice(pos, next + 1), pos, next] + pos = next + break + } + + case AT: { + RE_AT_END.lastIndex = pos + 1 + RE_AT_END.test(css) + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1 + } else { + next = RE_AT_END.lastIndex - 2 + } + + currentToken = ['at-word', css.slice(pos, next + 1), pos, next] + + pos = next + break + } + + case BACKSLASH: { + next = pos + escape = true + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1 + escape = !escape + } + code = css.charCodeAt(next + 1) + if ( + escape && + code !== SLASH && + code !== SPACE && + code !== NEWLINE && + code !== TAB && + code !== CR && + code !== FEED + ) { + next += 1 + if (RE_HEX_ESCAPE.test(css.charAt(next))) { + while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) { + next += 1 + } + if (css.charCodeAt(next + 1) === SPACE) { + next += 1 + } + } + } + + currentToken = ['word', css.slice(pos, next + 1), pos, next] + + pos = next + break + } + + default: { + if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { + next = css.indexOf('*/', pos + 2) + 1 + if (next === 0) { + if (ignore || ignoreUnclosed) { + next = css.length + } else { + unclosed('comment') + } + } + + currentToken = ['comment', css.slice(pos, next + 1), pos, next] + pos = next + } else { + RE_WORD_END.lastIndex = pos + 1 + RE_WORD_END.test(css) + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1 + } else { + next = RE_WORD_END.lastIndex - 2 + } + + currentToken = ['word', css.slice(pos, next + 1), pos, next] + buffer.push(currentToken) + pos = next + } + + break + } + } + + pos++ + return currentToken + } + + function back(token) { + returned.push(token) + } + + return { + back, + endOfFile, + nextToken, + position + } +} diff --git a/node_modules/postcss/lib/warn-once.js b/node_modules/postcss/lib/warn-once.js new file mode 100644 index 0000000..316e1cf --- /dev/null +++ b/node_modules/postcss/lib/warn-once.js @@ -0,0 +1,13 @@ +/* eslint-disable no-console */ +'use strict' + +let printed = {} + +module.exports = function warnOnce(message) { + if (printed[message]) return + printed[message] = true + + if (typeof console !== 'undefined' && console.warn) { + console.warn(message) + } +} diff --git a/node_modules/postcss/lib/warning.d.ts b/node_modules/postcss/lib/warning.d.ts new file mode 100644 index 0000000..b25bba8 --- /dev/null +++ b/node_modules/postcss/lib/warning.d.ts @@ -0,0 +1,147 @@ +import { RangePosition } from './css-syntax-error.js' +import Node from './node.js' + +declare namespace Warning { + export interface WarningOptions { + /** + * End position, exclusive, in CSS node string that caused the warning. + */ + end?: RangePosition + + /** + * End index, exclusive, in CSS node string that caused the warning. + */ + endIndex?: number + + /** + * Start index, inclusive, in CSS node string that caused the warning. + */ + index?: number + + /** + * CSS node that caused the warning. + */ + node?: Node + + /** + * Name of the plugin that created this warning. `Result#warn` fills + * this property automatically. + */ + plugin?: string + + /** + * Start position, inclusive, in CSS node string that caused the warning. + */ + start?: RangePosition + + /** + * Word in CSS source that caused the warning. + */ + word?: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Warning_ as default } +} + +/** + * Represents a plugin’s warning. It can be created using `Node#warn`. + * + * ```js + * if (decl.important) { + * decl.warn(result, 'Avoid !important', { word: '!important' }) + * } + * ``` + */ +declare class Warning_ { + /** + * Column for inclusive start position in the input file with this warning’s source. + * + * ```js + * warning.column //=> 6 + * ``` + */ + column: number + + /** + * Column for exclusive end position in the input file with this warning’s source. + * + * ```js + * warning.endColumn //=> 4 + * ``` + */ + endColumn?: number + + /** + * Line for exclusive end position in the input file with this warning’s source. + * + * ```js + * warning.endLine //=> 6 + * ``` + */ + endLine?: number + + /** + * Line for inclusive start position in the input file with this warning’s source. + * + * ```js + * warning.line //=> 5 + * ``` + */ + line: number + + /** + * Contains the CSS node that caused the warning. + * + * ```js + * warning.node.toString() //=> 'color: white !important' + * ``` + */ + node: Node + + /** + * The name of the plugin that created this warning. + * When you call `Node#warn` it will fill this property automatically. + * + * ```js + * warning.plugin //=> 'postcss-important' + * ``` + */ + plugin: string + + /** + * The warning message. + * + * ```js + * warning.text //=> 'Try to avoid !important' + * ``` + */ + text: string + + /** + * Type to filter warnings from `Result#messages`. + * Always equal to `"warning"`. + */ + type: 'warning' + + /** + * @param text Warning message. + * @param opts Warning options. + */ + constructor(text: string, opts?: Warning.WarningOptions) + + /** + * Returns a warning position and message. + * + * ```js + * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important' + * ``` + * + * @return Warning position and message. + */ + toString(): string +} + +declare class Warning extends Warning_ {} + +export = Warning diff --git a/node_modules/postcss/lib/warning.js b/node_modules/postcss/lib/warning.js new file mode 100644 index 0000000..3a3d79c --- /dev/null +++ b/node_modules/postcss/lib/warning.js @@ -0,0 +1,37 @@ +'use strict' + +class Warning { + constructor(text, opts = {}) { + this.type = 'warning' + this.text = text + + if (opts.node && opts.node.source) { + let range = opts.node.rangeBy(opts) + this.line = range.start.line + this.column = range.start.column + this.endLine = range.end.line + this.endColumn = range.end.column + } + + for (let opt in opts) this[opt] = opts[opt] + } + + toString() { + if (this.node) { + return this.node.error(this.text, { + index: this.index, + plugin: this.plugin, + word: this.word + }).message + } + + if (this.plugin) { + return this.plugin + ': ' + this.text + } + + return this.text + } +} + +module.exports = Warning +Warning.default = Warning diff --git a/node_modules/postcss/package.json b/node_modules/postcss/package.json new file mode 100644 index 0000000..d68db86 --- /dev/null +++ b/node_modules/postcss/package.json @@ -0,0 +1,88 @@ +{ + "name": "postcss", + "version": "8.4.31", + "description": "Tool for transforming styles with JS plugins", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "exports": { + ".": { + "require": "./lib/postcss.js", + "import": "./lib/postcss.mjs" + }, + "./lib/at-rule": "./lib/at-rule.js", + "./lib/comment": "./lib/comment.js", + "./lib/container": "./lib/container.js", + "./lib/css-syntax-error": "./lib/css-syntax-error.js", + "./lib/declaration": "./lib/declaration.js", + "./lib/fromJSON": "./lib/fromJSON.js", + "./lib/input": "./lib/input.js", + "./lib/lazy-result": "./lib/lazy-result.js", + "./lib/no-work-result": "./lib/no-work-result.js", + "./lib/list": "./lib/list.js", + "./lib/map-generator": "./lib/map-generator.js", + "./lib/node": "./lib/node.js", + "./lib/parse": "./lib/parse.js", + "./lib/parser": "./lib/parser.js", + "./lib/postcss": "./lib/postcss.js", + "./lib/previous-map": "./lib/previous-map.js", + "./lib/processor": "./lib/processor.js", + "./lib/result": "./lib/result.js", + "./lib/root": "./lib/root.js", + "./lib/rule": "./lib/rule.js", + "./lib/stringifier": "./lib/stringifier.js", + "./lib/stringify": "./lib/stringify.js", + "./lib/symbols": "./lib/symbols.js", + "./lib/terminal-highlight": "./lib/terminal-highlight.js", + "./lib/tokenize": "./lib/tokenize.js", + "./lib/warn-once": "./lib/warn-once.js", + "./lib/warning": "./lib/warning.js", + "./package.json": "./package.json" + }, + "main": "./lib/postcss.js", + "types": "./lib/postcss.d.ts", + "keywords": [ + "css", + "postcss", + "rework", + "preprocessor", + "parser", + "source map", + "transform", + "manipulation", + "transpiler" + ], + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "homepage": "https://postcss.org/", + "repository": "postcss/postcss", + "bugs": { + "url": "https://github.com/postcss/postcss/issues" + }, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "browser": { + "./lib/terminal-highlight": false, + "source-map-js": false, + "path": false, + "url": false, + "fs": false + } +} diff --git a/node_modules/queue-microtask/LICENSE b/node_modules/queue-microtask/LICENSE new file mode 100644 index 0000000..c7e6852 --- /dev/null +++ b/node_modules/queue-microtask/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/queue-microtask/README.md b/node_modules/queue-microtask/README.md new file mode 100644 index 0000000..0be05a6 --- /dev/null +++ b/node_modules/queue-microtask/README.md @@ -0,0 +1,90 @@ +# queue-microtask [![ci][ci-image]][ci-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[ci-image]: https://img.shields.io/github/workflow/status/feross/queue-microtask/ci/master +[ci-url]: https://github.com/feross/queue-microtask/actions +[npm-image]: https://img.shields.io/npm/v/queue-microtask.svg +[npm-url]: https://npmjs.org/package/queue-microtask +[downloads-image]: https://img.shields.io/npm/dm/queue-microtask.svg +[downloads-url]: https://npmjs.org/package/queue-microtask +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +### fast, tiny [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask) shim for modern engines + +- Use [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask) in all modern JS engines. +- No dependencies. Less than 10 lines. No shims or complicated fallbacks. +- Optimal performance in all modern environments + - Uses `queueMicrotask` in modern environments + - Fallback to `Promise.resolve().then(fn)` in Node.js 10 and earlier, and old browsers (same performance as `queueMicrotask`) + +## install + +``` +npm install queue-microtask +``` + +## usage + +```js +const queueMicrotask = require('queue-microtask') + +queueMicrotask(() => { /* this will run soon */ }) +``` + +## What is `queueMicrotask` and why would one use it? + +The `queueMicrotask` function is a WHATWG standard. It queues a microtask to be executed prior to control returning to the event loop. + +A microtask is a short function which will run after the current task has completed its work and when there is no other code waiting to be run before control of the execution context is returned to the event loop. + +The code `queueMicrotask(fn)` is equivalent to the code `Promise.resolve().then(fn)`. It is also very similar to [`process.nextTick(fn)`](https://nodejs.org/api/process.html#process_process_nexttick_callback_args) in Node. + +Using microtasks lets code run without interfering with any other, potentially higher priority, code that is pending, but before the JS engine regains control over the execution context. + +See the [spec](https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#microtask-queuing) or [Node documentation](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback) for more information. + +## Who is this package for? + +This package allows you to use `queueMicrotask` safely in all modern JS engines. Use it if you prioritize small JS bundle size over support for old browsers. + +If you just need to support Node 12 and later, use `queueMicrotask` directly. If you need to support all versions of Node, use this package. + +## Why not use `process.nextTick`? + +In Node, `queueMicrotask` and `process.nextTick` are [essentially equivalent](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback), though there are [subtle differences](https://github.com/YuzuJS/setImmediate#macrotasks-and-microtasks) that don't matter in most situations. + +You can think of `queueMicrotask` as a standardized version of `process.nextTick` that works in the browser. No need to rely on your browser bundler to shim `process` for the browser environment. + +## Why not use `setTimeout(fn, 0)`? + +This approach is the most compatible, but it has problems. Modern browsers throttle timers severely, so `setTimeout(…, 0)` usually takes at least 4ms to run. Furthermore, the throttling gets even worse if the page is backgrounded. If you have many `setTimeout` calls, then this can severely limit the performance of your program. + +## Why not use a microtask library like [`immediate`](https://www.npmjs.com/package/immediate) or [`asap`](https://www.npmjs.com/package/asap)? + +These packages are great! However, if you prioritize small JS bundle size over optimal performance in old browsers then you may want to consider this package. + +This package (`queue-microtask`) is four times smaller than `immediate`, twice as small as `asap`, and twice as small as using `process.nextTick` and letting the browser bundler shim it automatically. + +Note: This package throws an exception in JS environments which lack `Promise` support -- which are usually very old browsers and Node.js versions. + +Since the `queueMicrotask` API is supported in Node.js, Chrome, Firefox, Safari, Opera, and Edge, **the vast majority of users will get optimal performance**. Any JS environment with `Promise`, which is almost all of them, also get optimal performance. If you need support for JS environments which lack `Promise` support, use one of the alternative packages. + +## What is a shim? + +> In computer programming, a shim is a library that transparently intercepts API calls and changes the arguments passed, handles the operation itself or redirects the operation elsewhere. – [Wikipedia](https://en.wikipedia.org/wiki/Shim_(computing)) + +This package could also be described as a "ponyfill". + +> A ponyfill is almost the same as a polyfill, but not quite. Instead of patching functionality for older browsers, a ponyfill provides that functionality as a standalone module you can use. – [PonyFoo](https://ponyfoo.com/articles/polyfills-or-ponyfills) + +## API + +### `queueMicrotask(fn)` + +The `queueMicrotask()` method queues a microtask. + +The `fn` argument is a function to be executed after all pending tasks have completed but before yielding control to the browser's event loop. + +## license + +MIT. Copyright (c) [Feross Aboukhadijeh](https://feross.org). diff --git a/node_modules/queue-microtask/index.d.ts b/node_modules/queue-microtask/index.d.ts new file mode 100644 index 0000000..b6a8646 --- /dev/null +++ b/node_modules/queue-microtask/index.d.ts @@ -0,0 +1,2 @@ +declare const queueMicrotask: (cb: () => void) => void +export = queueMicrotask diff --git a/node_modules/queue-microtask/index.js b/node_modules/queue-microtask/index.js new file mode 100644 index 0000000..5560534 --- /dev/null +++ b/node_modules/queue-microtask/index.js @@ -0,0 +1,9 @@ +/*! queue-microtask. MIT License. Feross Aboukhadijeh */ +let promise + +module.exports = typeof queueMicrotask === 'function' + ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global) + // reuse resolved promise, and allocate it lazily + : cb => (promise || (promise = Promise.resolve())) + .then(cb) + .catch(err => setTimeout(() => { throw err }, 0)) diff --git a/node_modules/queue-microtask/package.json b/node_modules/queue-microtask/package.json new file mode 100644 index 0000000..d29a401 --- /dev/null +++ b/node_modules/queue-microtask/package.json @@ -0,0 +1,55 @@ +{ + "name": "queue-microtask", + "description": "fast, tiny `queueMicrotask` shim for modern engines", + "version": "1.2.3", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "https://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/queue-microtask/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^5.2.2" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "homepage": "https://github.com/feross/queue-microtask", + "keywords": [ + "asap", + "immediate", + "micro task", + "microtask", + "nextTick", + "process.nextTick", + "queue micro task", + "queue microtask", + "queue-microtask", + "queueMicrotask", + "setImmediate", + "task" + ], + "license": "MIT", + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/feross/queue-microtask.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + } +} diff --git a/node_modules/readdirp/LICENSE b/node_modules/readdirp/LICENSE new file mode 100644 index 0000000..037cbb4 --- /dev/null +++ b/node_modules/readdirp/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/readdirp/README.md b/node_modules/readdirp/README.md new file mode 100644 index 0000000..465593c --- /dev/null +++ b/node_modules/readdirp/README.md @@ -0,0 +1,122 @@ +# readdirp [![Weekly downloads](https://img.shields.io/npm/dw/readdirp.svg)](https://github.com/paulmillr/readdirp) + +Recursive version of [fs.readdir](https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback). Exposes a **stream API** and a **promise API**. + + +```sh +npm install readdirp +``` + +```javascript +const readdirp = require('readdirp'); + +// Use streams to achieve small RAM & CPU footprint. +// 1) Streams example with for-await. +for await (const entry of readdirp('.')) { + const {path} = entry; + console.log(`${JSON.stringify({path})}`); +} + +// 2) Streams example, non for-await. +// Print out all JS files along with their size within the current folder & subfolders. +readdirp('.', {fileFilter: '*.js', alwaysStat: true}) + .on('data', (entry) => { + const {path, stats: {size}} = entry; + console.log(`${JSON.stringify({path, size})}`); + }) + // Optionally call stream.destroy() in `warn()` in order to abort and cause 'close' to be emitted + .on('warn', error => console.error('non-fatal error', error)) + .on('error', error => console.error('fatal error', error)) + .on('end', () => console.log('done')); + +// 3) Promise example. More RAM and CPU than streams / for-await. +const files = await readdirp.promise('.'); +console.log(files.map(file => file.path)); + +// Other options. +readdirp('test', { + fileFilter: '*.js', + directoryFilter: ['!.git', '!*modules'] + // directoryFilter: (di) => di.basename.length === 9 + type: 'files_directories', + depth: 1 +}); +``` + +For more examples, check out `examples` directory. + +## API + +`const stream = readdirp(root[, options])` — **Stream API** + +- Reads given root recursively and returns a `stream` of [entry infos](#entryinfo) +- Optionally can be used like `for await (const entry of stream)` with node.js 10+ (`asyncIterator`). +- `on('data', (entry) => {})` [entry info](#entryinfo) for every file / dir. +- `on('warn', (error) => {})` non-fatal `Error` that prevents a file / dir from being processed. Example: inaccessible to the user. +- `on('error', (error) => {})` fatal `Error` which also ends the stream. Example: illegal options where passed. +- `on('end')` — we are done. Called when all entries were found and no more will be emitted. +- `on('close')` — stream is destroyed via `stream.destroy()`. + Could be useful if you want to manually abort even on a non fatal error. + At that point the stream is no longer `readable` and no more entries, warning or errors are emitted +- To learn more about streams, consult the very detailed [nodejs streams documentation](https://nodejs.org/api/stream.html) + or the [stream-handbook](https://github.com/substack/stream-handbook) + +`const entries = await readdirp.promise(root[, options])` — **Promise API**. Returns a list of [entry infos](#entryinfo). + +First argument is awalys `root`, path in which to start reading and recursing into subdirectories. + +### options + +- `fileFilter: ["*.js"]`: filter to include or exclude files. A `Function`, Glob string or Array of glob strings. + - **Function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry + - **Glob string**: a string (e.g., `*.js`) which is matched using [picomatch](https://github.com/micromatch/picomatch), so go there for more + information. Globstars (`**`) are not supported since specifying a recursive pattern for an already recursive function doesn't make sense. Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files. + - **Array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown. + `['*.json', '*.js']` includes all JavaScript and Json files. + `['!.git', '!node_modules']` includes all directories except the '.git' and 'node_modules'. + - Directories that do not pass a filter will not be recursed into. +- `directoryFilter: ['!.git']`: filter to include/exclude directories found and to recurse into. Directories that do not pass a filter will not be recursed into. +- `depth: 5`: depth at which to stop recursing even if more subdirectories are found +- `type: 'files'`: determines if data events on the stream should be emitted for `'files'` (default), `'directories'`, `'files_directories'`, or `'all'`. Setting to `'all'` will also include entries for other types of file descriptors like character devices, unix sockets and named pipes. +- `alwaysStat: false`: always return `stats` property for every file. Default is `false`, readdirp will return `Dirent` entries. Setting it to `true` can double readdir execution time - use it only when you need file `size`, `mtime` etc. Cannot be enabled on node <10.10.0. +- `lstat: false`: include symlink entries in the stream along with files. When `true`, `fs.lstat` would be used instead of `fs.stat` + +### `EntryInfo` + +Has the following properties: + +- `path: 'assets/javascripts/react.js'`: path to the file/directory (relative to given root) +- `fullPath: '/Users/dev/projects/app/assets/javascripts/react.js'`: full path to the file/directory found +- `basename: 'react.js'`: name of the file/directory +- `dirent: fs.Dirent`: built-in [dir entry object](https://nodejs.org/api/fs.html#fs_class_fs_dirent) - only with `alwaysStat: false` +- `stats: fs.Stats`: built in [stat object](https://nodejs.org/api/fs.html#fs_class_fs_stats) - only with `alwaysStat: true` + +## Changelog + +- 3.5 (Oct 13, 2020) disallows recursive directory-based symlinks. + Before, it could have entered infinite loop. +- 3.4 (Mar 19, 2020) adds support for directory-based symlinks. +- 3.3 (Dec 6, 2019) stabilizes RAM consumption and enables perf management with `highWaterMark` option. Fixes race conditions related to `for-await` looping. +- 3.2 (Oct 14, 2019) improves performance by 250% and makes streams implementation more idiomatic. +- 3.1 (Jul 7, 2019) brings `bigint` support to `stat` output on Windows. This is backwards-incompatible for some cases. Be careful. It you use it incorrectly, you'll see "TypeError: Cannot mix BigInt and other types, use explicit conversions". +- 3.0 brings huge performance improvements and stream backpressure support. +- Upgrading 2.x to 3.x: + - Signature changed from `readdirp(options)` to `readdirp(root, options)` + - Replaced callback API with promise API. + - Renamed `entryType` option to `type` + - Renamed `entryType: 'both'` to `'files_directories'` + - `EntryInfo` + - Renamed `stat` to `stats` + - Emitted only when `alwaysStat: true` + - `dirent` is emitted instead of `stats` by default with `alwaysStat: false` + - Renamed `name` to `basename` + - Removed `parentDir` and `fullParentDir` properties +- Supported node.js versions: + - 3.x: node 8+ + - 2.x: node 0.6+ + +## License + +Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller () + +MIT License, see [LICENSE](LICENSE) file. diff --git a/node_modules/readdirp/index.d.ts b/node_modules/readdirp/index.d.ts new file mode 100644 index 0000000..cbbd76c --- /dev/null +++ b/node_modules/readdirp/index.d.ts @@ -0,0 +1,43 @@ +// TypeScript Version: 3.2 + +/// + +import * as fs from 'fs'; +import { Readable } from 'stream'; + +declare namespace readdir { + interface EntryInfo { + path: string; + fullPath: string; + basename: string; + stats?: fs.Stats; + dirent?: fs.Dirent; + } + + interface ReaddirpOptions { + root?: string; + fileFilter?: string | string[] | ((entry: EntryInfo) => boolean); + directoryFilter?: string | string[] | ((entry: EntryInfo) => boolean); + type?: 'files' | 'directories' | 'files_directories' | 'all'; + lstat?: boolean; + depth?: number; + alwaysStat?: boolean; + } + + interface ReaddirpStream extends Readable, AsyncIterable { + read(): EntryInfo; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + + function promise( + root: string, + options?: ReaddirpOptions + ): Promise; +} + +declare function readdir( + root: string, + options?: readdir.ReaddirpOptions +): readdir.ReaddirpStream; + +export = readdir; diff --git a/node_modules/readdirp/index.js b/node_modules/readdirp/index.js new file mode 100644 index 0000000..cf739b2 --- /dev/null +++ b/node_modules/readdirp/index.js @@ -0,0 +1,287 @@ +'use strict'; + +const fs = require('fs'); +const { Readable } = require('stream'); +const sysPath = require('path'); +const { promisify } = require('util'); +const picomatch = require('picomatch'); + +const readdir = promisify(fs.readdir); +const stat = promisify(fs.stat); +const lstat = promisify(fs.lstat); +const realpath = promisify(fs.realpath); + +/** + * @typedef {Object} EntryInfo + * @property {String} path + * @property {String} fullPath + * @property {fs.Stats=} stats + * @property {fs.Dirent=} dirent + * @property {String} basename + */ + +const BANG = '!'; +const RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR'; +const NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]); +const FILE_TYPE = 'files'; +const DIR_TYPE = 'directories'; +const FILE_DIR_TYPE = 'files_directories'; +const EVERYTHING_TYPE = 'all'; +const ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE]; + +const isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code); +const [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10)); +const wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5)); + +const normalizeFilter = filter => { + if (filter === undefined) return; + if (typeof filter === 'function') return filter; + + if (typeof filter === 'string') { + const glob = picomatch(filter.trim()); + return entry => glob(entry.basename); + } + + if (Array.isArray(filter)) { + const positive = []; + const negative = []; + for (const item of filter) { + const trimmed = item.trim(); + if (trimmed.charAt(0) === BANG) { + negative.push(picomatch(trimmed.slice(1))); + } else { + positive.push(picomatch(trimmed)); + } + } + + if (negative.length > 0) { + if (positive.length > 0) { + return entry => + positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename)); + } + return entry => !negative.some(f => f(entry.basename)); + } + return entry => positive.some(f => f(entry.basename)); + } +}; + +class ReaddirpStream extends Readable { + static get defaultOptions() { + return { + root: '.', + /* eslint-disable no-unused-vars */ + fileFilter: (path) => true, + directoryFilter: (path) => true, + /* eslint-enable no-unused-vars */ + type: FILE_TYPE, + lstat: false, + depth: 2147483648, + alwaysStat: false + }; + } + + constructor(options = {}) { + super({ + objectMode: true, + autoDestroy: true, + highWaterMark: options.highWaterMark || 4096 + }); + const opts = { ...ReaddirpStream.defaultOptions, ...options }; + const { root, type } = opts; + + this._fileFilter = normalizeFilter(opts.fileFilter); + this._directoryFilter = normalizeFilter(opts.directoryFilter); + + const statMethod = opts.lstat ? lstat : stat; + // Use bigint stats if it's windows and stat() supports options (node 10+). + if (wantBigintFsStats) { + this._stat = path => statMethod(path, { bigint: true }); + } else { + this._stat = statMethod; + } + + this._maxDepth = opts.depth; + this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsEverything = type === EVERYTHING_TYPE; + this._root = sysPath.resolve(root); + this._isDirent = ('Dirent' in fs) && !opts.alwaysStat; + this._statsProp = this._isDirent ? 'dirent' : 'stats'; + this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent }; + + // Launch stream with one parent, the root dir. + this.parents = [this._exploreDir(root, 1)]; + this.reading = false; + this.parent = undefined; + } + + async _read(batch) { + if (this.reading) return; + this.reading = true; + + try { + while (!this.destroyed && batch > 0) { + const { path, depth, files = [] } = this.parent || {}; + + if (files.length > 0) { + const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path)); + for (const entry of await Promise.all(slice)) { + if (this.destroyed) return; + + const entryType = await this._getEntryType(entry); + if (entryType === 'directory' && this._directoryFilter(entry)) { + if (depth <= this._maxDepth) { + this.parents.push(this._exploreDir(entry.fullPath, depth + 1)); + } + + if (this._wantsDir) { + this.push(entry); + batch--; + } + } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) { + if (this._wantsFile) { + this.push(entry); + batch--; + } + } + } + } else { + const parent = this.parents.pop(); + if (!parent) { + this.push(null); + break; + } + this.parent = await parent; + if (this.destroyed) return; + } + } + } catch (error) { + this.destroy(error); + } finally { + this.reading = false; + } + } + + async _exploreDir(path, depth) { + let files; + try { + files = await readdir(path, this._rdOptions); + } catch (error) { + this._onError(error); + } + return { files, depth, path }; + } + + async _formatEntry(dirent, path) { + let entry; + try { + const basename = this._isDirent ? dirent.name : dirent; + const fullPath = sysPath.resolve(sysPath.join(path, basename)); + entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename }; + entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath); + } catch (err) { + this._onError(err); + } + return entry; + } + + _onError(err) { + if (isNormalFlowError(err) && !this.destroyed) { + this.emit('warn', err); + } else { + this.destroy(err); + } + } + + async _getEntryType(entry) { + // entry may be undefined, because a warning or an error were emitted + // and the statsProp is undefined + const stats = entry && entry[this._statsProp]; + if (!stats) { + return; + } + if (stats.isFile()) { + return 'file'; + } + if (stats.isDirectory()) { + return 'directory'; + } + if (stats && stats.isSymbolicLink()) { + const full = entry.fullPath; + try { + const entryRealPath = await realpath(full); + const entryRealPathStats = await lstat(entryRealPath); + if (entryRealPathStats.isFile()) { + return 'file'; + } + if (entryRealPathStats.isDirectory()) { + const len = entryRealPath.length; + if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) { + const recursiveError = new Error( + `Circular symlink detected: "${full}" points to "${entryRealPath}"` + ); + recursiveError.code = RECURSIVE_ERROR_CODE; + return this._onError(recursiveError); + } + return 'directory'; + } + } catch (error) { + this._onError(error); + } + } + } + + _includeAsFile(entry) { + const stats = entry && entry[this._statsProp]; + + return stats && this._wantsEverything && !stats.isDirectory(); + } +} + +/** + * @typedef {Object} ReaddirpArguments + * @property {Function=} fileFilter + * @property {Function=} directoryFilter + * @property {String=} type + * @property {Number=} depth + * @property {String=} root + * @property {Boolean=} lstat + * @property {Boolean=} bigint + */ + +/** + * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. + * @param {String} root Root directory + * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth + */ +const readdirp = (root, options = {}) => { + let type = options.entryType || options.type; + if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility + if (type) options.type = type; + if (!root) { + throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)'); + } else if (typeof root !== 'string') { + throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)'); + } else if (type && !ALL_TYPES.includes(type)) { + throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`); + } + + options.root = root; + return new ReaddirpStream(options); +}; + +const readdirpPromise = (root, options = {}) => { + return new Promise((resolve, reject) => { + const files = []; + readdirp(root, options) + .on('data', entry => files.push(entry)) + .on('end', () => resolve(files)) + .on('error', error => reject(error)); + }); +}; + +readdirp.promise = readdirpPromise; +readdirp.ReaddirpStream = ReaddirpStream; +readdirp.default = readdirp; + +module.exports = readdirp; diff --git a/node_modules/readdirp/package.json b/node_modules/readdirp/package.json new file mode 100644 index 0000000..dba5388 --- /dev/null +++ b/node_modules/readdirp/package.json @@ -0,0 +1,122 @@ +{ + "name": "readdirp", + "description": "Recursive version of fs.readdir with streaming API.", + "version": "3.6.0", + "homepage": "https://github.com/paulmillr/readdirp", + "repository": { + "type": "git", + "url": "git://github.com/paulmillr/readdirp.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/paulmillr/readdirp/issues" + }, + "author": "Thorsten Lorenz (thlorenz.com)", + "contributors": [ + "Thorsten Lorenz (thlorenz.com)", + "Paul Miller (https://paulmillr.com)" + ], + "main": "index.js", + "engines": { + "node": ">=8.10.0" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "recursive", + "fs", + "stream", + "streams", + "readdir", + "filesystem", + "find", + "filter" + ], + "scripts": { + "dtslint": "dtslint", + "nyc": "nyc", + "mocha": "mocha --exit", + "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .", + "test": "npm run lint && nyc npm run mocha" + }, + "dependencies": { + "picomatch": "^2.2.1" + }, + "devDependencies": { + "@types/node": "^14", + "chai": "^4.2", + "chai-subset": "^1.6", + "dtslint": "^3.3.0", + "eslint": "^7.0.0", + "mocha": "^7.1.1", + "nyc": "^15.0.0", + "rimraf": "^3.0.0", + "typescript": "^4.0.3" + }, + "nyc": { + "reporter": [ + "html", + "text" + ] + }, + "eslintConfig": { + "root": true, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 9, + "sourceType": "script" + }, + "env": { + "node": true, + "es6": true + }, + "rules": { + "array-callback-return": "error", + "no-empty": [ + "error", + { + "allowEmptyCatch": true + } + ], + "no-else-return": [ + "error", + { + "allowElseIf": false + } + ], + "no-lonely-if": "error", + "no-var": "error", + "object-shorthand": "error", + "prefer-arrow-callback": [ + "error", + { + "allowNamedFunctions": true + } + ], + "prefer-const": [ + "error", + { + "ignoreReadBeforeAssign": true + } + ], + "prefer-destructuring": [ + "error", + { + "object": true, + "array": false + } + ], + "prefer-spread": "error", + "prefer-template": "error", + "radix": "error", + "semi": "error", + "strict": "error", + "quotes": [ + "error", + "single" + ] + } + } +} diff --git a/node_modules/reusify/.coveralls.yml b/node_modules/reusify/.coveralls.yml new file mode 100644 index 0000000..359f683 --- /dev/null +++ b/node_modules/reusify/.coveralls.yml @@ -0,0 +1 @@ +repo_token: yIxhFqtaaz5iGVYfie9mODehFYogm8S8L diff --git a/node_modules/reusify/.travis.yml b/node_modules/reusify/.travis.yml new file mode 100644 index 0000000..1970476 --- /dev/null +++ b/node_modules/reusify/.travis.yml @@ -0,0 +1,28 @@ +language: node_js +sudo: false + +node_js: + - 9 + - 8 + - 7 + - 6 + - 5 + - 4 + - 4.0 + - iojs-v3 + - iojs-v2 + - iojs-v1 + - 0.12 + - 0.10 + +cache: + directories: + - node_modules + +after_script: +- npm run coverage + +notifications: + email: + on_success: never + on_failure: always diff --git a/node_modules/reusify/LICENSE b/node_modules/reusify/LICENSE new file mode 100644 index 0000000..fbf3a01 --- /dev/null +++ b/node_modules/reusify/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Matteo Collina + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/node_modules/reusify/README.md b/node_modules/reusify/README.md new file mode 100644 index 0000000..badcb7c --- /dev/null +++ b/node_modules/reusify/README.md @@ -0,0 +1,145 @@ +# reusify + +[![npm version][npm-badge]][npm-url] +[![Build Status][travis-badge]][travis-url] +[![Coverage Status][coveralls-badge]][coveralls-url] + +Reuse your objects and functions for maximum speed. This technique will +make any function run ~10% faster. You call your functions a +lot, and it adds up quickly in hot code paths. + +``` +$ node benchmarks/createNoCodeFunction.js +Total time 53133 +Total iterations 100000000 +Iteration/s 1882069.5236482036 + +$ node benchmarks/reuseNoCodeFunction.js +Total time 50617 +Total iterations 100000000 +Iteration/s 1975620.838848608 +``` + +The above benchmark uses fibonacci to simulate a real high-cpu load. +The actual numbers might differ for your use case, but the difference +should not. + +The benchmark was taken using Node v6.10.0. + +This library was extracted from +[fastparallel](http://npm.im/fastparallel). + +## Example + +```js +var reusify = require('reusify') +var fib = require('reusify/benchmarks/fib') +var instance = reusify(MyObject) + +// get an object from the cache, +// or creates a new one when cache is empty +var obj = instance.get() + +// set the state +obj.num = 100 +obj.func() + +// reset the state. +// if the state contains any external object +// do not use delete operator (it is slow) +// prefer set them to null +obj.num = 0 + +// store an object in the cache +instance.release(obj) + +function MyObject () { + // you need to define this property + // so V8 can compile MyObject into an + // hidden class + this.next = null + this.num = 0 + + var that = this + + // this function is never reallocated, + // so it can be optimized by V8 + this.func = function () { + if (null) { + // do nothing + } else { + // calculates fibonacci + fib(that.num) + } + } +} +``` + +The above example was intended for synchronous code, let's see async: +```js +var reusify = require('reusify') +var instance = reusify(MyObject) + +for (var i = 0; i < 100; i++) { + getData(i, console.log) +} + +function getData (value, cb) { + var obj = instance.get() + + obj.value = value + obj.cb = cb + obj.run() +} + +function MyObject () { + this.next = null + this.value = null + + var that = this + + this.run = function () { + asyncOperation(that.value, that.handle) + } + + this.handle = function (err, result) { + that.cb(err, result) + that.value = null + that.cb = null + instance.release(that) + } +} +``` + +Also note how in the above examples, the code, that consumes an istance of `MyObject`, +reset the state to initial condition, just before storing it in the cache. +That's needed so that every subsequent request for an instance from the cache, +could get a clean instance. + +## Why + +It is faster because V8 doesn't have to collect all the functions you +create. On a short-lived benchmark, it is as fast as creating the +nested function, but on a longer time frame it creates less +pressure on the garbage collector. + +## Other examples +If you want to see some complex example, checkout [middie](https://github.com/fastify/middie) and [steed](https://github.com/mcollina/steed). + +## Acknowledgements + +Thanks to [Trevor Norris](https://github.com/trevnorris) for +getting me down the rabbit hole of performance, and thanks to [Mathias +Buss](http://github.com/mafintosh) for suggesting me to share this +trick. + +## License + +MIT + +[npm-badge]: https://badge.fury.io/js/reusify.svg +[npm-url]: https://badge.fury.io/js/reusify +[travis-badge]: https://api.travis-ci.org/mcollina/reusify.svg +[travis-url]: https://travis-ci.org/mcollina/reusify +[coveralls-badge]: https://coveralls.io/repos/mcollina/reusify/badge.svg?branch=master&service=github +[coveralls-url]: https://coveralls.io/github/mcollina/reusify?branch=master diff --git a/node_modules/reusify/benchmarks/createNoCodeFunction.js b/node_modules/reusify/benchmarks/createNoCodeFunction.js new file mode 100644 index 0000000..ce1aac7 --- /dev/null +++ b/node_modules/reusify/benchmarks/createNoCodeFunction.js @@ -0,0 +1,30 @@ +'use strict' + +var fib = require('./fib') +var max = 100000000 +var start = Date.now() + +// create a funcion with the typical error +// pattern, that delegates the heavy load +// to something else +function createNoCodeFunction () { + /* eslint no-constant-condition: "off" */ + var num = 100 + + ;(function () { + if (null) { + // do nothing + } else { + fib(num) + } + })() +} + +for (var i = 0; i < max; i++) { + createNoCodeFunction() +} + +var time = Date.now() - start +console.log('Total time', time) +console.log('Total iterations', max) +console.log('Iteration/s', max / time * 1000) diff --git a/node_modules/reusify/benchmarks/fib.js b/node_modules/reusify/benchmarks/fib.js new file mode 100644 index 0000000..e22cc48 --- /dev/null +++ b/node_modules/reusify/benchmarks/fib.js @@ -0,0 +1,13 @@ +'use strict' + +function fib (num) { + var fib = [] + + fib[0] = 0 + fib[1] = 1 + for (var i = 2; i <= num; i++) { + fib[i] = fib[i - 2] + fib[i - 1] + } +} + +module.exports = fib diff --git a/node_modules/reusify/benchmarks/reuseNoCodeFunction.js b/node_modules/reusify/benchmarks/reuseNoCodeFunction.js new file mode 100644 index 0000000..3358d6e --- /dev/null +++ b/node_modules/reusify/benchmarks/reuseNoCodeFunction.js @@ -0,0 +1,38 @@ +'use strict' + +var reusify = require('../') +var fib = require('./fib') +var instance = reusify(MyObject) +var max = 100000000 +var start = Date.now() + +function reuseNoCodeFunction () { + var obj = instance.get() + obj.num = 100 + obj.func() + obj.num = 0 + instance.release(obj) +} + +function MyObject () { + this.next = null + var that = this + this.num = 0 + this.func = function () { + /* eslint no-constant-condition: "off" */ + if (null) { + // do nothing + } else { + fib(that.num) + } + } +} + +for (var i = 0; i < max; i++) { + reuseNoCodeFunction() +} + +var time = Date.now() - start +console.log('Total time', time) +console.log('Total iterations', max) +console.log('Iteration/s', max / time * 1000) diff --git a/node_modules/reusify/package.json b/node_modules/reusify/package.json new file mode 100644 index 0000000..ee66aee --- /dev/null +++ b/node_modules/reusify/package.json @@ -0,0 +1,45 @@ +{ + "name": "reusify", + "version": "1.0.4", + "description": "Reuse objects and functions with style", + "main": "reusify.js", + "scripts": { + "lint": "standard", + "test": "tape test.js | faucet", + "istanbul": "istanbul cover tape test.js", + "coverage": "npm run istanbul; cat coverage/lcov.info | coveralls" + }, + "pre-commit": [ + "lint", + "test" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/mcollina/reusify.git" + }, + "keywords": [ + "reuse", + "object", + "performance", + "function", + "fast" + ], + "author": "Matteo Collina ", + "license": "MIT", + "bugs": { + "url": "https://github.com/mcollina/reusify/issues" + }, + "homepage": "https://github.com/mcollina/reusify#readme", + "engines": { + "node": ">=0.10.0", + "iojs": ">=1.0.0" + }, + "devDependencies": { + "coveralls": "^2.13.3", + "faucet": "0.0.1", + "istanbul": "^0.4.5", + "pre-commit": "^1.2.2", + "standard": "^10.0.3", + "tape": "^4.8.0" + } +} diff --git a/node_modules/reusify/reusify.js b/node_modules/reusify/reusify.js new file mode 100644 index 0000000..e6f36f3 --- /dev/null +++ b/node_modules/reusify/reusify.js @@ -0,0 +1,33 @@ +'use strict' + +function reusify (Constructor) { + var head = new Constructor() + var tail = head + + function get () { + var current = head + + if (current.next) { + head = current.next + } else { + head = new Constructor() + tail = head + } + + current.next = null + + return current + } + + function release (obj) { + tail.next = obj + tail = obj + } + + return { + get: get, + release: release + } +} + +module.exports = reusify diff --git a/node_modules/reusify/test.js b/node_modules/reusify/test.js new file mode 100644 index 0000000..929cfd7 --- /dev/null +++ b/node_modules/reusify/test.js @@ -0,0 +1,66 @@ +'use strict' + +var test = require('tape') +var reusify = require('./') + +test('reuse objects', function (t) { + t.plan(6) + + function MyObject () { + t.pass('constructor called') + this.next = null + } + + var instance = reusify(MyObject) + var obj = instance.get() + + t.notEqual(obj, instance.get(), 'two instance created') + t.notOk(obj.next, 'next must be null') + + instance.release(obj) + + // the internals keeps a hot copy ready for reuse + // putting this one back in the queue + instance.release(instance.get()) + + // comparing the old one with the one we got + // never do this in real code, after release you + // should never reuse that instance + t.equal(obj, instance.get(), 'instance must be reused') +}) + +test('reuse more than 2 objects', function (t) { + function MyObject () { + t.pass('constructor called') + this.next = null + } + + var instance = reusify(MyObject) + var obj = instance.get() + var obj2 = instance.get() + var obj3 = instance.get() + + t.notOk(obj.next, 'next must be null') + t.notOk(obj2.next, 'next must be null') + t.notOk(obj3.next, 'next must be null') + + t.notEqual(obj, obj2) + t.notEqual(obj, obj3) + t.notEqual(obj3, obj2) + + instance.release(obj) + instance.release(obj2) + instance.release(obj3) + + // skip one + instance.get() + + var obj4 = instance.get() + var obj5 = instance.get() + var obj6 = instance.get() + + t.equal(obj4, obj) + t.equal(obj5, obj2) + t.equal(obj6, obj3) + t.end() +}) diff --git a/node_modules/rollup/LICENSE.md b/node_modules/rollup/LICENSE.md new file mode 100644 index 0000000..a199a31 --- /dev/null +++ b/node_modules/rollup/LICENSE.md @@ -0,0 +1,695 @@ +# Rollup core license +Rollup is released under the MIT license: + +The MIT License (MIT) + +Copyright (c) 2017 [these people](https://github.com/rollup/rollup/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Licenses of bundled dependencies +The published Rollup artifact additionally contains code with the following licenses: +MIT, ISC + +# Bundled dependencies: +## @jridgewell/sourcemap-codec +License: MIT +By: Rich Harris +Repository: git+https://github.com/jridgewell/sourcemap-codec.git + +> The MIT License +> +> Copyright (c) 2015 Rich Harris +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## @rollup/pluginutils +License: MIT +By: Rich Harris +Repository: rollup/plugins + +--------------------------------------- + +## acorn +License: MIT +By: Marijn Haverbeke, Ingvar Stepanyan, Adrian Heine +Repository: https://github.com/acornjs/acorn.git + +> MIT License +> +> Copyright (C) 2012-2022 by various contributors (see AUTHORS) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## acorn-import-assertions +License: MIT +By: Sven Sauleau +Repository: https://github.com/xtuc/acorn-import-assertions + +--------------------------------------- + +## acorn-walk +License: MIT +By: Marijn Haverbeke, Ingvar Stepanyan, Adrian Heine +Repository: https://github.com/acornjs/acorn.git + +> MIT License +> +> Copyright (C) 2012-2020 by various contributors (see AUTHORS) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## anymatch +License: ISC +By: Elan Shanker +Repository: https://github.com/micromatch/anymatch + +> The ISC License +> +> Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com) +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## binary-extensions +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/binary-extensions + +> MIT License +> +> Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## braces +License: MIT +By: Jon Schlinkert, Brian Woodward, Elan Shanker, Eugene Sharygin, hemanth.hm +Repository: micromatch/braces + +> The MIT License (MIT) +> +> Copyright (c) 2014-2018, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## builtin-modules +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/builtin-modules + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## chokidar +License: MIT +By: Paul Miller, Elan Shanker +Repository: git+https://github.com/paulmillr/chokidar.git + +> The MIT License (MIT) +> +> Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the “Software”), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## colorette +License: MIT +By: Jorge Bucaran +Repository: jorgebucaran/colorette + +> Copyright © Jorge Bucaran <> +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## date-time +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/date-time + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## fill-range +License: MIT +By: Jon Schlinkert, Edo Rivai, Paul Miller, Rouven Weßling +Repository: jonschlinkert/fill-range + +> The MIT License (MIT) +> +> Copyright (c) 2014-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## flru +License: MIT +By: Luke Edwards +Repository: lukeed/flru + +> MIT License +> +> Copyright (c) Luke Edwards (lukeed.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## glob-parent +License: ISC +By: Gulp Team, Elan Shanker, Blaine Bublitz +Repository: gulpjs/glob-parent + +> The ISC License +> +> Copyright (c) 2015, 2019 Elan Shanker +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## is-binary-path +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/is-binary-path + +> MIT License +> +> Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## is-extglob +License: MIT +By: Jon Schlinkert +Repository: jonschlinkert/is-extglob + +> The MIT License (MIT) +> +> Copyright (c) 2014-2016, Jon Schlinkert +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## is-glob +License: MIT +By: Jon Schlinkert, Brian Woodward, Daniel Perez +Repository: micromatch/is-glob + +> The MIT License (MIT) +> +> Copyright (c) 2014-2017, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## is-number +License: MIT +By: Jon Schlinkert, Olsten Larck, Rouven Weßling +Repository: jonschlinkert/is-number + +> The MIT License (MIT) +> +> Copyright (c) 2014-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## is-reference +License: MIT +By: Rich Harris +Repository: git+https://github.com/Rich-Harris/is-reference.git + +--------------------------------------- + +## locate-character +License: MIT +By: Rich Harris +Repository: git+https://gitlab.com/Rich-Harris/locate-character.git + +--------------------------------------- + +## magic-string +License: MIT +By: Rich Harris +Repository: https://github.com/rich-harris/magic-string + +> Copyright 2018 Rich Harris +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## normalize-path +License: MIT +By: Jon Schlinkert, Blaine Bublitz +Repository: jonschlinkert/normalize-path + +> The MIT License (MIT) +> +> Copyright (c) 2014-2018, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## parse-ms +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/parse-ms + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## picomatch +License: MIT +By: Jon Schlinkert +Repository: micromatch/picomatch + +> The MIT License (MIT) +> +> Copyright (c) 2017-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## pretty-bytes +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/pretty-bytes + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## pretty-ms +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/pretty-ms + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## readdirp +License: MIT +By: Thorsten Lorenz, Paul Miller +Repository: git://github.com/paulmillr/readdirp.git + +> MIT License +> +> Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## signal-exit +License: ISC +By: Ben Coe +Repository: https://github.com/tapjs/signal-exit.git + +> The ISC License +> +> Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter, and Contributors +> +> Permission to use, copy, modify, and/or distribute this software +> for any purpose with or without fee is hereby granted, provided +> that the above copyright notice and this permission notice +> appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +> OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +> LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +> OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +> WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +> ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## time-zone +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/time-zone + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## to-regex-range +License: MIT +By: Jon Schlinkert, Rouven Weßling +Repository: micromatch/to-regex-range + +> The MIT License (MIT) +> +> Copyright (c) 2015-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## yargs-parser +License: ISC +By: Ben Coe +Repository: https://github.com/yargs/yargs-parser.git + +> Copyright (c) 2016, Contributors +> +> Permission to use, copy, modify, and/or distribute this software +> for any purpose with or without fee is hereby granted, provided +> that the above copyright notice and this permission notice +> appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +> OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +> LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +> OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +> WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +> ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/rollup/README.md b/node_modules/rollup/README.md new file mode 100644 index 0000000..08ac4d3 --- /dev/null +++ b/node_modules/rollup/README.md @@ -0,0 +1,125 @@ +

    + +

    + +

    + + npm version + + + install size + + + code coverage + + + backers + + + sponsors + + + license + + + + Join the chat at https://is.gd/rollup_chat + +

    + +

    Rollup

    + +## Overview + +Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application. It uses the standardized ES module format for code, instead of previous idiosyncratic solutions such as CommonJS and AMD. ES modules let you freely and seamlessly combine the most useful individual functions from your favorite libraries. Rollup can optimize ES modules for faster native loading in modern browsers, or output a legacy module format allowing ES module workflows today. + +## Quick Start Guide + +Install with `npm install --global rollup`. Rollup can be used either through a [command line interface](https://rollupjs.org/command-line-interface/) with an optional configuration file or else through its [JavaScript API](https://rollupjs.org/javascript-api/). Run `rollup --help` to see the available options and parameters. The starter project templates, [rollup-starter-lib](https://github.com/rollup/rollup-starter-lib) and [rollup-starter-app](https://github.com/rollup/rollup-starter-app), demonstrate common configuration options, and more detailed instructions are available throughout the [user guide](https://rollupjs.org/introduction/). + +### Commands + +These commands assume the entry point to your application is named main.js, and that you'd like all imports compiled into a single file named bundle.js. + +For browsers: + +```bash +# compile to a `); + preTransformRequest(server, modulePath, base); + }; + await traverseHtml(html, filename, (node) => { + if (!nodeIsElement(node)) { + return; + } + // script tags + if (node.nodeName === 'script') { + const { src, sourceCodeLocation, isModule } = getScriptInfo(node); + if (src) { + processNodeUrl(src, sourceCodeLocation, s, config, htmlPath, originalUrl, server); + } + else if (isModule && node.childNodes.length) { + addInlineModule(node, 'js'); + } + } + if (node.nodeName === 'style' && node.childNodes.length) { + const children = node.childNodes[0]; + styleUrl.push({ + start: children.sourceCodeLocation.startOffset, + end: children.sourceCodeLocation.endOffset, + code: children.value, + }); + } + // elements with [href/src] attrs + const assetAttrs = assetAttrsConfig[node.nodeName]; + if (assetAttrs) { + for (const p of node.attrs) { + const attrKey = getAttrKey(p); + if (p.value && assetAttrs.includes(attrKey)) { + processNodeUrl(p, node.sourceCodeLocation.attrs[attrKey], s, config, htmlPath, originalUrl); + } + } + } + }); + await Promise.all(styleUrl.map(async ({ start, end, code }, index) => { + const url = `${proxyModulePath}?html-proxy&direct&index=${index}.css`; + // ensure module in graph after successful load + const mod = await moduleGraph.ensureEntryFromUrl(url, false); + ensureWatchedFile(watcher, mod.file, config.root); + const result = await server.pluginContainer.transform(code, mod.id); + let content = ''; + if (result) { + if (result.map) { + if (result.map.mappings) { + await injectSourcesContent(result.map, proxyModulePath, config.logger); + } + content = getCodeWithSourcemap('css', result.code, result.map); + } + else { + content = result.code; + } + } + s.overwrite(start, end, content); + })); + html = s.toString(); + return { + html, + tags: [ + { + tag: 'script', + attrs: { + type: 'module', + src: path$o.posix.join(base, CLIENT_PUBLIC_PATH), + }, + injectTo: 'head-prepend', + }, + ], + }; +}; +function indexHtmlMiddleware(server) { + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + return async function viteIndexHtmlMiddleware(req, res, next) { + if (res.writableEnded) { + return next(); + } + const url = req.url && cleanUrl(req.url); + // htmlFallbackMiddleware appends '.html' to URLs + if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { + const filename = getHtmlFilename(url, server); + if (fs$l.existsSync(filename)) { + try { + let html = await fsp.readFile(filename, 'utf-8'); + html = await server.transformIndexHtml(url, html, req.originalUrl); + return send$2(req, res, html, 'html', { + headers: server.config.server.headers, + }); + } + catch (e) { + return next(e); + } + } + } + next(); + }; +} +function preTransformRequest(server, url, base) { + if (!server.config.server.preTransformRequests) + return; + url = unwrapId(stripBase(url, base)); + // transform all url as non-ssr as html includes client-side assets only + server.transformRequest(url).catch((e) => { + if (e?.code === ERR_OUTDATED_OPTIMIZED_DEP || + e?.code === ERR_CLOSED_SERVER) { + // these are expected errors + return; + } + // Unexpected error, log the issue but avoid an unhandled exception + server.config.logger.error(e.message); + }); +} + +const logTime = createDebugger('vite:time'); +function timeMiddleware(root) { + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + return function viteTimeMiddleware(req, res, next) { + const start = performance.now(); + const end = res.end; + res.end = (...args) => { + logTime?.(`${timeFrom(start)} ${prettifyUrl(req.url, root)}`); + return end.call(res, ...args); + }; + next(); + }; +} + +class ModuleNode { + /** + * @param setIsSelfAccepting - set `false` to set `isSelfAccepting` later. e.g. #7870 + */ + constructor(url, setIsSelfAccepting = true) { + /** + * Resolved file system path + query + */ + this.id = null; + this.file = null; + this.importers = new Set(); + this.clientImportedModules = new Set(); + this.ssrImportedModules = new Set(); + this.acceptedHmrDeps = new Set(); + this.acceptedHmrExports = null; + this.importedBindings = null; + this.transformResult = null; + this.ssrTransformResult = null; + this.ssrModule = null; + this.ssrError = null; + this.lastHMRTimestamp = 0; + this.lastInvalidationTimestamp = 0; + this.url = url; + this.type = isDirectCSSRequest(url) ? 'css' : 'js'; + if (setIsSelfAccepting) { + this.isSelfAccepting = false; + } + } + get importedModules() { + const importedModules = new Set(this.clientImportedModules); + for (const module of this.ssrImportedModules) { + importedModules.add(module); + } + return importedModules; + } +} +class ModuleGraph { + constructor(resolveId) { + this.resolveId = resolveId; + this.urlToModuleMap = new Map(); + this.idToModuleMap = new Map(); + // a single file may corresponds to multiple modules with different queries + this.fileToModulesMap = new Map(); + this.safeModulesPath = new Set(); + /** + * @internal + */ + this._unresolvedUrlToModuleMap = new Map(); + /** + * @internal + */ + this._ssrUnresolvedUrlToModuleMap = new Map(); + } + async getModuleByUrl(rawUrl, ssr) { + // Quick path, if we already have a module for this rawUrl (even without extension) + rawUrl = removeImportQuery(removeTimestampQuery(rawUrl)); + const mod = this._getUnresolvedUrlToModule(rawUrl, ssr); + if (mod) { + return mod; + } + const [url] = await this._resolveUrl(rawUrl, ssr); + return this.urlToModuleMap.get(url); + } + getModuleById(id) { + return this.idToModuleMap.get(removeTimestampQuery(id)); + } + getModulesByFile(file) { + return this.fileToModulesMap.get(file); + } + onFileChange(file) { + const mods = this.getModulesByFile(file); + if (mods) { + const seen = new Set(); + mods.forEach((mod) => { + this.invalidateModule(mod, seen); + }); + } + } + invalidateModule(mod, seen = new Set(), timestamp = Date.now(), isHmr = false, hmrBoundaries = []) { + if (seen.has(mod)) { + return; + } + seen.add(mod); + if (isHmr) { + mod.lastHMRTimestamp = timestamp; + } + else { + // Save the timestamp for this invalidation, so we can avoid caching the result of possible already started + // processing being done for this module + mod.lastInvalidationTimestamp = timestamp; + } + // Don't invalidate mod.info and mod.meta, as they are part of the processing pipeline + // Invalidating the transform result is enough to ensure this module is re-processed next time it is requested + mod.transformResult = null; + mod.ssrTransformResult = null; + mod.ssrModule = null; + mod.ssrError = null; + // Fix #3033 + if (hmrBoundaries.includes(mod)) { + return; + } + mod.importers.forEach((importer) => { + if (!importer.acceptedHmrDeps.has(mod)) { + this.invalidateModule(importer, seen, timestamp, isHmr); + } + }); + } + invalidateAll() { + const timestamp = Date.now(); + const seen = new Set(); + this.idToModuleMap.forEach((mod) => { + this.invalidateModule(mod, seen, timestamp); + }); + } + /** + * Update the module graph based on a module's updated imports information + * If there are dependencies that no longer have any importers, they are + * returned as a Set. + */ + async updateModuleInfo(mod, importedModules, importedBindings, acceptedModules, acceptedExports, isSelfAccepting, ssr) { + mod.isSelfAccepting = isSelfAccepting; + const prevImports = ssr ? mod.ssrImportedModules : mod.clientImportedModules; + let noLongerImported; + let resolvePromises = []; + let resolveResults = new Array(importedModules.size); + let index = 0; + // update import graph + for (const imported of importedModules) { + const nextIndex = index++; + if (typeof imported === 'string') { + resolvePromises.push(this.ensureEntryFromUrl(imported, ssr).then((dep) => { + dep.importers.add(mod); + resolveResults[nextIndex] = dep; + })); + } + else { + imported.importers.add(mod); + resolveResults[nextIndex] = imported; + } + } + if (resolvePromises.length) { + await Promise.all(resolvePromises); + } + const nextImports = new Set(resolveResults); + if (ssr) { + mod.ssrImportedModules = nextImports; + } + else { + mod.clientImportedModules = nextImports; + } + // remove the importer from deps that were imported but no longer are. + prevImports.forEach((dep) => { + if (!mod.clientImportedModules.has(dep) && + !mod.ssrImportedModules.has(dep)) { + dep.importers.delete(mod); + if (!dep.importers.size) { + (noLongerImported || (noLongerImported = new Set())).add(dep); + } + } + }); + // update accepted hmr deps + resolvePromises = []; + resolveResults = new Array(acceptedModules.size); + index = 0; + for (const accepted of acceptedModules) { + const nextIndex = index++; + if (typeof accepted === 'string') { + resolvePromises.push(this.ensureEntryFromUrl(accepted, ssr).then((dep) => { + resolveResults[nextIndex] = dep; + })); + } + else { + resolveResults[nextIndex] = accepted; + } + } + if (resolvePromises.length) { + await Promise.all(resolvePromises); + } + mod.acceptedHmrDeps = new Set(resolveResults); + // update accepted hmr exports + mod.acceptedHmrExports = acceptedExports; + mod.importedBindings = importedBindings; + return noLongerImported; + } + async ensureEntryFromUrl(rawUrl, ssr, setIsSelfAccepting = true) { + return this._ensureEntryFromUrl(rawUrl, ssr, setIsSelfAccepting); + } + /** + * @internal + */ + async _ensureEntryFromUrl(rawUrl, ssr, setIsSelfAccepting = true, + // Optimization, avoid resolving the same url twice if the caller already did it + resolved) { + // Quick path, if we already have a module for this rawUrl (even without extension) + rawUrl = removeImportQuery(removeTimestampQuery(rawUrl)); + let mod = this._getUnresolvedUrlToModule(rawUrl, ssr); + if (mod) { + return mod; + } + const modPromise = (async () => { + const [url, resolvedId, meta] = await this._resolveUrl(rawUrl, ssr, resolved); + mod = this.idToModuleMap.get(resolvedId); + if (!mod) { + mod = new ModuleNode(url, setIsSelfAccepting); + if (meta) + mod.meta = meta; + this.urlToModuleMap.set(url, mod); + mod.id = resolvedId; + this.idToModuleMap.set(resolvedId, mod); + const file = (mod.file = cleanUrl(resolvedId)); + let fileMappedModules = this.fileToModulesMap.get(file); + if (!fileMappedModules) { + fileMappedModules = new Set(); + this.fileToModulesMap.set(file, fileMappedModules); + } + fileMappedModules.add(mod); + } + // multiple urls can map to the same module and id, make sure we register + // the url to the existing module in that case + else if (!this.urlToModuleMap.has(url)) { + this.urlToModuleMap.set(url, mod); + } + this._setUnresolvedUrlToModule(rawUrl, mod, ssr); + return mod; + })(); + // Also register the clean url to the module, so that we can short-circuit + // resolving the same url twice + this._setUnresolvedUrlToModule(rawUrl, modPromise, ssr); + return modPromise; + } + // some deps, like a css file referenced via @import, don't have its own + // url because they are inlined into the main css import. But they still + // need to be represented in the module graph so that they can trigger + // hmr in the importing css file. + createFileOnlyEntry(file) { + file = normalizePath$3(file); + let fileMappedModules = this.fileToModulesMap.get(file); + if (!fileMappedModules) { + fileMappedModules = new Set(); + this.fileToModulesMap.set(file, fileMappedModules); + } + const url = `${FS_PREFIX}${file}`; + for (const m of fileMappedModules) { + if (m.url === url || m.id === file) { + return m; + } + } + const mod = new ModuleNode(url); + mod.file = file; + fileMappedModules.add(mod); + return mod; + } + // for incoming urls, it is important to: + // 1. remove the HMR timestamp query (?t=xxxx) and the ?import query + // 2. resolve its extension so that urls with or without extension all map to + // the same module + async resolveUrl(url, ssr) { + url = removeImportQuery(removeTimestampQuery(url)); + const mod = await this._getUnresolvedUrlToModule(url, ssr); + if (mod?.id) { + return [mod.url, mod.id, mod.meta]; + } + return this._resolveUrl(url, ssr); + } + /** + * @internal + */ + _getUnresolvedUrlToModule(url, ssr) { + return (ssr ? this._ssrUnresolvedUrlToModuleMap : this._unresolvedUrlToModuleMap).get(url); + } + /** + * @internal + */ + _setUnresolvedUrlToModule(url, mod, ssr) { + (ssr + ? this._ssrUnresolvedUrlToModuleMap + : this._unresolvedUrlToModuleMap).set(url, mod); + } + /** + * @internal + */ + async _resolveUrl(url, ssr, alreadyResolved) { + const resolved = alreadyResolved ?? (await this.resolveId(url, !!ssr)); + const resolvedId = resolved?.id || url; + if (url !== resolvedId && + !url.includes('\0') && + !url.startsWith(`virtual:`)) { + const ext = extname$1(cleanUrl(resolvedId)); + if (ext) { + const pathname = cleanUrl(url); + if (!pathname.endsWith(ext)) { + url = pathname + ext + url.slice(pathname.length); + } + } + } + return [url, resolvedId, resolved?.meta]; + } +} + +function createServer(inlineConfig = {}) { + return _createServer(inlineConfig, { ws: true }); +} +async function _createServer(inlineConfig = {}, options) { + const config = await resolveConfig(inlineConfig, 'serve'); + const { root, server: serverConfig } = config; + const httpsOptions = await resolveHttpsConfig(config.server.https); + const { middlewareMode } = serverConfig; + const resolvedWatchOptions = resolveChokidarOptions(config, { + disableGlobbing: true, + ...serverConfig.watch, + }); + const middlewares = connect$1(); + const httpServer = middlewareMode + ? null + : await resolveHttpServer(serverConfig, middlewares, httpsOptions); + const ws = createWebSocketServer(httpServer, config, httpsOptions); + if (httpServer) { + setClientErrorHandler(httpServer, config.logger); + } + const watcher = chokidar.watch( + // config file dependencies and env file might be outside of root + [root, ...config.configFileDependencies, config.envDir], resolvedWatchOptions); + const moduleGraph = new ModuleGraph((url, ssr) => container.resolveId(url, undefined, { ssr })); + const container = await createPluginContainer(config, moduleGraph, watcher); + const closeHttpServer = createServerCloseFn(httpServer); + let exitProcess; + const server = { + config, + middlewares, + httpServer, + watcher, + pluginContainer: container, + ws, + moduleGraph, + resolvedUrls: null, + ssrTransform(code, inMap, url, originalCode = code) { + return ssrTransform(code, inMap, url, originalCode, server.config); + }, + transformRequest(url, options) { + return transformRequest(url, server, options); + }, + transformIndexHtml: null, + async ssrLoadModule(url, opts) { + if (isDepsOptimizerEnabled(config, true)) { + await initDevSsrDepsOptimizer(config, server); + } + if (config.legacy?.buildSsrCjsExternalHeuristics) { + await updateCjsSsrExternals(server); + } + return ssrLoadModule(url, server, undefined, undefined, opts?.fixStacktrace); + }, + ssrFixStacktrace(e) { + ssrFixStacktrace(e, moduleGraph); + }, + ssrRewriteStacktrace(stack) { + return ssrRewriteStacktrace(stack, moduleGraph); + }, + async reloadModule(module) { + if (serverConfig.hmr !== false && module.file) { + updateModules(module.file, [module], Date.now(), server); + } + }, + async listen(port, isRestart) { + await startServer(server, port); + if (httpServer) { + server.resolvedUrls = await resolveServerUrls(httpServer, config.server, config); + if (!isRestart && config.server.open) + server.openBrowser(); + } + return server; + }, + openBrowser() { + const options = server.config.server; + const url = server.resolvedUrls?.local[0] ?? server.resolvedUrls?.network[0]; + if (url) { + const path = typeof options.open === 'string' + ? new URL(options.open, url).href + : url; + openBrowser(path, true, server.config.logger); + } + else { + server.config.logger.warn('No URL available to open in browser'); + } + }, + async close() { + if (!middlewareMode) { + process.off('SIGTERM', exitProcess); + if (process.env.CI !== 'true') { + process.stdin.off('end', exitProcess); + } + } + await Promise.allSettled([ + watcher.close(), + ws.close(), + container.close(), + getDepsOptimizer(server.config)?.close(), + getDepsOptimizer(server.config, true)?.close(), + closeHttpServer(), + ]); + // Await pending requests. We throw early in transformRequest + // and in hooks if the server is closing for non-ssr requests, + // so the import analysis plugin stops pre-transforming static + // imports and this block is resolved sooner. + // During SSR, we let pending requests finish to avoid exposing + // the server closed error to the users. + while (server._pendingRequests.size > 0) { + await Promise.allSettled([...server._pendingRequests.values()].map((pending) => pending.request)); + } + server.resolvedUrls = null; + }, + printUrls() { + if (server.resolvedUrls) { + printServerUrls(server.resolvedUrls, serverConfig.host, config.logger.info); + } + else if (middlewareMode) { + throw new Error('cannot print server URLs in middleware mode.'); + } + else { + throw new Error('cannot print server URLs before server.listen is called.'); + } + }, + async restart(forceOptimize) { + if (!server._restartPromise) { + server._forceOptimizeOnRestart = !!forceOptimize; + server._restartPromise = restartServer(server).finally(() => { + server._restartPromise = null; + server._forceOptimizeOnRestart = false; + }); + } + return server._restartPromise; + }, + _ssrExternals: null, + _restartPromise: null, + _importGlobMap: new Map(), + _forceOptimizeOnRestart: false, + _pendingRequests: new Map(), + _fsDenyGlob: picomatch$4(config.server.fs.deny, { matchBase: true }), + _shortcutsOptions: undefined, + }; + server.transformIndexHtml = createDevHtmlTransformFn(server); + if (!middlewareMode) { + exitProcess = async () => { + try { + await server.close(); + } + finally { + process.exit(); + } + }; + process.once('SIGTERM', exitProcess); + if (process.env.CI !== 'true') { + process.stdin.on('end', exitProcess); + } + } + const onHMRUpdate = async (file, configOnly) => { + if (serverConfig.hmr !== false) { + try { + await handleHMRUpdate(file, server, configOnly); + } + catch (err) { + ws.send({ + type: 'error', + err: prepareError(err), + }); + } + } + }; + const onFileAddUnlink = async (file) => { + file = normalizePath$3(file); + await handleFileAddUnlink(file, server); + await onHMRUpdate(file, true); + }; + watcher.on('change', async (file) => { + file = normalizePath$3(file); + // invalidate module graph cache on file change + moduleGraph.onFileChange(file); + await onHMRUpdate(file, false); + }); + watcher.on('add', onFileAddUnlink); + watcher.on('unlink', onFileAddUnlink); + ws.on('vite:invalidate', async ({ path, message }) => { + const mod = moduleGraph.urlToModuleMap.get(path); + if (mod && mod.isSelfAccepting && mod.lastHMRTimestamp > 0) { + config.logger.info(colors$1.yellow(`hmr invalidate `) + + colors$1.dim(path) + + (message ? ` ${message}` : ''), { timestamp: true }); + const file = getShortName(mod.file, config.root); + updateModules(file, [...mod.importers], mod.lastHMRTimestamp, server, true); + } + }); + if (!middlewareMode && httpServer) { + httpServer.once('listening', () => { + // update actual port since this may be different from initial value + serverConfig.port = httpServer.address().port; + }); + } + // apply server configuration hooks from plugins + const postHooks = []; + for (const hook of config.getSortedPluginHooks('configureServer')) { + postHooks.push(await hook(server)); + } + // Internal middlewares ------------------------------------------------------ + // request timer + if (process.env.DEBUG) { + middlewares.use(timeMiddleware(root)); + } + // cors (enabled by default) + const { cors } = serverConfig; + if (cors !== false) { + middlewares.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors)); + } + // proxy + const { proxy } = serverConfig; + if (proxy) { + middlewares.use(proxyMiddleware(httpServer, proxy, config)); + } + // base + if (config.base !== '/') { + middlewares.use(baseMiddleware(server)); + } + // open in editor support + middlewares.use('/__open-in-editor', launchEditorMiddleware$1()); + // ping request handler + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + middlewares.use(function viteHMRPingMiddleware(req, res, next) { + if (req.headers['accept'] === 'text/x-vite-ping') { + res.writeHead(204).end(); + } + else { + next(); + } + }); + // serve static files under /public + // this applies before the transform middleware so that these files are served + // as-is without transforms. + if (config.publicDir) { + middlewares.use(servePublicMiddleware(config.publicDir, config.server.headers)); + } + // main transform middleware + middlewares.use(transformMiddleware(server)); + // serve static files + middlewares.use(serveRawFsMiddleware(server)); + middlewares.use(serveStaticMiddleware(root, server)); + // html fallback + if (config.appType === 'spa' || config.appType === 'mpa') { + middlewares.use(htmlFallbackMiddleware(root, config.appType === 'spa')); + } + // run post config hooks + // This is applied before the html middleware so that user middleware can + // serve custom content instead of index.html. + postHooks.forEach((fn) => fn && fn()); + if (config.appType === 'spa' || config.appType === 'mpa') { + // transform index.html + middlewares.use(indexHtmlMiddleware(server)); + // handle 404s + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + middlewares.use(function vite404Middleware(_, res) { + res.statusCode = 404; + res.end(); + }); + } + // error handler + middlewares.use(errorMiddleware(server, middlewareMode)); + // httpServer.listen can be called multiple times + // when port when using next port number + // this code is to avoid calling buildStart multiple times + let initingServer; + let serverInited = false; + const initServer = async () => { + if (serverInited) + return; + if (initingServer) + return initingServer; + initingServer = (async function () { + await container.buildStart({}); + // start deps optimizer after all container plugins are ready + if (isDepsOptimizerEnabled(config, false)) { + await initDepsOptimizer(config, server); + } + initingServer = undefined; + serverInited = true; + })(); + return initingServer; + }; + if (!middlewareMode && httpServer) { + // overwrite listen to init optimizer before server start + const listen = httpServer.listen.bind(httpServer); + httpServer.listen = (async (port, ...args) => { + try { + // ensure ws server started + ws.listen(); + await initServer(); + } + catch (e) { + httpServer.emit('error', e); + return; + } + return listen(port, ...args); + }); + } + else { + if (options.ws) { + ws.listen(); + } + await initServer(); + } + return server; +} +async function startServer(server, inlinePort) { + const httpServer = server.httpServer; + if (!httpServer) { + throw new Error('Cannot call server.listen in middleware mode.'); + } + const options = server.config.server; + const port = inlinePort ?? options.port ?? DEFAULT_DEV_PORT; + const hostname = await resolveHostname(options.host); + await httpServerStart(httpServer, { + port, + strictPort: options.strictPort, + host: hostname.host, + logger: server.config.logger, + }); +} +function createServerCloseFn(server) { + if (!server) { + return () => { }; + } + let hasListened = false; + const openSockets = new Set(); + server.on('connection', (socket) => { + openSockets.add(socket); + socket.on('close', () => { + openSockets.delete(socket); + }); + }); + server.once('listening', () => { + hasListened = true; + }); + return () => new Promise((resolve, reject) => { + openSockets.forEach((s) => s.destroy()); + if (hasListened) { + server.close((err) => { + if (err) { + reject(err); + } + else { + resolve(); + } + }); + } + else { + resolve(); + } + }); +} +function resolvedAllowDir(root, dir) { + return normalizePath$3(path$o.resolve(root, dir)); +} +function resolveServerOptions(root, raw, logger) { + const server = { + preTransformRequests: true, + ...raw, + sourcemapIgnoreList: raw?.sourcemapIgnoreList === false + ? () => false + : raw?.sourcemapIgnoreList || isInNodeModules, + middlewareMode: !!raw?.middlewareMode, + }; + let allowDirs = server.fs?.allow; + const deny = server.fs?.deny || ['.env', '.env.*', '*.{crt,pem}']; + if (!allowDirs) { + allowDirs = [searchForWorkspaceRoot(root)]; + } + allowDirs = allowDirs.map((i) => resolvedAllowDir(root, i)); + // only push client dir when vite itself is outside-of-root + const resolvedClientDir = resolvedAllowDir(root, CLIENT_DIR); + if (!allowDirs.some((dir) => isParentDirectory(dir, resolvedClientDir))) { + allowDirs.push(resolvedClientDir); + } + server.fs = { + strict: server.fs?.strict ?? true, + allow: allowDirs, + deny, + }; + if (server.origin?.endsWith('/')) { + server.origin = server.origin.slice(0, -1); + logger.warn(colors$1.yellow(`${colors$1.bold('(!)')} server.origin should not end with "/". Using "${server.origin}" instead.`)); + } + return server; +} +async function restartServer(server) { + global.__vite_start_time = performance.now(); + const { port: prevPort, host: prevHost } = server.config.server; + const shortcutsOptions = server._shortcutsOptions; + const oldUrls = server.resolvedUrls; + let inlineConfig = server.config.inlineConfig; + if (server._forceOptimizeOnRestart) { + inlineConfig = mergeConfig(inlineConfig, { + optimizeDeps: { + force: true, + }, + }); + } + let newServer = null; + try { + // delay ws server listen + newServer = await _createServer(inlineConfig, { ws: false }); + } + catch (err) { + server.config.logger.error(err.message, { + timestamp: true, + }); + server.config.logger.error('server restart failed', { timestamp: true }); + return; + } + await server.close(); + // Assign new server props to existing server instance + Object.assign(server, newServer); + const { logger, server: { port, host, middlewareMode }, } = server.config; + if (!middlewareMode) { + await server.listen(port, true); + logger.info('server restarted.', { timestamp: true }); + if ((port ?? DEFAULT_DEV_PORT) !== (prevPort ?? DEFAULT_DEV_PORT) || + host !== prevHost || + diffDnsOrderChange(oldUrls, newServer.resolvedUrls)) { + logger.info(''); + server.printUrls(); + } + } + else { + server.ws.listen(); + logger.info('server restarted.', { timestamp: true }); + } + if (shortcutsOptions) { + shortcutsOptions.print = false; + bindShortcuts(newServer, shortcutsOptions); + } +} +async function updateCjsSsrExternals(server) { + if (!server._ssrExternals) { + let knownImports = []; + // Important! We use the non-ssr optimized deps to find known imports + // Only the explicitly defined deps are optimized during dev SSR, so + // we use the generated list from the scanned deps in regular dev. + // This is part of the v2 externalization heuristics and it is kept + // for backwards compatibility in case user needs to fallback to the + // legacy scheme. It may be removed in a future v3 minor. + const depsOptimizer = getDepsOptimizer(server.config, false); // non-ssr + if (depsOptimizer) { + await depsOptimizer.scanProcessing; + knownImports = [ + ...Object.keys(depsOptimizer.metadata.optimized), + ...Object.keys(depsOptimizer.metadata.discovered), + ]; + } + server._ssrExternals = cjsSsrResolveExternals(server.config, knownImports); + } +} + +var index = { + __proto__: null, + _createServer: _createServer, + createServer: createServer, + resolveServerOptions: resolveServerOptions +}; + +/* eslint-disable */ +//@ts-nocheck +//TODO: replace this code with https://github.com/lukeed/polka/pull/148 once it's released +// This is based on https://github.com/preactjs/wmr/blob/main/packages/wmr/src/lib/polkompress.js +// MIT Licensed https://github.com/preactjs/wmr/blob/main/LICENSE +/* global Buffer */ +const noop = () => { }; +const mimes = /text|javascript|\/json|xml/i; +const threshold = 1024; +const level = -1; +let brotli = false; +const getChunkSize = (chunk, enc) => (chunk ? Buffer.byteLength(chunk, enc) : 0); +function compression() { + const brotliOpts = (typeof brotli === 'object' && brotli) || {}; + const gzipOpts = {}; + // disable Brotli on Node<12.7 where it is unsupported: + if (!zlib$1.createBrotliCompress) + brotli = false; + return function viteCompressionMiddleware(req, res, next = noop) { + const accept = req.headers['accept-encoding'] + ''; + const encoding = ((brotli && accept.match(/\bbr\b/)) || + (accept.match(/\bgzip\b/)) || + [])[0]; + // skip if no response body or no supported encoding: + if (req.method === 'HEAD' || !encoding) + return next(); + /** @type {zlib.Gzip | zlib.BrotliCompress} */ + let compress; + let pendingStatus; + /** @type {[string, function][]?} */ + let pendingListeners = []; + let started = false; + let size = 0; + function start() { + started = true; + size = res.getHeader('Content-Length') | 0 || size; + const compressible = mimes.test(String(res.getHeader('Content-Type') || 'text/plain')); + const cleartext = !res.getHeader('Content-Encoding'); + const listeners = pendingListeners || []; + if (compressible && cleartext && size >= threshold) { + res.setHeader('Content-Encoding', encoding); + res.removeHeader('Content-Length'); + if (encoding === 'br') { + const params = { + [zlib$1.constants.BROTLI_PARAM_QUALITY]: level, + [zlib$1.constants.BROTLI_PARAM_SIZE_HINT]: size, + }; + compress = zlib$1.createBrotliCompress({ + params: Object.assign(params, brotliOpts), + }); + } + else { + compress = zlib$1.createGzip(Object.assign({ level }, gzipOpts)); + } + // backpressure + compress.on('data', (chunk) => write.call(res, chunk) === false && compress.pause()); + on.call(res, 'drain', () => compress.resume()); + compress.on('end', () => end.call(res)); + listeners.forEach((p) => compress.on.apply(compress, p)); + } + else { + pendingListeners = null; + listeners.forEach((p) => on.apply(res, p)); + } + writeHead.call(res, pendingStatus || res.statusCode); + } + const { end, write, on, writeHead } = res; + res.writeHead = function (status, reason, headers) { + if (typeof reason !== 'string') + [headers, reason] = [reason, headers]; + if (headers) + for (let i in headers) + res.setHeader(i, headers[i]); + pendingStatus = status; + return this; + }; + res.write = function (chunk, enc, cb) { + size += getChunkSize(chunk, enc); + if (!started) + start(); + if (!compress) + return write.apply(this, arguments); + return compress.write.apply(compress, arguments); + }; + res.end = function (chunk, enc, cb) { + if (arguments.length > 0 && typeof chunk !== 'function') { + size += getChunkSize(chunk, enc); + } + if (!started) + start(); + if (!compress) + return end.apply(this, arguments); + return compress.end.apply(compress, arguments); + }; + res.on = function (type, listener) { + if (!pendingListeners || type !== 'drain') + on.call(this, type, listener); + else if (compress) + compress.on(type, listener); + else + pendingListeners.push([type, listener]); + return this; + }; + next(); + }; +} + +function resolvePreviewOptions(preview, server) { + // The preview server inherits every CommonServerOption from the `server` config + // except for the port to enable having both the dev and preview servers running + // at the same time without extra configuration + return { + port: preview?.port, + strictPort: preview?.strictPort ?? server.strictPort, + host: preview?.host ?? server.host, + https: preview?.https ?? server.https, + open: preview?.open ?? server.open, + proxy: preview?.proxy ?? server.proxy, + cors: preview?.cors ?? server.cors, + headers: preview?.headers ?? server.headers, + }; +} +/** + * Starts the Vite server in preview mode, to simulate a production deployment + */ +async function preview(inlineConfig = {}) { + const config = await resolveConfig(inlineConfig, 'serve', 'production', 'production'); + const distDir = path$o.resolve(config.root, config.build.outDir); + if (!fs$l.existsSync(distDir) && + // error if no plugins implement `configurePreviewServer` + config.plugins.every((plugin) => !plugin.configurePreviewServer) && + // error if called in CLI only. programmatic usage could access `httpServer` + // and affect file serving + process.argv[1]?.endsWith(path$o.normalize('bin/vite.js')) && + process.argv[2] === 'preview') { + throw new Error(`The directory "${config.build.outDir}" does not exist. Did you build your project?`); + } + const app = connect$1(); + const httpServer = await resolveHttpServer(config.preview, app, await resolveHttpsConfig(config.preview?.https)); + setClientErrorHandler(httpServer, config.logger); + const options = config.preview; + const logger = config.logger; + const server = { + config, + middlewares: app, + httpServer, + resolvedUrls: null, + printUrls() { + if (server.resolvedUrls) { + printServerUrls(server.resolvedUrls, options.host, logger.info); + } + else { + throw new Error('cannot print server URLs before server is listening.'); + } + }, + }; + // apply server hooks from plugins + const postHooks = []; + for (const hook of config.getSortedPluginHooks('configurePreviewServer')) { + postHooks.push(await hook(server)); + } + // cors + const { cors } = config.preview; + if (cors !== false) { + app.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors)); + } + // proxy + const { proxy } = config.preview; + if (proxy) { + app.use(proxyMiddleware(httpServer, proxy, config)); + } + app.use(compression()); + const previewBase = config.base === './' || config.base === '' ? '/' : config.base; + // static assets + const headers = config.preview.headers; + const viteAssetMiddleware = (...args) => sirv(distDir, { + etag: true, + dev: true, + single: config.appType === 'spa', + setHeaders(res) { + if (headers) { + for (const name in headers) { + res.setHeader(name, headers[name]); + } + } + }, + shouldServe(filePath) { + return shouldServeFile(filePath, distDir); + }, + })(...args); + app.use(previewBase, viteAssetMiddleware); + // apply post server hooks from plugins + postHooks.forEach((fn) => fn && fn()); + const hostname = await resolveHostname(options.host); + const port = options.port ?? DEFAULT_PREVIEW_PORT; + const protocol = options.https ? 'https' : 'http'; + const serverPort = await httpServerStart(httpServer, { + port, + strictPort: options.strictPort, + host: hostname.host, + logger, + }); + server.resolvedUrls = await resolveServerUrls(httpServer, config.preview, config); + if (options.open) { + const path = typeof options.open === 'string' ? options.open : previewBase; + openBrowser(path.startsWith('http') + ? path + : new URL(path, `${protocol}://${hostname.name}:${serverPort}`).href, true, logger); + } + return server; +} + +var preview$1 = { + __proto__: null, + preview: preview, + resolvePreviewOptions: resolvePreviewOptions +}; + +function resolveSSROptions(ssr, preserveSymlinks, buildSsrCjsExternalHeuristics) { + ssr ?? (ssr = {}); + const optimizeDeps = ssr.optimizeDeps ?? {}; + const format = buildSsrCjsExternalHeuristics ? 'cjs' : 'esm'; + const target = 'node'; + return { + format, + target, + ...ssr, + optimizeDeps: { + disabled: true, + ...optimizeDeps, + esbuildOptions: { + preserveSymlinks, + ...optimizeDeps.esbuildOptions, + }, + }, + }; +} + +const debug = createDebugger('vite:config'); +const promisifiedRealpath = promisify$4(fs$l.realpath); +function defineConfig(config) { + return config; +} +async function resolveConfig(inlineConfig, command, defaultMode = 'development', defaultNodeEnv = 'development') { + let config = inlineConfig; + let configFileDependencies = []; + let mode = inlineConfig.mode || defaultMode; + const isNodeEnvSet = !!process.env.NODE_ENV; + const packageCache = new Map(); + // some dependencies e.g. @vue/compiler-* relies on NODE_ENV for getting + // production-specific behavior, so set it early on + if (!isNodeEnvSet) { + process.env.NODE_ENV = defaultNodeEnv; + } + const configEnv = { + mode, + command, + ssrBuild: !!config.build?.ssr, + }; + let { configFile } = config; + if (configFile !== false) { + const loadResult = await loadConfigFromFile(configEnv, configFile, config.root, config.logLevel); + if (loadResult) { + config = mergeConfig(loadResult.config, config); + configFile = loadResult.path; + configFileDependencies = loadResult.dependencies; + } + } + // user config may provide an alternative mode. But --mode has a higher priority + mode = inlineConfig.mode || config.mode || mode; + configEnv.mode = mode; + const filterPlugin = (p) => { + if (!p) { + return false; + } + else if (!p.apply) { + return true; + } + else if (typeof p.apply === 'function') { + return p.apply({ ...config, mode }, configEnv); + } + else { + return p.apply === command; + } + }; + // Some plugins that aren't intended to work in the bundling of workers (doing post-processing at build time for example). + // And Plugins may also have cached that could be corrupted by being used in these extra rollup calls. + // So we need to separate the worker plugin from the plugin that vite needs to run. + const rawWorkerUserPlugins = (await asyncFlatten(config.worker?.plugins || [])).filter(filterPlugin); + // resolve plugins + const rawUserPlugins = (await asyncFlatten(config.plugins || [])).filter(filterPlugin); + const [prePlugins, normalPlugins, postPlugins] = sortUserPlugins(rawUserPlugins); + // run config hooks + const userPlugins = [...prePlugins, ...normalPlugins, ...postPlugins]; + config = await runConfigHook(config, userPlugins, configEnv); + // If there are custom commonjsOptions, don't force optimized deps for this test + // even if the env var is set as it would interfere with the playground specs. + if (!config.build?.commonjsOptions && + process.env.VITE_TEST_WITHOUT_PLUGIN_COMMONJS) { + config = mergeConfig(config, { + optimizeDeps: { disabled: false }, + ssr: { optimizeDeps: { disabled: false } }, + }); + config.build ?? (config.build = {}); + config.build.commonjsOptions = { include: [] }; + } + // Define logger + const logger = createLogger(config.logLevel, { + allowClearScreen: config.clearScreen, + customLogger: config.customLogger, + }); + // resolve root + const resolvedRoot = normalizePath$3(config.root ? path$o.resolve(config.root) : process.cwd()); + const clientAlias = [ + { + find: /^\/?@vite\/env/, + replacement: path$o.posix.join(FS_PREFIX, normalizePath$3(ENV_ENTRY)), + }, + { + find: /^\/?@vite\/client/, + replacement: path$o.posix.join(FS_PREFIX, normalizePath$3(CLIENT_ENTRY)), + }, + ]; + // resolve alias with internal client alias + const resolvedAlias = normalizeAlias(mergeAlias(clientAlias, config.resolve?.alias || [])); + const resolveOptions = { + mainFields: config.resolve?.mainFields ?? DEFAULT_MAIN_FIELDS, + browserField: config.resolve?.browserField ?? true, + conditions: config.resolve?.conditions ?? [], + extensions: config.resolve?.extensions ?? DEFAULT_EXTENSIONS$1, + dedupe: config.resolve?.dedupe ?? [], + preserveSymlinks: config.resolve?.preserveSymlinks ?? false, + alias: resolvedAlias, + }; + // load .env files + const envDir = config.envDir + ? normalizePath$3(path$o.resolve(resolvedRoot, config.envDir)) + : resolvedRoot; + const userEnv = inlineConfig.envFile !== false && + loadEnv(mode, envDir, resolveEnvPrefix(config)); + // Note it is possible for user to have a custom mode, e.g. `staging` where + // development-like behavior is expected. This is indicated by NODE_ENV=development + // loaded from `.staging.env` and set by us as VITE_USER_NODE_ENV + const userNodeEnv = process.env.VITE_USER_NODE_ENV; + if (!isNodeEnvSet && userNodeEnv) { + if (userNodeEnv === 'development') { + process.env.NODE_ENV = 'development'; + } + else { + // NODE_ENV=production is not supported as it could break HMR in dev for frameworks like Vue + logger.warn(`NODE_ENV=${userNodeEnv} is not supported in the .env file. ` + + `Only NODE_ENV=development is supported to create a development build of your project. ` + + `If you need to set process.env.NODE_ENV, you can set it in the Vite config instead.`); + } + } + const isProduction = process.env.NODE_ENV === 'production'; + // resolve public base url + const isBuild = command === 'build'; + const relativeBaseShortcut = config.base === '' || config.base === './'; + // During dev, we ignore relative base and fallback to '/' + // For the SSR build, relative base isn't possible by means + // of import.meta.url. + const resolvedBase = relativeBaseShortcut + ? !isBuild || config.build?.ssr + ? '/' + : './' + : resolveBaseUrl(config.base, isBuild, logger) ?? '/'; + const resolvedBuildOptions = resolveBuildOptions(config.build, logger, resolvedRoot); + // resolve cache directory + const pkgDir = findNearestPackageData(resolvedRoot, packageCache)?.dir; + const cacheDir = normalizePath$3(config.cacheDir + ? path$o.resolve(resolvedRoot, config.cacheDir) + : pkgDir + ? path$o.join(pkgDir, `node_modules/.vite`) + : path$o.join(resolvedRoot, `.vite`)); + const assetsFilter = config.assetsInclude && + (!Array.isArray(config.assetsInclude) || config.assetsInclude.length) + ? createFilter(config.assetsInclude) + : () => false; + // create an internal resolver to be used in special scenarios, e.g. + // optimizer & handling css @imports + const createResolver = (options) => { + let aliasContainer; + let resolverContainer; + return async (id, importer, aliasOnly, ssr) => { + let container; + if (aliasOnly) { + container = + aliasContainer || + (aliasContainer = await createPluginContainer({ + ...resolved, + plugins: [alias$1({ entries: resolved.resolve.alias })], + })); + } + else { + container = + resolverContainer || + (resolverContainer = await createPluginContainer({ + ...resolved, + plugins: [ + alias$1({ entries: resolved.resolve.alias }), + resolvePlugin({ + ...resolved.resolve, + root: resolvedRoot, + isProduction, + isBuild: command === 'build', + ssrConfig: resolved.ssr, + asSrc: true, + preferRelative: false, + tryIndex: true, + ...options, + idOnly: true, + }), + ], + })); + } + return (await container.resolveId(id, importer, { + ssr, + scan: options?.scan, + }))?.id; + }; + }; + const { publicDir } = config; + const resolvedPublicDir = publicDir !== false && publicDir !== '' + ? path$o.resolve(resolvedRoot, typeof publicDir === 'string' ? publicDir : 'public') + : ''; + const server = resolveServerOptions(resolvedRoot, config.server, logger); + const ssr = resolveSSROptions(config.ssr, resolveOptions.preserveSymlinks, config.legacy?.buildSsrCjsExternalHeuristics); + const middlewareMode = config?.server?.middlewareMode; + const optimizeDeps = config.optimizeDeps || {}; + const BASE_URL = resolvedBase; + // resolve worker + let workerConfig = mergeConfig({}, config); + const [workerPrePlugins, workerNormalPlugins, workerPostPlugins] = sortUserPlugins(rawWorkerUserPlugins); + // run config hooks + const workerUserPlugins = [ + ...workerPrePlugins, + ...workerNormalPlugins, + ...workerPostPlugins, + ]; + workerConfig = await runConfigHook(workerConfig, workerUserPlugins, configEnv); + const resolvedWorkerOptions = { + format: workerConfig.worker?.format || 'iife', + plugins: [], + rollupOptions: workerConfig.worker?.rollupOptions || {}, + getSortedPlugins: undefined, + getSortedPluginHooks: undefined, + }; + const resolvedConfig = { + configFile: configFile ? normalizePath$3(configFile) : undefined, + configFileDependencies: configFileDependencies.map((name) => normalizePath$3(path$o.resolve(name))), + inlineConfig, + root: resolvedRoot, + base: withTrailingSlash(resolvedBase), + rawBase: resolvedBase, + resolve: resolveOptions, + publicDir: resolvedPublicDir, + cacheDir, + command, + mode, + ssr, + isWorker: false, + mainConfig: null, + isProduction, + plugins: userPlugins, + css: resolveCSSOptions(config.css), + esbuild: config.esbuild === false + ? false + : { + jsxDev: !isProduction, + ...config.esbuild, + }, + server, + build: resolvedBuildOptions, + preview: resolvePreviewOptions(config.preview, server), + envDir, + env: { + ...userEnv, + BASE_URL, + MODE: mode, + DEV: !isProduction, + PROD: isProduction, + }, + assetsInclude(file) { + return DEFAULT_ASSETS_RE.test(file) || assetsFilter(file); + }, + logger, + packageCache, + createResolver, + optimizeDeps: { + disabled: 'build', + ...optimizeDeps, + esbuildOptions: { + preserveSymlinks: resolveOptions.preserveSymlinks, + ...optimizeDeps.esbuildOptions, + }, + }, + worker: resolvedWorkerOptions, + appType: config.appType ?? (middlewareMode === 'ssr' ? 'custom' : 'spa'), + experimental: { + importGlobRestoreExtension: false, + hmrPartialAccept: false, + ...config.experimental, + }, + getSortedPlugins: undefined, + getSortedPluginHooks: undefined, + }; + const resolved = { + ...config, + ...resolvedConfig, + }; + resolved.plugins = await resolvePlugins(resolved, prePlugins, normalPlugins, postPlugins); + Object.assign(resolved, createPluginHookUtils(resolved.plugins)); + const workerResolved = { + ...workerConfig, + ...resolvedConfig, + isWorker: true, + mainConfig: resolved, + }; + resolvedConfig.worker.plugins = await resolvePlugins(workerResolved, workerPrePlugins, workerNormalPlugins, workerPostPlugins); + Object.assign(resolvedConfig.worker, createPluginHookUtils(resolvedConfig.worker.plugins)); + // call configResolved hooks + await Promise.all([ + ...resolved + .getSortedPluginHooks('configResolved') + .map((hook) => hook(resolved)), + ...resolvedConfig.worker + .getSortedPluginHooks('configResolved') + .map((hook) => hook(workerResolved)), + ]); + // validate config + if (middlewareMode === 'ssr') { + logger.warn(colors$1.yellow(`Setting server.middlewareMode to 'ssr' is deprecated, set server.middlewareMode to \`true\`${config.appType === 'custom' ? '' : ` and appType to 'custom'`} instead`)); + } + if (middlewareMode === 'html') { + logger.warn(colors$1.yellow(`Setting server.middlewareMode to 'html' is deprecated, set server.middlewareMode to \`true\` instead`)); + } + if (config.server?.force && + !isBuild && + config.optimizeDeps?.force === undefined) { + resolved.optimizeDeps.force = true; + logger.warn(colors$1.yellow(`server.force is deprecated, use optimizeDeps.force instead`)); + } + debug?.(`using resolved config: %O`, { + ...resolved, + plugins: resolved.plugins.map((p) => p.name), + worker: { + ...resolved.worker, + plugins: resolved.worker.plugins.map((p) => p.name), + }, + }); + if (config.build?.terserOptions && config.build.minify !== 'terser') { + logger.warn(colors$1.yellow(`build.terserOptions is specified but build.minify is not set to use Terser. ` + + `Note Vite now defaults to use esbuild for minification. If you still ` + + `prefer Terser, set build.minify to "terser".`)); + } + // Check if all assetFileNames have the same reference. + // If not, display a warn for user. + const outputOption = config.build?.rollupOptions?.output ?? []; + // Use isArray to narrow its type to array + if (Array.isArray(outputOption)) { + const assetFileNamesList = outputOption.map((output) => output.assetFileNames); + if (assetFileNamesList.length > 1) { + const firstAssetFileNames = assetFileNamesList[0]; + const hasDifferentReference = assetFileNamesList.some((assetFileNames) => assetFileNames !== firstAssetFileNames); + if (hasDifferentReference) { + resolved.logger.warn(colors$1.yellow(` +assetFileNames isn't equal for every build.rollupOptions.output. A single pattern across all outputs is supported by Vite. +`)); + } + } + } + // Warn about removal of experimental features + if (config.legacy?.buildSsrCjsExternalHeuristics || + config.ssr?.format === 'cjs') { + resolved.logger.warn(colors$1.yellow(` +(!) Experimental legacy.buildSsrCjsExternalHeuristics and ssr.format: 'cjs' are going to be removed in Vite 5. + Find more information and give feedback at https://github.com/vitejs/vite/discussions/13816. +`)); + } + return resolved; +} +/** + * Resolve base url. Note that some users use Vite to build for non-web targets like + * electron or expects to deploy + */ +function resolveBaseUrl(base = '/', isBuild, logger) { + if (base[0] === '.') { + logger.warn(colors$1.yellow(colors$1.bold(`(!) invalid "base" option: ${base}. The value can only be an absolute ` + + `URL, ./, or an empty string.`))); + return '/'; + } + // external URL flag + const isExternal = isExternalUrl(base); + // no leading slash warn + if (!isExternal && base[0] !== '/') { + logger.warn(colors$1.yellow(colors$1.bold(`(!) "base" option should start with a slash.`))); + } + // parse base when command is serve or base is not External URL + if (!isBuild || !isExternal) { + base = new URL(base, 'http://vitejs.dev').pathname; + // ensure leading slash + if (base[0] !== '/') { + base = '/' + base; + } + } + return base; +} +function sortUserPlugins(plugins) { + const prePlugins = []; + const postPlugins = []; + const normalPlugins = []; + if (plugins) { + plugins.flat().forEach((p) => { + if (p.enforce === 'pre') + prePlugins.push(p); + else if (p.enforce === 'post') + postPlugins.push(p); + else + normalPlugins.push(p); + }); + } + return [prePlugins, normalPlugins, postPlugins]; +} +async function loadConfigFromFile(configEnv, configFile, configRoot = process.cwd(), logLevel) { + const start = performance.now(); + const getTime = () => `${(performance.now() - start).toFixed(2)}ms`; + let resolvedPath; + if (configFile) { + // explicit config path is always resolved from cwd + resolvedPath = path$o.resolve(configFile); + } + else { + // implicit config file loaded from inline root (if present) + // otherwise from cwd + for (const filename of DEFAULT_CONFIG_FILES) { + const filePath = path$o.resolve(configRoot, filename); + if (!fs$l.existsSync(filePath)) + continue; + resolvedPath = filePath; + break; + } + } + if (!resolvedPath) { + debug?.('no config file found.'); + return null; + } + let isESM = false; + if (/\.m[jt]s$/.test(resolvedPath)) { + isESM = true; + } + else if (/\.c[jt]s$/.test(resolvedPath)) { + isESM = false; + } + else { + // check package.json for type: "module" and set `isESM` to true + try { + const pkg = lookupFile(configRoot, ['package.json']); + isESM = + !!pkg && JSON.parse(fs$l.readFileSync(pkg, 'utf-8')).type === 'module'; + } + catch (e) { } + } + try { + const bundled = await bundleConfigFile(resolvedPath, isESM); + const userConfig = await loadConfigFromBundledFile(resolvedPath, bundled.code, isESM); + debug?.(`bundled config file loaded in ${getTime()}`); + const config = await (typeof userConfig === 'function' + ? userConfig(configEnv) + : userConfig); + if (!isObject$2(config)) { + throw new Error(`config must export or return an object.`); + } + return { + path: normalizePath$3(resolvedPath), + config, + dependencies: bundled.dependencies, + }; + } + catch (e) { + createLogger(logLevel).error(colors$1.red(`failed to load config from ${resolvedPath}`), { error: e }); + throw e; + } +} +async function bundleConfigFile(fileName, isESM) { + const dirnameVarName = '__vite_injected_original_dirname'; + const filenameVarName = '__vite_injected_original_filename'; + const importMetaUrlVarName = '__vite_injected_original_import_meta_url'; + const result = await build$3({ + absWorkingDir: process.cwd(), + entryPoints: [fileName], + outfile: 'out.js', + write: false, + target: ['node14.18', 'node16'], + platform: 'node', + bundle: true, + format: isESM ? 'esm' : 'cjs', + mainFields: ['main'], + sourcemap: 'inline', + metafile: true, + define: { + __dirname: dirnameVarName, + __filename: filenameVarName, + 'import.meta.url': importMetaUrlVarName, + }, + plugins: [ + { + name: 'externalize-deps', + setup(build) { + const packageCache = new Map(); + const resolveByViteResolver = (id, importer, isRequire) => { + return tryNodeResolve(id, importer, { + root: path$o.dirname(fileName), + isBuild: true, + isProduction: true, + preferRelative: false, + tryIndex: true, + mainFields: [], + browserField: false, + conditions: [], + overrideConditions: ['node'], + dedupe: [], + extensions: DEFAULT_EXTENSIONS$1, + preserveSymlinks: false, + packageCache, + isRequire, + }, false)?.id; + }; + const isESMFile = (id) => { + if (id.endsWith('.mjs')) + return true; + if (id.endsWith('.cjs')) + return false; + const nearestPackageJson = findNearestPackageData(path$o.dirname(id), packageCache); + return (!!nearestPackageJson && nearestPackageJson.data.type === 'module'); + }; + // externalize bare imports + build.onResolve({ filter: /^[^.].*/ }, async ({ path: id, importer, kind }) => { + if (kind === 'entry-point' || + path$o.isAbsolute(id) || + isNodeBuiltin(id)) { + return; + } + // With the `isNodeBuiltin` check above, this check captures if the builtin is a + // non-node built-in, which esbuild doesn't know how to handle. In that case, we + // externalize it so the non-node runtime handles it instead. + if (isBuiltin(id)) { + return { external: true }; + } + const isImport = isESM || kind === 'dynamic-import'; + let idFsPath; + try { + idFsPath = resolveByViteResolver(id, importer, !isImport); + } + catch (e) { + if (!isImport) { + let canResolveWithImport = false; + try { + canResolveWithImport = !!resolveByViteResolver(id, importer, false); + } + catch { } + if (canResolveWithImport) { + throw new Error(`Failed to resolve ${JSON.stringify(id)}. This package is ESM only but it was tried to load by \`require\`. See http://vitejs.dev/guide/troubleshooting.html#this-package-is-esm-only for more details.`); + } + } + throw e; + } + if (idFsPath && isImport) { + idFsPath = pathToFileURL(idFsPath).href; + } + if (idFsPath && !isImport && isESMFile(idFsPath)) { + throw new Error(`${JSON.stringify(id)} resolved to an ESM file. ESM file cannot be loaded by \`require\`. See http://vitejs.dev/guide/troubleshooting.html#this-package-is-esm-only for more details.`); + } + return { + path: idFsPath, + external: true, + }; + }); + }, + }, + { + name: 'inject-file-scope-variables', + setup(build) { + build.onLoad({ filter: /\.[cm]?[jt]s$/ }, async (args) => { + const contents = await fsp.readFile(args.path, 'utf8'); + const injectValues = `const ${dirnameVarName} = ${JSON.stringify(path$o.dirname(args.path))};` + + `const ${filenameVarName} = ${JSON.stringify(args.path)};` + + `const ${importMetaUrlVarName} = ${JSON.stringify(pathToFileURL(args.path).href)};`; + return { + loader: args.path.endsWith('ts') ? 'ts' : 'js', + contents: injectValues + contents, + }; + }); + }, + }, + ], + }); + const { text } = result.outputFiles[0]; + return { + code: text, + dependencies: result.metafile ? Object.keys(result.metafile.inputs) : [], + }; +} +const _require = createRequire$1(import.meta.url); +async function loadConfigFromBundledFile(fileName, bundledCode, isESM) { + // for esm, before we can register loaders without requiring users to run node + // with --experimental-loader themselves, we have to do a hack here: + // write it to disk, load it with native Node ESM, then delete the file. + if (isESM) { + const fileBase = `${fileName}.timestamp-${Date.now()}-${Math.random() + .toString(16) + .slice(2)}`; + const fileNameTmp = `${fileBase}.mjs`; + const fileUrl = `${pathToFileURL(fileBase)}.mjs`; + await fsp.writeFile(fileNameTmp, bundledCode); + try { + return (await dynamicImport(fileUrl)).default; + } + finally { + fs$l.unlink(fileNameTmp, () => { }); // Ignore errors + } + } + // for cjs, we can register a custom loader via `_require.extensions` + else { + const extension = path$o.extname(fileName); + // We don't use fsp.realpath() here because it has the same behaviour as + // fs.realpath.native. On some Windows systems, it returns uppercase volume + // letters (e.g. "C:\") while the Node.js loader uses lowercase volume letters. + // See https://github.com/vitejs/vite/issues/12923 + const realFileName = await promisifiedRealpath(fileName); + const loaderExt = extension in _require.extensions ? extension : '.js'; + const defaultLoader = _require.extensions[loaderExt]; + _require.extensions[loaderExt] = (module, filename) => { + if (filename === realFileName) { + module._compile(bundledCode, filename); + } + else { + defaultLoader(module, filename); + } + }; + // clear cache in case of server restart + delete _require.cache[_require.resolve(fileName)]; + const raw = _require(fileName); + _require.extensions[loaderExt] = defaultLoader; + return raw.__esModule ? raw.default : raw; + } +} +async function runConfigHook(config, plugins, configEnv) { + let conf = config; + for (const p of getSortedPluginsByHook('config', plugins)) { + const hook = p.config; + const handler = hook && 'handler' in hook ? hook.handler : hook; + if (handler) { + const res = await handler(conf, configEnv); + if (res) { + conf = mergeConfig(conf, res); + } + } + } + return conf; +} +function getDepOptimizationConfig(config, ssr) { + return ssr ? config.ssr.optimizeDeps : config.optimizeDeps; +} +function isDepsOptimizerEnabled(config, ssr) { + const { command } = config; + const { disabled } = getDepOptimizationConfig(config, ssr); + return !(disabled === true || + (command === 'build' && disabled === 'build') || + (command === 'serve' && disabled === 'dev')); +} + +export { loadEnv as A, resolveEnvPrefix as B, colors$1 as C, bindShortcuts as D, getDefaultExportFromCjs as E, commonjsGlobal as F, index$1 as G, build$1 as H, index as I, preview$1 as J, preprocessCSS as a, build as b, createServer as c, resolvePackageData as d, buildErrorMessage as e, formatPostcssSourceMap as f, defineConfig as g, resolveConfig as h, isInNodeModules as i, resolveBaseUrl as j, getDepOptimizationConfig as k, loadConfigFromFile as l, isDepsOptimizerEnabled as m, normalizePath$3 as n, optimizeDeps as o, preview as p, mergeConfig as q, resolvePackageEntry as r, sortUserPlugins as s, transformWithEsbuild as t, mergeAlias as u, createFilter as v, send$2 as w, createLogger as x, searchForWorkspaceRoot as y, isFileServingAllowed as z }; diff --git a/node_modules/vite/dist/node/chunks/dep-c423598f.js b/node_modules/vite/dist/node/chunks/dep-c423598f.js new file mode 100644 index 0000000..b471e60 --- /dev/null +++ b/node_modules/vite/dist/node/chunks/dep-c423598f.js @@ -0,0 +1,561 @@ +import { fileURLToPath as __cjs_fileURLToPath } from 'node:url'; +import { dirname as __cjs_dirname } from 'node:path'; +import { createRequire as __cjs_createRequire } from 'node:module'; + +const __filename = __cjs_fileURLToPath(import.meta.url); +const __dirname = __cjs_dirname(__filename); +const require = __cjs_createRequire(import.meta.url); +const __require = require; +var openParentheses = "(".charCodeAt(0); +var closeParentheses = ")".charCodeAt(0); +var singleQuote = "'".charCodeAt(0); +var doubleQuote = '"'.charCodeAt(0); +var backslash = "\\".charCodeAt(0); +var slash = "/".charCodeAt(0); +var comma = ",".charCodeAt(0); +var colon = ":".charCodeAt(0); +var star = "*".charCodeAt(0); +var uLower = "u".charCodeAt(0); +var uUpper = "U".charCodeAt(0); +var plus = "+".charCodeAt(0); +var isUnicodeRange = /^[a-f0-9?-]+$/i; + +var parse$1 = function(input) { + var tokens = []; + var value = input; + + var next, + quote, + prev, + token, + escape, + escapePos, + whitespacePos, + parenthesesOpenPos; + var pos = 0; + var code = value.charCodeAt(pos); + var max = value.length; + var stack = [{ nodes: tokens }]; + var balanced = 0; + var parent; + + var name = ""; + var before = ""; + var after = ""; + + while (pos < max) { + // Whitespaces + if (code <= 32) { + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + token = value.slice(pos, next); + + prev = tokens[tokens.length - 1]; + if (code === closeParentheses && balanced) { + after = token; + } else if (prev && prev.type === "div") { + prev.after = token; + prev.sourceEndIndex += token.length; + } else if ( + code === comma || + code === colon || + (code === slash && + value.charCodeAt(next + 1) !== star && + (!parent || + (parent && parent.type === "function" && parent.value !== "calc"))) + ) { + before = token; + } else { + tokens.push({ + type: "space", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } + + pos = next; + + // Quotes + } else if (code === singleQuote || code === doubleQuote) { + next = pos; + quote = code === singleQuote ? "'" : '"'; + token = { + type: "string", + sourceIndex: pos, + quote: quote + }; + do { + escape = false; + next = value.indexOf(quote, next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += quote; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + token.value = value.slice(pos + 1, next); + token.sourceEndIndex = token.unclosed ? next : next + 1; + tokens.push(token); + pos = next + 1; + code = value.charCodeAt(pos); + + // Comments + } else if (code === slash && value.charCodeAt(pos + 1) === star) { + next = value.indexOf("*/", pos); + + token = { + type: "comment", + sourceIndex: pos, + sourceEndIndex: next + 2 + }; + + if (next === -1) { + token.unclosed = true; + next = value.length; + token.sourceEndIndex = next; + } + + token.value = value.slice(pos + 2, next); + tokens.push(token); + + pos = next + 2; + code = value.charCodeAt(pos); + + // Operation within calc + } else if ( + (code === slash || code === star) && + parent && + parent.type === "function" && + parent.value === "calc" + ) { + token = value[pos]; + tokens.push({ + type: "word", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token + }); + pos += 1; + code = value.charCodeAt(pos); + + // Dividers + } else if (code === slash || code === comma || code === colon) { + token = value[pos]; + + tokens.push({ + type: "div", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token, + before: before, + after: "" + }); + before = ""; + + pos += 1; + code = value.charCodeAt(pos); + + // Open parentheses + } else if (openParentheses === code) { + // Whitespaces after open parentheses + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + parenthesesOpenPos = pos; + token = { + type: "function", + sourceIndex: pos - name.length, + value: name, + before: value.slice(parenthesesOpenPos + 1, next) + }; + pos = next; + + if (name === "url" && code !== singleQuote && code !== doubleQuote) { + next -= 1; + do { + escape = false; + next = value.indexOf(")", next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += ")"; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + // Whitespaces before closed + whitespacePos = next; + do { + whitespacePos -= 1; + code = value.charCodeAt(whitespacePos); + } while (code <= 32); + if (parenthesesOpenPos < whitespacePos) { + if (pos !== whitespacePos + 1) { + token.nodes = [ + { + type: "word", + sourceIndex: pos, + sourceEndIndex: whitespacePos + 1, + value: value.slice(pos, whitespacePos + 1) + } + ]; + } else { + token.nodes = []; + } + if (token.unclosed && whitespacePos + 1 !== next) { + token.after = ""; + token.nodes.push({ + type: "space", + sourceIndex: whitespacePos + 1, + sourceEndIndex: next, + value: value.slice(whitespacePos + 1, next) + }); + } else { + token.after = value.slice(whitespacePos + 1, next); + token.sourceEndIndex = next; + } + } else { + token.after = ""; + token.nodes = []; + } + pos = next + 1; + token.sourceEndIndex = token.unclosed ? next : pos; + code = value.charCodeAt(pos); + tokens.push(token); + } else { + balanced += 1; + token.after = ""; + token.sourceEndIndex = pos + 1; + tokens.push(token); + stack.push(token); + tokens = token.nodes = []; + parent = token; + } + name = ""; + + // Close parentheses + } else if (closeParentheses === code && balanced) { + pos += 1; + code = value.charCodeAt(pos); + + parent.after = after; + parent.sourceEndIndex += after.length; + after = ""; + balanced -= 1; + stack[stack.length - 1].sourceEndIndex = pos; + stack.pop(); + parent = stack[balanced]; + tokens = parent.nodes; + + // Words + } else { + next = pos; + do { + if (code === backslash) { + next += 1; + } + next += 1; + code = value.charCodeAt(next); + } while ( + next < max && + !( + code <= 32 || + code === singleQuote || + code === doubleQuote || + code === comma || + code === colon || + code === slash || + code === openParentheses || + (code === star && + parent && + parent.type === "function" && + parent.value === "calc") || + (code === slash && + parent.type === "function" && + parent.value === "calc") || + (code === closeParentheses && balanced) + ) + ); + token = value.slice(pos, next); + + if (openParentheses === code) { + name = token; + } else if ( + (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) && + plus === token.charCodeAt(1) && + isUnicodeRange.test(token.slice(2)) + ) { + tokens.push({ + type: "unicode-range", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } else { + tokens.push({ + type: "word", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } + + pos = next; + } + } + + for (pos = stack.length - 1; pos; pos -= 1) { + stack[pos].unclosed = true; + stack[pos].sourceEndIndex = value.length; + } + + return stack[0].nodes; +}; + +var walk$1 = function walk(nodes, cb, bubble) { + var i, max, node, result; + + for (i = 0, max = nodes.length; i < max; i += 1) { + node = nodes[i]; + if (!bubble) { + result = cb(node, i, nodes); + } + + if ( + result !== false && + node.type === "function" && + Array.isArray(node.nodes) + ) { + walk(node.nodes, cb, bubble); + } + + if (bubble) { + cb(node, i, nodes); + } + } +}; + +function stringifyNode(node, custom) { + var type = node.type; + var value = node.value; + var buf; + var customResult; + + if (custom && (customResult = custom(node)) !== undefined) { + return customResult; + } else if (type === "word" || type === "space") { + return value; + } else if (type === "string") { + buf = node.quote || ""; + return buf + value + (node.unclosed ? "" : buf); + } else if (type === "comment") { + return "/*" + value + (node.unclosed ? "" : "*/"); + } else if (type === "div") { + return (node.before || "") + value + (node.after || ""); + } else if (Array.isArray(node.nodes)) { + buf = stringify$1(node.nodes, custom); + if (type !== "function") { + return buf; + } + return ( + value + + "(" + + (node.before || "") + + buf + + (node.after || "") + + (node.unclosed ? "" : ")") + ); + } + return value; +} + +function stringify$1(nodes, custom) { + var result, i; + + if (Array.isArray(nodes)) { + result = ""; + for (i = nodes.length - 1; ~i; i -= 1) { + result = stringifyNode(nodes[i], custom) + result; + } + return result; + } + return stringifyNode(nodes, custom); +} + +var stringify_1 = stringify$1; + +var unit; +var hasRequiredUnit; + +function requireUnit () { + if (hasRequiredUnit) return unit; + hasRequiredUnit = 1; + var minus = "-".charCodeAt(0); + var plus = "+".charCodeAt(0); + var dot = ".".charCodeAt(0); + var exp = "e".charCodeAt(0); + var EXP = "E".charCodeAt(0); + + // Check if three code points would start a number + // https://www.w3.org/TR/css-syntax-3/#starts-with-a-number + function likeNumber(value) { + var code = value.charCodeAt(0); + var nextCode; + + if (code === plus || code === minus) { + nextCode = value.charCodeAt(1); + + if (nextCode >= 48 && nextCode <= 57) { + return true; + } + + var nextNextCode = value.charCodeAt(2); + + if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) { + return true; + } + + return false; + } + + if (code === dot) { + nextCode = value.charCodeAt(1); + + if (nextCode >= 48 && nextCode <= 57) { + return true; + } + + return false; + } + + if (code >= 48 && code <= 57) { + return true; + } + + return false; + } + + // Consume a number + // https://www.w3.org/TR/css-syntax-3/#consume-number + unit = function(value) { + var pos = 0; + var length = value.length; + var code; + var nextCode; + var nextNextCode; + + if (length === 0 || !likeNumber(value)) { + return false; + } + + code = value.charCodeAt(pos); + + if (code === plus || code === minus) { + pos++; + } + + while (pos < length) { + code = value.charCodeAt(pos); + + if (code < 48 || code > 57) { + break; + } + + pos += 1; + } + + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + + if (code === dot && nextCode >= 48 && nextCode <= 57) { + pos += 2; + + while (pos < length) { + code = value.charCodeAt(pos); + + if (code < 48 || code > 57) { + break; + } + + pos += 1; + } + } + + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + nextNextCode = value.charCodeAt(pos + 2); + + if ( + (code === exp || code === EXP) && + ((nextCode >= 48 && nextCode <= 57) || + ((nextCode === plus || nextCode === minus) && + nextNextCode >= 48 && + nextNextCode <= 57)) + ) { + pos += nextCode === plus || nextCode === minus ? 3 : 2; + + while (pos < length) { + code = value.charCodeAt(pos); + + if (code < 48 || code > 57) { + break; + } + + pos += 1; + } + } + + return { + number: value.slice(0, pos), + unit: value.slice(pos) + }; + }; + return unit; +} + +var parse = parse$1; +var walk = walk$1; +var stringify = stringify_1; + +function ValueParser(value) { + if (this instanceof ValueParser) { + this.nodes = parse(value); + return this; + } + return new ValueParser(value); +} + +ValueParser.prototype.toString = function() { + return Array.isArray(this.nodes) ? stringify(this.nodes) : ""; +}; + +ValueParser.prototype.walk = function(cb, bubble) { + walk(this.nodes, cb, bubble); + return this; +}; + +ValueParser.unit = requireUnit(); + +ValueParser.walk = walk; + +ValueParser.stringify = stringify; + +var lib = ValueParser; + +export { lib as l }; diff --git a/node_modules/vite/dist/node/chunks/dep-e4a495ce.js b/node_modules/vite/dist/node/chunks/dep-e4a495ce.js new file mode 100644 index 0000000..68cda7a --- /dev/null +++ b/node_modules/vite/dist/node/chunks/dep-e4a495ce.js @@ -0,0 +1,914 @@ +import { E as getDefaultExportFromCjs } from './dep-bb8a8339.js'; +import require$$0 from 'path'; +import require$$0__default from 'fs'; +import { l as lib } from './dep-c423598f.js'; + +import { fileURLToPath as __cjs_fileURLToPath } from 'node:url'; +import { dirname as __cjs_dirname } from 'node:path'; +import { createRequire as __cjs_createRequire } from 'node:module'; + +const __filename = __cjs_fileURLToPath(import.meta.url); +const __dirname = __cjs_dirname(__filename); +const require = __cjs_createRequire(import.meta.url); +const __require = require; +function _mergeNamespaces(n, m) { + for (var i = 0; i < m.length; i++) { + var e = m[i]; + if (typeof e !== 'string' && !Array.isArray(e)) { for (var k in e) { + if (k !== 'default' && !(k in n)) { + n[k] = e[k]; + } + } } + } + return n; +} + +const startsWithKeywordRegexp = /^(all|not|only|print|screen)/i; + +var joinMedia$1 = function (parentMedia, childMedia) { + if (!parentMedia.length && childMedia.length) return childMedia + if (parentMedia.length && !childMedia.length) return parentMedia + if (!parentMedia.length && !childMedia.length) return [] + + const media = []; + + parentMedia.forEach(parentItem => { + const parentItemStartsWithKeyword = startsWithKeywordRegexp.test(parentItem); + + childMedia.forEach(childItem => { + const childItemStartsWithKeyword = startsWithKeywordRegexp.test(childItem); + if (parentItem !== childItem) { + if (childItemStartsWithKeyword && !parentItemStartsWithKeyword) { + media.push(`${childItem} and ${parentItem}`); + } else { + media.push(`${parentItem} and ${childItem}`); + } + } + }); + }); + + return media +}; + +var joinLayer$1 = function (parentLayer, childLayer) { + if (!parentLayer.length && childLayer.length) return childLayer + if (parentLayer.length && !childLayer.length) return parentLayer + if (!parentLayer.length && !childLayer.length) return [] + + return parentLayer.concat(childLayer) +}; + +var readCache$1 = {exports: {}}; + +var pify$2 = {exports: {}}; + +var processFn = function (fn, P, opts) { + return function () { + var that = this; + var args = new Array(arguments.length); + + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + + return new P(function (resolve, reject) { + args.push(function (err, result) { + if (err) { + reject(err); + } else if (opts.multiArgs) { + var results = new Array(arguments.length - 1); + + for (var i = 1; i < arguments.length; i++) { + results[i - 1] = arguments[i]; + } + + resolve(results); + } else { + resolve(result); + } + }); + + fn.apply(that, args); + }); + }; +}; + +var pify$1 = pify$2.exports = function (obj, P, opts) { + if (typeof P !== 'function') { + opts = P; + P = Promise; + } + + opts = opts || {}; + opts.exclude = opts.exclude || [/.+Sync$/]; + + var filter = function (key) { + var match = function (pattern) { + return typeof pattern === 'string' ? key === pattern : pattern.test(key); + }; + + return opts.include ? opts.include.some(match) : !opts.exclude.some(match); + }; + + var ret = typeof obj === 'function' ? function () { + if (opts.excludeMain) { + return obj.apply(this, arguments); + } + + return processFn(obj, P, opts).apply(this, arguments); + } : {}; + + return Object.keys(obj).reduce(function (ret, key) { + var x = obj[key]; + + ret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x; + + return ret; + }, ret); +}; + +pify$1.all = pify$1; + +var pifyExports = pify$2.exports; + +var fs = require$$0__default; +var path$2 = require$$0; +var pify = pifyExports; + +var stat = pify(fs.stat); +var readFile = pify(fs.readFile); +var resolve = path$2.resolve; + +var cache = Object.create(null); + +function convert(content, encoding) { + if (Buffer.isEncoding(encoding)) { + return content.toString(encoding); + } + return content; +} + +readCache$1.exports = function (path, encoding) { + path = resolve(path); + + return stat(path).then(function (stats) { + var item = cache[path]; + + if (item && item.mtime.getTime() === stats.mtime.getTime()) { + return convert(item.content, encoding); + } + + return readFile(path).then(function (data) { + cache[path] = { + mtime: stats.mtime, + content: data + }; + + return convert(data, encoding); + }); + }).catch(function (err) { + cache[path] = null; + return Promise.reject(err); + }); +}; + +readCache$1.exports.sync = function (path, encoding) { + path = resolve(path); + + try { + var stats = fs.statSync(path); + var item = cache[path]; + + if (item && item.mtime.getTime() === stats.mtime.getTime()) { + return convert(item.content, encoding); + } + + var data = fs.readFileSync(path); + + cache[path] = { + mtime: stats.mtime, + content: data + }; + + return convert(data, encoding); + } catch (err) { + cache[path] = null; + throw err; + } + +}; + +readCache$1.exports.get = function (path, encoding) { + path = resolve(path); + if (cache[path]) { + return convert(cache[path].content, encoding); + } + return null; +}; + +readCache$1.exports.clear = function () { + cache = Object.create(null); +}; + +var readCacheExports = readCache$1.exports; + +const dataURLRegexp = /^data:text\/css;base64,/i; + +function isValid(url) { + return dataURLRegexp.test(url) +} + +function contents(url) { + // "data:text/css;base64,".length === 21 + return Buffer.from(url.slice(21), "base64").toString() +} + +var dataUrl = { + isValid, + contents, +}; + +const readCache = readCacheExports; +const dataURL$1 = dataUrl; + +var loadContent$1 = filename => { + if (dataURL$1.isValid(filename)) { + return dataURL$1.contents(filename) + } + + return readCache(filename, "utf-8") +}; + +// builtin tooling +const path$1 = require$$0; + +// placeholder tooling +let sugarss; + +var processContent$1 = function processContent( + result, + content, + filename, + options, + postcss +) { + const { plugins } = options; + const ext = path$1.extname(filename); + + const parserList = []; + + // SugarSS support: + if (ext === ".sss") { + if (!sugarss) { + try { + sugarss = __require('sugarss'); + } catch {} // Ignore + } + if (sugarss) + return runPostcss(postcss, content, filename, plugins, [sugarss]) + } + + // Syntax support: + if (result.opts.syntax?.parse) { + parserList.push(result.opts.syntax.parse); + } + + // Parser support: + if (result.opts.parser) parserList.push(result.opts.parser); + // Try the default as a last resort: + parserList.push(null); + + return runPostcss(postcss, content, filename, plugins, parserList) +}; + +function runPostcss(postcss, content, filename, plugins, parsers, index) { + if (!index) index = 0; + return postcss(plugins) + .process(content, { + from: filename, + parser: parsers[index], + }) + .catch(err => { + // If there's an error, try the next parser + index++; + // If there are no parsers left, throw it + if (index === parsers.length) throw err + return runPostcss(postcss, content, filename, plugins, parsers, index) + }) +} + +// external tooling +const valueParser = lib; + +// extended tooling +const { stringify } = valueParser; + +function split(params, start) { + const list = []; + const last = params.reduce((item, node, index) => { + if (index < start) return "" + if (node.type === "div" && node.value === ",") { + list.push(item); + return "" + } + return item + stringify(node) + }, ""); + list.push(last); + return list +} + +var parseStatements$1 = function (result, styles) { + const statements = []; + let nodes = []; + + styles.each(node => { + let stmt; + if (node.type === "atrule") { + if (node.name === "import") stmt = parseImport(result, node); + else if (node.name === "media") stmt = parseMedia(result, node); + else if (node.name === "charset") stmt = parseCharset(result, node); + } + + if (stmt) { + if (nodes.length) { + statements.push({ + type: "nodes", + nodes, + media: [], + layer: [], + }); + nodes = []; + } + statements.push(stmt); + } else nodes.push(node); + }); + + if (nodes.length) { + statements.push({ + type: "nodes", + nodes, + media: [], + layer: [], + }); + } + + return statements +}; + +function parseMedia(result, atRule) { + const params = valueParser(atRule.params).nodes; + return { + type: "media", + node: atRule, + media: split(params, 0), + layer: [], + } +} + +function parseCharset(result, atRule) { + if (atRule.prev()) { + return result.warn("@charset must precede all other statements", { + node: atRule, + }) + } + return { + type: "charset", + node: atRule, + media: [], + layer: [], + } +} + +function parseImport(result, atRule) { + let prev = atRule.prev(); + if (prev) { + do { + if ( + prev.type !== "comment" && + (prev.type !== "atrule" || + (prev.name !== "import" && + prev.name !== "charset" && + !(prev.name === "layer" && !prev.nodes))) + ) { + return result.warn( + "@import must precede all other statements (besides @charset or empty @layer)", + { node: atRule } + ) + } + prev = prev.prev(); + } while (prev) + } + + if (atRule.nodes) { + return result.warn( + "It looks like you didn't end your @import statement correctly. " + + "Child nodes are attached to it.", + { node: atRule } + ) + } + + const params = valueParser(atRule.params).nodes; + const stmt = { + type: "import", + node: atRule, + media: [], + layer: [], + }; + + // prettier-ignore + if ( + !params.length || + ( + params[0].type !== "string" || + !params[0].value + ) && + ( + params[0].type !== "function" || + params[0].value !== "url" || + !params[0].nodes.length || + !params[0].nodes[0].value + ) + ) { + return result.warn(`Unable to find uri in '${ atRule.toString() }'`, { + node: atRule, + }) + } + + if (params[0].type === "string") stmt.uri = params[0].value; + else stmt.uri = params[0].nodes[0].value; + stmt.fullUri = stringify(params[0]); + + let remainder = params; + if (remainder.length > 2) { + if ( + (remainder[2].type === "word" || remainder[2].type === "function") && + remainder[2].value === "layer" + ) { + if (remainder[1].type !== "space") { + return result.warn("Invalid import layer statement", { node: atRule }) + } + + if (remainder[2].nodes) { + stmt.layer = [stringify(remainder[2].nodes)]; + } else { + stmt.layer = [""]; + } + remainder = remainder.slice(2); + } + } + + if (remainder.length > 2) { + if (remainder[1].type !== "space") { + return result.warn("Invalid import media statement", { node: atRule }) + } + + stmt.media = split(remainder, 2); + } + + return stmt +} + +var assignLayerNames$1 = function (layer, node, state, options) { + layer.forEach((layerPart, i) => { + if (layerPart.trim() === "") { + if (options.nameLayer) { + layer[i] = options + .nameLayer(state.anonymousLayerCounter++, state.rootFilename) + .toString(); + } else { + throw node.error( + `When using anonymous layers in @import you must also set the "nameLayer" plugin option` + ) + } + } + }); +}; + +// builtin tooling +const path = require$$0; + +// internal tooling +const joinMedia = joinMedia$1; +const joinLayer = joinLayer$1; +const resolveId = (id) => id; +const loadContent = loadContent$1; +const processContent = processContent$1; +const parseStatements = parseStatements$1; +const assignLayerNames = assignLayerNames$1; +const dataURL = dataUrl; + +function AtImport(options) { + options = { + root: process.cwd(), + path: [], + skipDuplicates: true, + resolve: resolveId, + load: loadContent, + plugins: [], + addModulesDirectories: [], + nameLayer: null, + ...options, + }; + + options.root = path.resolve(options.root); + + // convert string to an array of a single element + if (typeof options.path === "string") options.path = [options.path]; + + if (!Array.isArray(options.path)) options.path = []; + + options.path = options.path.map(p => path.resolve(options.root, p)); + + return { + postcssPlugin: "postcss-import", + Once(styles, { result, atRule, postcss }) { + const state = { + importedFiles: {}, + hashFiles: {}, + rootFilename: null, + anonymousLayerCounter: 0, + }; + + if (styles.source?.input?.file) { + state.rootFilename = styles.source.input.file; + state.importedFiles[styles.source.input.file] = {}; + } + + if (options.plugins && !Array.isArray(options.plugins)) { + throw new Error("plugins option must be an array") + } + + if (options.nameLayer && typeof options.nameLayer !== "function") { + throw new Error("nameLayer option must be a function") + } + + return parseStyles(result, styles, options, state, [], []).then( + bundle => { + applyRaws(bundle); + applyMedia(bundle); + applyStyles(bundle, styles); + } + ) + + function applyRaws(bundle) { + bundle.forEach((stmt, index) => { + if (index === 0) return + + if (stmt.parent) { + const { before } = stmt.parent.node.raws; + if (stmt.type === "nodes") stmt.nodes[0].raws.before = before; + else stmt.node.raws.before = before; + } else if (stmt.type === "nodes") { + stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || "\n"; + } + }); + } + + function applyMedia(bundle) { + bundle.forEach(stmt => { + if ( + (!stmt.media.length && !stmt.layer.length) || + stmt.type === "charset" + ) { + return + } + + if (stmt.layer.length > 1) { + assignLayerNames(stmt.layer, stmt.node, state, options); + } + + if (stmt.type === "import") { + const parts = [stmt.fullUri]; + + const media = stmt.media.join(", "); + + if (stmt.layer.length) { + const layerName = stmt.layer.join("."); + + let layerParams = "layer"; + if (layerName) { + layerParams = `layer(${layerName})`; + } + + parts.push(layerParams); + } + + if (media) { + parts.push(media); + } + + stmt.node.params = parts.join(" "); + } else if (stmt.type === "media") { + if (stmt.layer.length) { + const layerNode = atRule({ + name: "layer", + params: stmt.layer.join("."), + source: stmt.node.source, + }); + + if (stmt.parentMedia?.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.parentMedia.join(", "), + source: stmt.node.source, + }); + + mediaNode.append(layerNode); + layerNode.append(stmt.node); + stmt.node = mediaNode; + } else { + layerNode.append(stmt.node); + stmt.node = layerNode; + } + } else { + stmt.node.params = stmt.media.join(", "); + } + } else { + const { nodes } = stmt; + const { parent } = nodes[0]; + + let outerAtRule; + let innerAtRule; + if (stmt.media.length && stmt.layer.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.media.join(", "), + source: parent.source, + }); + + const layerNode = atRule({ + name: "layer", + params: stmt.layer.join("."), + source: parent.source, + }); + + mediaNode.append(layerNode); + innerAtRule = layerNode; + outerAtRule = mediaNode; + } else if (stmt.media.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.media.join(", "), + source: parent.source, + }); + + innerAtRule = mediaNode; + outerAtRule = mediaNode; + } else if (stmt.layer.length) { + const layerNode = atRule({ + name: "layer", + params: stmt.layer.join("."), + source: parent.source, + }); + + innerAtRule = layerNode; + outerAtRule = layerNode; + } + + parent.insertBefore(nodes[0], outerAtRule); + + // remove nodes + nodes.forEach(node => { + node.parent = undefined; + }); + + // better output + nodes[0].raws.before = nodes[0].raws.before || "\n"; + + // wrap new rules with media query and/or layer at rule + innerAtRule.append(nodes); + + stmt.type = "media"; + stmt.node = outerAtRule; + delete stmt.nodes; + } + }); + } + + function applyStyles(bundle, styles) { + styles.nodes = []; + + // Strip additional statements. + bundle.forEach(stmt => { + if (["charset", "import", "media"].includes(stmt.type)) { + stmt.node.parent = undefined; + styles.append(stmt.node); + } else if (stmt.type === "nodes") { + stmt.nodes.forEach(node => { + node.parent = undefined; + styles.append(node); + }); + } + }); + } + + function parseStyles(result, styles, options, state, media, layer) { + const statements = parseStatements(result, styles); + + return Promise.resolve(statements) + .then(stmts => { + // process each statement in series + return stmts.reduce((promise, stmt) => { + return promise.then(() => { + stmt.media = joinMedia(media, stmt.media || []); + stmt.parentMedia = media; + stmt.layer = joinLayer(layer, stmt.layer || []); + + // skip protocol base uri (protocol://url) or protocol-relative + if ( + stmt.type !== "import" || + /^(?:[a-z]+:)?\/\//i.test(stmt.uri) + ) { + return + } + + if (options.filter && !options.filter(stmt.uri)) { + // rejected by filter + return + } + + return resolveImportId(result, stmt, options, state) + }) + }, Promise.resolve()) + }) + .then(() => { + let charset; + const imports = []; + const bundle = []; + + function handleCharset(stmt) { + if (!charset) charset = stmt; + // charsets aren't case-sensitive, so convert to lower case to compare + else if ( + stmt.node.params.toLowerCase() !== + charset.node.params.toLowerCase() + ) { + throw new Error( + `Incompatable @charset statements: + ${stmt.node.params} specified in ${stmt.node.source.input.file} + ${charset.node.params} specified in ${charset.node.source.input.file}` + ) + } + } + + // squash statements and their children + statements.forEach(stmt => { + if (stmt.type === "charset") handleCharset(stmt); + else if (stmt.type === "import") { + if (stmt.children) { + stmt.children.forEach((child, index) => { + if (child.type === "import") imports.push(child); + else if (child.type === "charset") handleCharset(child); + else bundle.push(child); + // For better output + if (index === 0) child.parent = stmt; + }); + } else imports.push(stmt); + } else if (stmt.type === "media" || stmt.type === "nodes") { + bundle.push(stmt); + } + }); + + return charset + ? [charset, ...imports.concat(bundle)] + : imports.concat(bundle) + }) + } + + function resolveImportId(result, stmt, options, state) { + if (dataURL.isValid(stmt.uri)) { + return loadImportContent(result, stmt, stmt.uri, options, state).then( + result => { + stmt.children = result; + } + ) + } + + const atRule = stmt.node; + let sourceFile; + if (atRule.source?.input?.file) { + sourceFile = atRule.source.input.file; + } + const base = sourceFile + ? path.dirname(atRule.source.input.file) + : options.root; + + return Promise.resolve(options.resolve(stmt.uri, base, options)) + .then(paths => { + if (!Array.isArray(paths)) paths = [paths]; + // Ensure that each path is absolute: + return Promise.all( + paths.map(file => { + return !path.isAbsolute(file) + ? resolveId(file) + : file + }) + ) + }) + .then(resolved => { + // Add dependency messages: + resolved.forEach(file => { + result.messages.push({ + type: "dependency", + plugin: "postcss-import", + file, + parent: sourceFile, + }); + }); + + return Promise.all( + resolved.map(file => { + return loadImportContent(result, stmt, file, options, state) + }) + ) + }) + .then(result => { + // Merge loaded statements + stmt.children = result.reduce((result, statements) => { + return statements ? result.concat(statements) : result + }, []); + }) + } + + function loadImportContent(result, stmt, filename, options, state) { + const atRule = stmt.node; + const { media, layer } = stmt; + + assignLayerNames(layer, atRule, state, options); + + if (options.skipDuplicates) { + // skip files already imported at the same scope + if (state.importedFiles[filename]?.[media]?.[layer]) { + return + } + + // save imported files to skip them next time + if (!state.importedFiles[filename]) { + state.importedFiles[filename] = {}; + } + if (!state.importedFiles[filename][media]) { + state.importedFiles[filename][media] = {}; + } + state.importedFiles[filename][media][layer] = true; + } + + return Promise.resolve(options.load(filename, options)).then( + content => { + if (content.trim() === "") { + result.warn(`${filename} is empty`, { node: atRule }); + return + } + + // skip previous imported files not containing @import rules + if (state.hashFiles[content]?.[media]?.[layer]) { + return + } + + return processContent( + result, + content, + filename, + options, + postcss + ).then(importedResult => { + const styles = importedResult.root; + result.messages = result.messages.concat(importedResult.messages); + + if (options.skipDuplicates) { + const hasImport = styles.some(child => { + return child.type === "atrule" && child.name === "import" + }); + if (!hasImport) { + // save hash files to skip them next time + if (!state.hashFiles[content]) { + state.hashFiles[content] = {}; + } + if (!state.hashFiles[content][media]) { + state.hashFiles[content][media] = {}; + } + state.hashFiles[content][media][layer] = true; + } + } + + // recursion: import @import from imported file + return parseStyles(result, styles, options, state, media, layer) + }) + } + ) + } + }, + } +} + +AtImport.postcss = true; + +var postcssImport = AtImport; + +var index = /*@__PURE__*/getDefaultExportFromCjs(postcssImport); + +var index$1 = /*#__PURE__*/_mergeNamespaces({ + __proto__: null, + default: index +}, [postcssImport]); + +export { index$1 as i }; diff --git a/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js b/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js new file mode 100644 index 0000000..a8082bf --- /dev/null +++ b/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js @@ -0,0 +1,7930 @@ +import { fileURLToPath as __cjs_fileURLToPath } from 'node:url'; +import { dirname as __cjs_dirname } from 'node:path'; +import { createRequire as __cjs_createRequire } from 'node:module'; + +const __filename = __cjs_fileURLToPath(import.meta.url); +const __dirname = __cjs_dirname(__filename); +const require = __cjs_createRequire(import.meta.url); +const __require = require; +const UNDEFINED_CODE_POINTS = new Set([ + 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, + 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, + 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, + 1048575, 1114110, 1114111, +]); +const REPLACEMENT_CHARACTER = '\uFFFD'; +var CODE_POINTS; +(function (CODE_POINTS) { + CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF"; + CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL"; + CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION"; + CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; + CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED"; + CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED"; + CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE"; + CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; + CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; + CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN"; + CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND"; + CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE"; + CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; + CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS"; + CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0"; + CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9"; + CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON"; + CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; + CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; + CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; + CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; + CODE_POINTS[CODE_POINTS["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER"; +})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {})); +const SEQUENCES = { + DASH_DASH: '--', + CDATA_START: '[CDATA[', + DOCTYPE: 'doctype', + SCRIPT: 'script', + PUBLIC: 'public', + SYSTEM: 'system', +}; +//Surrogates +function isSurrogate(cp) { + return cp >= 55296 && cp <= 57343; +} +function isSurrogatePair(cp) { + return cp >= 56320 && cp <= 57343; +} +function getSurrogatePairCodePoint(cp1, cp2) { + return (cp1 - 55296) * 1024 + 9216 + cp2; +} +//NOTE: excluding NULL and ASCII whitespace +function isControlCodePoint(cp) { + return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) || + (cp >= 0x7f && cp <= 0x9f)); +} +function isUndefinedCodePoint(cp) { + return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp); +} + +var ERR; +(function (ERR) { + ERR["controlCharacterInInputStream"] = "control-character-in-input-stream"; + ERR["noncharacterInInputStream"] = "noncharacter-in-input-stream"; + ERR["surrogateInInputStream"] = "surrogate-in-input-stream"; + ERR["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; + ERR["endTagWithAttributes"] = "end-tag-with-attributes"; + ERR["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; + ERR["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; + ERR["unexpectedNullCharacter"] = "unexpected-null-character"; + ERR["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; + ERR["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; + ERR["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; + ERR["missingEndTagName"] = "missing-end-tag-name"; + ERR["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; + ERR["unknownNamedCharacterReference"] = "unknown-named-character-reference"; + ERR["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; + ERR["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; + ERR["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; + ERR["eofBeforeTagName"] = "eof-before-tag-name"; + ERR["eofInTag"] = "eof-in-tag"; + ERR["missingAttributeValue"] = "missing-attribute-value"; + ERR["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; + ERR["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; + ERR["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; + ERR["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; + ERR["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; + ERR["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; + ERR["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; + ERR["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; + ERR["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; + ERR["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; + ERR["cdataInHtmlContent"] = "cdata-in-html-content"; + ERR["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; + ERR["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; + ERR["eofInDoctype"] = "eof-in-doctype"; + ERR["nestedComment"] = "nested-comment"; + ERR["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; + ERR["eofInComment"] = "eof-in-comment"; + ERR["incorrectlyClosedComment"] = "incorrectly-closed-comment"; + ERR["eofInCdata"] = "eof-in-cdata"; + ERR["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; + ERR["nullCharacterReference"] = "null-character-reference"; + ERR["surrogateCharacterReference"] = "surrogate-character-reference"; + ERR["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; + ERR["controlCharacterReference"] = "control-character-reference"; + ERR["noncharacterCharacterReference"] = "noncharacter-character-reference"; + ERR["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; + ERR["missingDoctypeName"] = "missing-doctype-name"; + ERR["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; + ERR["duplicateAttribute"] = "duplicate-attribute"; + ERR["nonConformingDoctype"] = "non-conforming-doctype"; + ERR["missingDoctype"] = "missing-doctype"; + ERR["misplacedDoctype"] = "misplaced-doctype"; + ERR["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; + ERR["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; + ERR["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; + ERR["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; + ERR["abandonedHeadElementChild"] = "abandoned-head-element-child"; + ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; + ERR["nestedNoscriptInHead"] = "nested-noscript-in-head"; + ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; +})(ERR = ERR || (ERR = {})); + +//Const +const DEFAULT_BUFFER_WATERLINE = 1 << 16; +//Preprocessor +//NOTE: HTML input preprocessing +//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream) +class Preprocessor { + constructor(handler) { + this.handler = handler; + this.html = ''; + this.pos = -1; + // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0 + this.lastGapPos = -2; + this.gapStack = []; + this.skipNextNewLine = false; + this.lastChunkWritten = false; + this.endOfChunkHit = false; + this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; + this.isEol = false; + this.lineStartPos = 0; + this.droppedBufferSize = 0; + this.line = 1; + //NOTE: avoid reporting errors twice on advance/retreat + this.lastErrOffset = -1; + } + /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ + get col() { + return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); + } + get offset() { + return this.droppedBufferSize + this.pos; + } + getError(code) { + const { line, col, offset } = this; + return { + code, + startLine: line, + endLine: line, + startCol: col, + endCol: col, + startOffset: offset, + endOffset: offset, + }; + } + _err(code) { + if (this.handler.onParseError && this.lastErrOffset !== this.offset) { + this.lastErrOffset = this.offset; + this.handler.onParseError(this.getError(code)); + } + } + _addGap() { + this.gapStack.push(this.lastGapPos); + this.lastGapPos = this.pos; + } + _processSurrogate(cp) { + //NOTE: try to peek a surrogate pair + if (this.pos !== this.html.length - 1) { + const nextCp = this.html.charCodeAt(this.pos + 1); + if (isSurrogatePair(nextCp)) { + //NOTE: we have a surrogate pair. Peek pair character and recalculate code point. + this.pos++; + //NOTE: add a gap that should be avoided during retreat + this._addGap(); + return getSurrogatePairCodePoint(cp, nextCp); + } + } + //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet. + else if (!this.lastChunkWritten) { + this.endOfChunkHit = true; + return CODE_POINTS.EOF; + } + //NOTE: isolated surrogate + this._err(ERR.surrogateInInputStream); + return cp; + } + willDropParsedChunk() { + return this.pos > this.bufferWaterline; + } + dropParsedChunk() { + if (this.willDropParsedChunk()) { + this.html = this.html.substring(this.pos); + this.lineStartPos -= this.pos; + this.droppedBufferSize += this.pos; + this.pos = 0; + this.lastGapPos = -2; + this.gapStack.length = 0; + } + } + write(chunk, isLastChunk) { + if (this.html.length > 0) { + this.html += chunk; + } + else { + this.html = chunk; + } + this.endOfChunkHit = false; + this.lastChunkWritten = isLastChunk; + } + insertHtmlAtCurrentPos(chunk) { + this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); + this.endOfChunkHit = false; + } + startsWith(pattern, caseSensitive) { + // Check if our buffer has enough characters + if (this.pos + pattern.length > this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return false; + } + if (caseSensitive) { + return this.html.startsWith(pattern, this.pos); + } + for (let i = 0; i < pattern.length; i++) { + const cp = this.html.charCodeAt(this.pos + i) | 0x20; + if (cp !== pattern.charCodeAt(i)) { + return false; + } + } + return true; + } + peek(offset) { + const pos = this.pos + offset; + if (pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return CODE_POINTS.EOF; + } + const code = this.html.charCodeAt(pos); + return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code; + } + advance() { + this.pos++; + //NOTE: LF should be in the last column of the line + if (this.isEol) { + this.isEol = false; + this.line++; + this.lineStartPos = this.pos; + } + if (this.pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return CODE_POINTS.EOF; + } + let cp = this.html.charCodeAt(this.pos); + //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters + if (cp === CODE_POINTS.CARRIAGE_RETURN) { + this.isEol = true; + this.skipNextNewLine = true; + return CODE_POINTS.LINE_FEED; + } + //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character + //must be ignored. + if (cp === CODE_POINTS.LINE_FEED) { + this.isEol = true; + if (this.skipNextNewLine) { + // `line` will be bumped again in the recursive call. + this.line--; + this.skipNextNewLine = false; + this._addGap(); + return this.advance(); + } + } + this.skipNextNewLine = false; + if (isSurrogate(cp)) { + cp = this._processSurrogate(cp); + } + //OPTIMIZATION: first check if code point is in the common allowed + //range (ASCII alphanumeric, whitespaces, big chunk of BMP) + //before going into detailed performance cost validation. + const isCommonValidRange = this.handler.onParseError === null || + (cp > 0x1f && cp < 0x7f) || + cp === CODE_POINTS.LINE_FEED || + cp === CODE_POINTS.CARRIAGE_RETURN || + (cp > 0x9f && cp < 64976); + if (!isCommonValidRange) { + this._checkForProblematicCharacters(cp); + } + return cp; + } + _checkForProblematicCharacters(cp) { + if (isControlCodePoint(cp)) { + this._err(ERR.controlCharacterInInputStream); + } + else if (isUndefinedCodePoint(cp)) { + this._err(ERR.noncharacterInInputStream); + } + } + retreat(count) { + this.pos -= count; + while (this.pos < this.lastGapPos) { + this.lastGapPos = this.gapStack.pop(); + this.pos--; + } + this.isEol = false; + } +} + +var TokenType; +(function (TokenType) { + TokenType[TokenType["CHARACTER"] = 0] = "CHARACTER"; + TokenType[TokenType["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; + TokenType[TokenType["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; + TokenType[TokenType["START_TAG"] = 3] = "START_TAG"; + TokenType[TokenType["END_TAG"] = 4] = "END_TAG"; + TokenType[TokenType["COMMENT"] = 5] = "COMMENT"; + TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE"; + TokenType[TokenType["EOF"] = 7] = "EOF"; + TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION"; +})(TokenType = TokenType || (TokenType = {})); +function getTokenAttr(token, attrName) { + for (let i = token.attrs.length - 1; i >= 0; i--) { + if (token.attrs[i].name === attrName) { + return token.attrs[i].value; + } + } + return null; +} + +// Generated using scripts/write-decode-map.ts +var htmlDecodeTree = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map((c) => c.charCodeAt(0))); + +// Generated using scripts/write-decode-map.ts +new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map((c) => c.charCodeAt(0))); + +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + /** Bit that needs to be set to convert an upper case ASCII character to lower case */ + CharCodes[CharCodes["To_LOWER_BIT"] = 32] = "To_LOWER_BIT"; +})(CharCodes || (CharCodes = {})); +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags || (BinTrieFlags = {})); +function determineBranch(decodeTree, current, nodeIdx, char) { + const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + const value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + let lo = nodeIdx; + let hi = lo + branchCount - 1; + while (lo <= hi) { + const mid = (lo + hi) >>> 1; + const midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} + +/** All valid namespaces in HTML. */ +var NS; +(function (NS) { + NS["HTML"] = "http://www.w3.org/1999/xhtml"; + NS["MATHML"] = "http://www.w3.org/1998/Math/MathML"; + NS["SVG"] = "http://www.w3.org/2000/svg"; + NS["XLINK"] = "http://www.w3.org/1999/xlink"; + NS["XML"] = "http://www.w3.org/XML/1998/namespace"; + NS["XMLNS"] = "http://www.w3.org/2000/xmlns/"; +})(NS = NS || (NS = {})); +var ATTRS; +(function (ATTRS) { + ATTRS["TYPE"] = "type"; + ATTRS["ACTION"] = "action"; + ATTRS["ENCODING"] = "encoding"; + ATTRS["PROMPT"] = "prompt"; + ATTRS["NAME"] = "name"; + ATTRS["COLOR"] = "color"; + ATTRS["FACE"] = "face"; + ATTRS["SIZE"] = "size"; +})(ATTRS = ATTRS || (ATTRS = {})); +/** + * The mode of the document. + * + * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks} + */ +var DOCUMENT_MODE; +(function (DOCUMENT_MODE) { + DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks"; + DOCUMENT_MODE["QUIRKS"] = "quirks"; + DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks"; +})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {})); +var TAG_NAMES; +(function (TAG_NAMES) { + TAG_NAMES["A"] = "a"; + TAG_NAMES["ADDRESS"] = "address"; + TAG_NAMES["ANNOTATION_XML"] = "annotation-xml"; + TAG_NAMES["APPLET"] = "applet"; + TAG_NAMES["AREA"] = "area"; + TAG_NAMES["ARTICLE"] = "article"; + TAG_NAMES["ASIDE"] = "aside"; + TAG_NAMES["B"] = "b"; + TAG_NAMES["BASE"] = "base"; + TAG_NAMES["BASEFONT"] = "basefont"; + TAG_NAMES["BGSOUND"] = "bgsound"; + TAG_NAMES["BIG"] = "big"; + TAG_NAMES["BLOCKQUOTE"] = "blockquote"; + TAG_NAMES["BODY"] = "body"; + TAG_NAMES["BR"] = "br"; + TAG_NAMES["BUTTON"] = "button"; + TAG_NAMES["CAPTION"] = "caption"; + TAG_NAMES["CENTER"] = "center"; + TAG_NAMES["CODE"] = "code"; + TAG_NAMES["COL"] = "col"; + TAG_NAMES["COLGROUP"] = "colgroup"; + TAG_NAMES["DD"] = "dd"; + TAG_NAMES["DESC"] = "desc"; + TAG_NAMES["DETAILS"] = "details"; + TAG_NAMES["DIALOG"] = "dialog"; + TAG_NAMES["DIR"] = "dir"; + TAG_NAMES["DIV"] = "div"; + TAG_NAMES["DL"] = "dl"; + TAG_NAMES["DT"] = "dt"; + TAG_NAMES["EM"] = "em"; + TAG_NAMES["EMBED"] = "embed"; + TAG_NAMES["FIELDSET"] = "fieldset"; + TAG_NAMES["FIGCAPTION"] = "figcaption"; + TAG_NAMES["FIGURE"] = "figure"; + TAG_NAMES["FONT"] = "font"; + TAG_NAMES["FOOTER"] = "footer"; + TAG_NAMES["FOREIGN_OBJECT"] = "foreignObject"; + TAG_NAMES["FORM"] = "form"; + TAG_NAMES["FRAME"] = "frame"; + TAG_NAMES["FRAMESET"] = "frameset"; + TAG_NAMES["H1"] = "h1"; + TAG_NAMES["H2"] = "h2"; + TAG_NAMES["H3"] = "h3"; + TAG_NAMES["H4"] = "h4"; + TAG_NAMES["H5"] = "h5"; + TAG_NAMES["H6"] = "h6"; + TAG_NAMES["HEAD"] = "head"; + TAG_NAMES["HEADER"] = "header"; + TAG_NAMES["HGROUP"] = "hgroup"; + TAG_NAMES["HR"] = "hr"; + TAG_NAMES["HTML"] = "html"; + TAG_NAMES["I"] = "i"; + TAG_NAMES["IMG"] = "img"; + TAG_NAMES["IMAGE"] = "image"; + TAG_NAMES["INPUT"] = "input"; + TAG_NAMES["IFRAME"] = "iframe"; + TAG_NAMES["KEYGEN"] = "keygen"; + TAG_NAMES["LABEL"] = "label"; + TAG_NAMES["LI"] = "li"; + TAG_NAMES["LINK"] = "link"; + TAG_NAMES["LISTING"] = "listing"; + TAG_NAMES["MAIN"] = "main"; + TAG_NAMES["MALIGNMARK"] = "malignmark"; + TAG_NAMES["MARQUEE"] = "marquee"; + TAG_NAMES["MATH"] = "math"; + TAG_NAMES["MENU"] = "menu"; + TAG_NAMES["META"] = "meta"; + TAG_NAMES["MGLYPH"] = "mglyph"; + TAG_NAMES["MI"] = "mi"; + TAG_NAMES["MO"] = "mo"; + TAG_NAMES["MN"] = "mn"; + TAG_NAMES["MS"] = "ms"; + TAG_NAMES["MTEXT"] = "mtext"; + TAG_NAMES["NAV"] = "nav"; + TAG_NAMES["NOBR"] = "nobr"; + TAG_NAMES["NOFRAMES"] = "noframes"; + TAG_NAMES["NOEMBED"] = "noembed"; + TAG_NAMES["NOSCRIPT"] = "noscript"; + TAG_NAMES["OBJECT"] = "object"; + TAG_NAMES["OL"] = "ol"; + TAG_NAMES["OPTGROUP"] = "optgroup"; + TAG_NAMES["OPTION"] = "option"; + TAG_NAMES["P"] = "p"; + TAG_NAMES["PARAM"] = "param"; + TAG_NAMES["PLAINTEXT"] = "plaintext"; + TAG_NAMES["PRE"] = "pre"; + TAG_NAMES["RB"] = "rb"; + TAG_NAMES["RP"] = "rp"; + TAG_NAMES["RT"] = "rt"; + TAG_NAMES["RTC"] = "rtc"; + TAG_NAMES["RUBY"] = "ruby"; + TAG_NAMES["S"] = "s"; + TAG_NAMES["SCRIPT"] = "script"; + TAG_NAMES["SECTION"] = "section"; + TAG_NAMES["SELECT"] = "select"; + TAG_NAMES["SOURCE"] = "source"; + TAG_NAMES["SMALL"] = "small"; + TAG_NAMES["SPAN"] = "span"; + TAG_NAMES["STRIKE"] = "strike"; + TAG_NAMES["STRONG"] = "strong"; + TAG_NAMES["STYLE"] = "style"; + TAG_NAMES["SUB"] = "sub"; + TAG_NAMES["SUMMARY"] = "summary"; + TAG_NAMES["SUP"] = "sup"; + TAG_NAMES["TABLE"] = "table"; + TAG_NAMES["TBODY"] = "tbody"; + TAG_NAMES["TEMPLATE"] = "template"; + TAG_NAMES["TEXTAREA"] = "textarea"; + TAG_NAMES["TFOOT"] = "tfoot"; + TAG_NAMES["TD"] = "td"; + TAG_NAMES["TH"] = "th"; + TAG_NAMES["THEAD"] = "thead"; + TAG_NAMES["TITLE"] = "title"; + TAG_NAMES["TR"] = "tr"; + TAG_NAMES["TRACK"] = "track"; + TAG_NAMES["TT"] = "tt"; + TAG_NAMES["U"] = "u"; + TAG_NAMES["UL"] = "ul"; + TAG_NAMES["SVG"] = "svg"; + TAG_NAMES["VAR"] = "var"; + TAG_NAMES["WBR"] = "wbr"; + TAG_NAMES["XMP"] = "xmp"; +})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {})); +/** + * Tag IDs are numeric IDs for known tag names. + * + * We use tag IDs to improve the performance of tag name comparisons. + */ +var TAG_ID; +(function (TAG_ID) { + TAG_ID[TAG_ID["UNKNOWN"] = 0] = "UNKNOWN"; + TAG_ID[TAG_ID["A"] = 1] = "A"; + TAG_ID[TAG_ID["ADDRESS"] = 2] = "ADDRESS"; + TAG_ID[TAG_ID["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; + TAG_ID[TAG_ID["APPLET"] = 4] = "APPLET"; + TAG_ID[TAG_ID["AREA"] = 5] = "AREA"; + TAG_ID[TAG_ID["ARTICLE"] = 6] = "ARTICLE"; + TAG_ID[TAG_ID["ASIDE"] = 7] = "ASIDE"; + TAG_ID[TAG_ID["B"] = 8] = "B"; + TAG_ID[TAG_ID["BASE"] = 9] = "BASE"; + TAG_ID[TAG_ID["BASEFONT"] = 10] = "BASEFONT"; + TAG_ID[TAG_ID["BGSOUND"] = 11] = "BGSOUND"; + TAG_ID[TAG_ID["BIG"] = 12] = "BIG"; + TAG_ID[TAG_ID["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; + TAG_ID[TAG_ID["BODY"] = 14] = "BODY"; + TAG_ID[TAG_ID["BR"] = 15] = "BR"; + TAG_ID[TAG_ID["BUTTON"] = 16] = "BUTTON"; + TAG_ID[TAG_ID["CAPTION"] = 17] = "CAPTION"; + TAG_ID[TAG_ID["CENTER"] = 18] = "CENTER"; + TAG_ID[TAG_ID["CODE"] = 19] = "CODE"; + TAG_ID[TAG_ID["COL"] = 20] = "COL"; + TAG_ID[TAG_ID["COLGROUP"] = 21] = "COLGROUP"; + TAG_ID[TAG_ID["DD"] = 22] = "DD"; + TAG_ID[TAG_ID["DESC"] = 23] = "DESC"; + TAG_ID[TAG_ID["DETAILS"] = 24] = "DETAILS"; + TAG_ID[TAG_ID["DIALOG"] = 25] = "DIALOG"; + TAG_ID[TAG_ID["DIR"] = 26] = "DIR"; + TAG_ID[TAG_ID["DIV"] = 27] = "DIV"; + TAG_ID[TAG_ID["DL"] = 28] = "DL"; + TAG_ID[TAG_ID["DT"] = 29] = "DT"; + TAG_ID[TAG_ID["EM"] = 30] = "EM"; + TAG_ID[TAG_ID["EMBED"] = 31] = "EMBED"; + TAG_ID[TAG_ID["FIELDSET"] = 32] = "FIELDSET"; + TAG_ID[TAG_ID["FIGCAPTION"] = 33] = "FIGCAPTION"; + TAG_ID[TAG_ID["FIGURE"] = 34] = "FIGURE"; + TAG_ID[TAG_ID["FONT"] = 35] = "FONT"; + TAG_ID[TAG_ID["FOOTER"] = 36] = "FOOTER"; + TAG_ID[TAG_ID["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; + TAG_ID[TAG_ID["FORM"] = 38] = "FORM"; + TAG_ID[TAG_ID["FRAME"] = 39] = "FRAME"; + TAG_ID[TAG_ID["FRAMESET"] = 40] = "FRAMESET"; + TAG_ID[TAG_ID["H1"] = 41] = "H1"; + TAG_ID[TAG_ID["H2"] = 42] = "H2"; + TAG_ID[TAG_ID["H3"] = 43] = "H3"; + TAG_ID[TAG_ID["H4"] = 44] = "H4"; + TAG_ID[TAG_ID["H5"] = 45] = "H5"; + TAG_ID[TAG_ID["H6"] = 46] = "H6"; + TAG_ID[TAG_ID["HEAD"] = 47] = "HEAD"; + TAG_ID[TAG_ID["HEADER"] = 48] = "HEADER"; + TAG_ID[TAG_ID["HGROUP"] = 49] = "HGROUP"; + TAG_ID[TAG_ID["HR"] = 50] = "HR"; + TAG_ID[TAG_ID["HTML"] = 51] = "HTML"; + TAG_ID[TAG_ID["I"] = 52] = "I"; + TAG_ID[TAG_ID["IMG"] = 53] = "IMG"; + TAG_ID[TAG_ID["IMAGE"] = 54] = "IMAGE"; + TAG_ID[TAG_ID["INPUT"] = 55] = "INPUT"; + TAG_ID[TAG_ID["IFRAME"] = 56] = "IFRAME"; + TAG_ID[TAG_ID["KEYGEN"] = 57] = "KEYGEN"; + TAG_ID[TAG_ID["LABEL"] = 58] = "LABEL"; + TAG_ID[TAG_ID["LI"] = 59] = "LI"; + TAG_ID[TAG_ID["LINK"] = 60] = "LINK"; + TAG_ID[TAG_ID["LISTING"] = 61] = "LISTING"; + TAG_ID[TAG_ID["MAIN"] = 62] = "MAIN"; + TAG_ID[TAG_ID["MALIGNMARK"] = 63] = "MALIGNMARK"; + TAG_ID[TAG_ID["MARQUEE"] = 64] = "MARQUEE"; + TAG_ID[TAG_ID["MATH"] = 65] = "MATH"; + TAG_ID[TAG_ID["MENU"] = 66] = "MENU"; + TAG_ID[TAG_ID["META"] = 67] = "META"; + TAG_ID[TAG_ID["MGLYPH"] = 68] = "MGLYPH"; + TAG_ID[TAG_ID["MI"] = 69] = "MI"; + TAG_ID[TAG_ID["MO"] = 70] = "MO"; + TAG_ID[TAG_ID["MN"] = 71] = "MN"; + TAG_ID[TAG_ID["MS"] = 72] = "MS"; + TAG_ID[TAG_ID["MTEXT"] = 73] = "MTEXT"; + TAG_ID[TAG_ID["NAV"] = 74] = "NAV"; + TAG_ID[TAG_ID["NOBR"] = 75] = "NOBR"; + TAG_ID[TAG_ID["NOFRAMES"] = 76] = "NOFRAMES"; + TAG_ID[TAG_ID["NOEMBED"] = 77] = "NOEMBED"; + TAG_ID[TAG_ID["NOSCRIPT"] = 78] = "NOSCRIPT"; + TAG_ID[TAG_ID["OBJECT"] = 79] = "OBJECT"; + TAG_ID[TAG_ID["OL"] = 80] = "OL"; + TAG_ID[TAG_ID["OPTGROUP"] = 81] = "OPTGROUP"; + TAG_ID[TAG_ID["OPTION"] = 82] = "OPTION"; + TAG_ID[TAG_ID["P"] = 83] = "P"; + TAG_ID[TAG_ID["PARAM"] = 84] = "PARAM"; + TAG_ID[TAG_ID["PLAINTEXT"] = 85] = "PLAINTEXT"; + TAG_ID[TAG_ID["PRE"] = 86] = "PRE"; + TAG_ID[TAG_ID["RB"] = 87] = "RB"; + TAG_ID[TAG_ID["RP"] = 88] = "RP"; + TAG_ID[TAG_ID["RT"] = 89] = "RT"; + TAG_ID[TAG_ID["RTC"] = 90] = "RTC"; + TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY"; + TAG_ID[TAG_ID["S"] = 92] = "S"; + TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT"; + TAG_ID[TAG_ID["SECTION"] = 94] = "SECTION"; + TAG_ID[TAG_ID["SELECT"] = 95] = "SELECT"; + TAG_ID[TAG_ID["SOURCE"] = 96] = "SOURCE"; + TAG_ID[TAG_ID["SMALL"] = 97] = "SMALL"; + TAG_ID[TAG_ID["SPAN"] = 98] = "SPAN"; + TAG_ID[TAG_ID["STRIKE"] = 99] = "STRIKE"; + TAG_ID[TAG_ID["STRONG"] = 100] = "STRONG"; + TAG_ID[TAG_ID["STYLE"] = 101] = "STYLE"; + TAG_ID[TAG_ID["SUB"] = 102] = "SUB"; + TAG_ID[TAG_ID["SUMMARY"] = 103] = "SUMMARY"; + TAG_ID[TAG_ID["SUP"] = 104] = "SUP"; + TAG_ID[TAG_ID["TABLE"] = 105] = "TABLE"; + TAG_ID[TAG_ID["TBODY"] = 106] = "TBODY"; + TAG_ID[TAG_ID["TEMPLATE"] = 107] = "TEMPLATE"; + TAG_ID[TAG_ID["TEXTAREA"] = 108] = "TEXTAREA"; + TAG_ID[TAG_ID["TFOOT"] = 109] = "TFOOT"; + TAG_ID[TAG_ID["TD"] = 110] = "TD"; + TAG_ID[TAG_ID["TH"] = 111] = "TH"; + TAG_ID[TAG_ID["THEAD"] = 112] = "THEAD"; + TAG_ID[TAG_ID["TITLE"] = 113] = "TITLE"; + TAG_ID[TAG_ID["TR"] = 114] = "TR"; + TAG_ID[TAG_ID["TRACK"] = 115] = "TRACK"; + TAG_ID[TAG_ID["TT"] = 116] = "TT"; + TAG_ID[TAG_ID["U"] = 117] = "U"; + TAG_ID[TAG_ID["UL"] = 118] = "UL"; + TAG_ID[TAG_ID["SVG"] = 119] = "SVG"; + TAG_ID[TAG_ID["VAR"] = 120] = "VAR"; + TAG_ID[TAG_ID["WBR"] = 121] = "WBR"; + TAG_ID[TAG_ID["XMP"] = 122] = "XMP"; +})(TAG_ID = TAG_ID || (TAG_ID = {})); +const TAG_NAME_TO_ID = new Map([ + [TAG_NAMES.A, TAG_ID.A], + [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], + [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], + [TAG_NAMES.APPLET, TAG_ID.APPLET], + [TAG_NAMES.AREA, TAG_ID.AREA], + [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], + [TAG_NAMES.ASIDE, TAG_ID.ASIDE], + [TAG_NAMES.B, TAG_ID.B], + [TAG_NAMES.BASE, TAG_ID.BASE], + [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], + [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], + [TAG_NAMES.BIG, TAG_ID.BIG], + [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], + [TAG_NAMES.BODY, TAG_ID.BODY], + [TAG_NAMES.BR, TAG_ID.BR], + [TAG_NAMES.BUTTON, TAG_ID.BUTTON], + [TAG_NAMES.CAPTION, TAG_ID.CAPTION], + [TAG_NAMES.CENTER, TAG_ID.CENTER], + [TAG_NAMES.CODE, TAG_ID.CODE], + [TAG_NAMES.COL, TAG_ID.COL], + [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], + [TAG_NAMES.DD, TAG_ID.DD], + [TAG_NAMES.DESC, TAG_ID.DESC], + [TAG_NAMES.DETAILS, TAG_ID.DETAILS], + [TAG_NAMES.DIALOG, TAG_ID.DIALOG], + [TAG_NAMES.DIR, TAG_ID.DIR], + [TAG_NAMES.DIV, TAG_ID.DIV], + [TAG_NAMES.DL, TAG_ID.DL], + [TAG_NAMES.DT, TAG_ID.DT], + [TAG_NAMES.EM, TAG_ID.EM], + [TAG_NAMES.EMBED, TAG_ID.EMBED], + [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], + [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], + [TAG_NAMES.FIGURE, TAG_ID.FIGURE], + [TAG_NAMES.FONT, TAG_ID.FONT], + [TAG_NAMES.FOOTER, TAG_ID.FOOTER], + [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], + [TAG_NAMES.FORM, TAG_ID.FORM], + [TAG_NAMES.FRAME, TAG_ID.FRAME], + [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], + [TAG_NAMES.H1, TAG_ID.H1], + [TAG_NAMES.H2, TAG_ID.H2], + [TAG_NAMES.H3, TAG_ID.H3], + [TAG_NAMES.H4, TAG_ID.H4], + [TAG_NAMES.H5, TAG_ID.H5], + [TAG_NAMES.H6, TAG_ID.H6], + [TAG_NAMES.HEAD, TAG_ID.HEAD], + [TAG_NAMES.HEADER, TAG_ID.HEADER], + [TAG_NAMES.HGROUP, TAG_ID.HGROUP], + [TAG_NAMES.HR, TAG_ID.HR], + [TAG_NAMES.HTML, TAG_ID.HTML], + [TAG_NAMES.I, TAG_ID.I], + [TAG_NAMES.IMG, TAG_ID.IMG], + [TAG_NAMES.IMAGE, TAG_ID.IMAGE], + [TAG_NAMES.INPUT, TAG_ID.INPUT], + [TAG_NAMES.IFRAME, TAG_ID.IFRAME], + [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], + [TAG_NAMES.LABEL, TAG_ID.LABEL], + [TAG_NAMES.LI, TAG_ID.LI], + [TAG_NAMES.LINK, TAG_ID.LINK], + [TAG_NAMES.LISTING, TAG_ID.LISTING], + [TAG_NAMES.MAIN, TAG_ID.MAIN], + [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], + [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], + [TAG_NAMES.MATH, TAG_ID.MATH], + [TAG_NAMES.MENU, TAG_ID.MENU], + [TAG_NAMES.META, TAG_ID.META], + [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], + [TAG_NAMES.MI, TAG_ID.MI], + [TAG_NAMES.MO, TAG_ID.MO], + [TAG_NAMES.MN, TAG_ID.MN], + [TAG_NAMES.MS, TAG_ID.MS], + [TAG_NAMES.MTEXT, TAG_ID.MTEXT], + [TAG_NAMES.NAV, TAG_ID.NAV], + [TAG_NAMES.NOBR, TAG_ID.NOBR], + [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], + [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], + [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], + [TAG_NAMES.OBJECT, TAG_ID.OBJECT], + [TAG_NAMES.OL, TAG_ID.OL], + [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], + [TAG_NAMES.OPTION, TAG_ID.OPTION], + [TAG_NAMES.P, TAG_ID.P], + [TAG_NAMES.PARAM, TAG_ID.PARAM], + [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], + [TAG_NAMES.PRE, TAG_ID.PRE], + [TAG_NAMES.RB, TAG_ID.RB], + [TAG_NAMES.RP, TAG_ID.RP], + [TAG_NAMES.RT, TAG_ID.RT], + [TAG_NAMES.RTC, TAG_ID.RTC], + [TAG_NAMES.RUBY, TAG_ID.RUBY], + [TAG_NAMES.S, TAG_ID.S], + [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], + [TAG_NAMES.SECTION, TAG_ID.SECTION], + [TAG_NAMES.SELECT, TAG_ID.SELECT], + [TAG_NAMES.SOURCE, TAG_ID.SOURCE], + [TAG_NAMES.SMALL, TAG_ID.SMALL], + [TAG_NAMES.SPAN, TAG_ID.SPAN], + [TAG_NAMES.STRIKE, TAG_ID.STRIKE], + [TAG_NAMES.STRONG, TAG_ID.STRONG], + [TAG_NAMES.STYLE, TAG_ID.STYLE], + [TAG_NAMES.SUB, TAG_ID.SUB], + [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], + [TAG_NAMES.SUP, TAG_ID.SUP], + [TAG_NAMES.TABLE, TAG_ID.TABLE], + [TAG_NAMES.TBODY, TAG_ID.TBODY], + [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], + [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], + [TAG_NAMES.TFOOT, TAG_ID.TFOOT], + [TAG_NAMES.TD, TAG_ID.TD], + [TAG_NAMES.TH, TAG_ID.TH], + [TAG_NAMES.THEAD, TAG_ID.THEAD], + [TAG_NAMES.TITLE, TAG_ID.TITLE], + [TAG_NAMES.TR, TAG_ID.TR], + [TAG_NAMES.TRACK, TAG_ID.TRACK], + [TAG_NAMES.TT, TAG_ID.TT], + [TAG_NAMES.U, TAG_ID.U], + [TAG_NAMES.UL, TAG_ID.UL], + [TAG_NAMES.SVG, TAG_ID.SVG], + [TAG_NAMES.VAR, TAG_ID.VAR], + [TAG_NAMES.WBR, TAG_ID.WBR], + [TAG_NAMES.XMP, TAG_ID.XMP], +]); +function getTagID(tagName) { + var _a; + return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN; +} +const $ = TAG_ID; +const SPECIAL_ELEMENTS = { + [NS.HTML]: new Set([ + $.ADDRESS, + $.APPLET, + $.AREA, + $.ARTICLE, + $.ASIDE, + $.BASE, + $.BASEFONT, + $.BGSOUND, + $.BLOCKQUOTE, + $.BODY, + $.BR, + $.BUTTON, + $.CAPTION, + $.CENTER, + $.COL, + $.COLGROUP, + $.DD, + $.DETAILS, + $.DIR, + $.DIV, + $.DL, + $.DT, + $.EMBED, + $.FIELDSET, + $.FIGCAPTION, + $.FIGURE, + $.FOOTER, + $.FORM, + $.FRAME, + $.FRAMESET, + $.H1, + $.H2, + $.H3, + $.H4, + $.H5, + $.H6, + $.HEAD, + $.HEADER, + $.HGROUP, + $.HR, + $.HTML, + $.IFRAME, + $.IMG, + $.INPUT, + $.LI, + $.LINK, + $.LISTING, + $.MAIN, + $.MARQUEE, + $.MENU, + $.META, + $.NAV, + $.NOEMBED, + $.NOFRAMES, + $.NOSCRIPT, + $.OBJECT, + $.OL, + $.P, + $.PARAM, + $.PLAINTEXT, + $.PRE, + $.SCRIPT, + $.SECTION, + $.SELECT, + $.SOURCE, + $.STYLE, + $.SUMMARY, + $.TABLE, + $.TBODY, + $.TD, + $.TEMPLATE, + $.TEXTAREA, + $.TFOOT, + $.TH, + $.THEAD, + $.TITLE, + $.TR, + $.TRACK, + $.UL, + $.WBR, + $.XMP, + ]), + [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), + [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), + [NS.XLINK]: new Set(), + [NS.XML]: new Set(), + [NS.XMLNS]: new Set(), +}; +function isNumberedHeader(tn) { + return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6; +} + +//C1 Unicode control character reference replacements +const C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([ + [0x80, 8364], + [0x82, 8218], + [0x83, 402], + [0x84, 8222], + [0x85, 8230], + [0x86, 8224], + [0x87, 8225], + [0x88, 710], + [0x89, 8240], + [0x8a, 352], + [0x8b, 8249], + [0x8c, 338], + [0x8e, 381], + [0x91, 8216], + [0x92, 8217], + [0x93, 8220], + [0x94, 8221], + [0x95, 8226], + [0x96, 8211], + [0x97, 8212], + [0x98, 732], + [0x99, 8482], + [0x9a, 353], + [0x9b, 8250], + [0x9c, 339], + [0x9e, 382], + [0x9f, 376], +]); +//States +var State; +(function (State) { + State[State["DATA"] = 0] = "DATA"; + State[State["RCDATA"] = 1] = "RCDATA"; + State[State["RAWTEXT"] = 2] = "RAWTEXT"; + State[State["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; + State[State["PLAINTEXT"] = 4] = "PLAINTEXT"; + State[State["TAG_OPEN"] = 5] = "TAG_OPEN"; + State[State["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; + State[State["TAG_NAME"] = 7] = "TAG_NAME"; + State[State["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; + State[State["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; + State[State["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; + State[State["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; + State[State["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; + State[State["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; + State[State["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; + State[State["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; + State[State["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; + State[State["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; + State[State["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; + State[State["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; + State[State["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; + State[State["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; + State[State["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; + State[State["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; + State[State["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; + State[State["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; + State[State["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; + State[State["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; + State[State["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; + State[State["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; + State[State["COMMENT_START"] = 42] = "COMMENT_START"; + State[State["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; + State[State["COMMENT"] = 44] = "COMMENT"; + State[State["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; + State[State["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; + State[State["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; + State[State["COMMENT_END"] = 50] = "COMMENT_END"; + State[State["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; + State[State["DOCTYPE"] = 52] = "DOCTYPE"; + State[State["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; + State[State["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; + State[State["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; + State[State["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; + State[State["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; + State[State["CDATA_SECTION"] = 68] = "CDATA_SECTION"; + State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; + State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; + State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; + State[State["NAMED_CHARACTER_REFERENCE"] = 72] = "NAMED_CHARACTER_REFERENCE"; + State[State["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND"; + State[State["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE"; + State[State["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START"; + State[State["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE"; + State[State["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE"; + State[State["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END"; +})(State || (State = {})); +//Tokenizer initial states for different modes +const TokenizerMode = { + DATA: State.DATA, + RCDATA: State.RCDATA, + RAWTEXT: State.RAWTEXT, + SCRIPT_DATA: State.SCRIPT_DATA, + PLAINTEXT: State.PLAINTEXT, + CDATA_SECTION: State.CDATA_SECTION, +}; +//Utils +//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline +//this functions if they will be situated in another module due to context switch. +//Always perform inlining check before modifying this functions ('node --trace-inlining'). +function isAsciiDigit(cp) { + return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9; +} +function isAsciiUpper(cp) { + return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z; +} +function isAsciiLower(cp) { + return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z; +} +function isAsciiLetter(cp) { + return isAsciiLower(cp) || isAsciiUpper(cp); +} +function isAsciiAlphaNumeric(cp) { + return isAsciiLetter(cp) || isAsciiDigit(cp); +} +function isAsciiUpperHexDigit(cp) { + return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F; +} +function isAsciiLowerHexDigit(cp) { + return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F; +} +function isAsciiHexDigit(cp) { + return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp); +} +function toAsciiLower(cp) { + return cp + 32; +} +function isWhitespace(cp) { + return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED; +} +function isEntityInAttributeInvalidEnd(nextCp) { + return nextCp === CODE_POINTS.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp); +} +function isScriptDataDoubleEscapeSequenceEnd(cp) { + return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN; +} +//Tokenizer +class Tokenizer { + constructor(options, handler) { + this.options = options; + this.handler = handler; + this.paused = false; + /** Ensures that the parsing loop isn't run multiple times at once. */ + this.inLoop = false; + /** + * Indicates that the current adjusted node exists, is not an element in the HTML namespace, + * and that it is not an integration point for either MathML or HTML. + * + * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction} + */ + this.inForeignNode = false; + this.lastStartTagName = ''; + this.active = false; + this.state = State.DATA; + this.returnState = State.DATA; + this.charRefCode = -1; + this.consumedAfterSnapshot = -1; + this.currentCharacterToken = null; + this.currentToken = null; + this.currentAttr = { name: '', value: '' }; + this.preprocessor = new Preprocessor(handler); + this.currentLocation = this.getCurrentLocation(-1); + } + //Errors + _err(code) { + var _a, _b; + (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code)); + } + // NOTE: `offset` may never run across line boundaries. + getCurrentLocation(offset) { + if (!this.options.sourceCodeLocationInfo) { + return null; + } + return { + startLine: this.preprocessor.line, + startCol: this.preprocessor.col - offset, + startOffset: this.preprocessor.offset - offset, + endLine: -1, + endCol: -1, + endOffset: -1, + }; + } + _runParsingLoop() { + if (this.inLoop) + return; + this.inLoop = true; + while (this.active && !this.paused) { + this.consumedAfterSnapshot = 0; + const cp = this._consume(); + if (!this._ensureHibernation()) { + this._callState(cp); + } + } + this.inLoop = false; + } + //API + pause() { + this.paused = true; + } + resume(writeCallback) { + if (!this.paused) { + throw new Error('Parser was already resumed'); + } + this.paused = false; + // Necessary for synchronous resume. + if (this.inLoop) + return; + this._runParsingLoop(); + if (!this.paused) { + writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); + } + } + write(chunk, isLastChunk, writeCallback) { + this.active = true; + this.preprocessor.write(chunk, isLastChunk); + this._runParsingLoop(); + if (!this.paused) { + writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); + } + } + insertHtmlAtCurrentPos(chunk) { + this.active = true; + this.preprocessor.insertHtmlAtCurrentPos(chunk); + this._runParsingLoop(); + } + //Hibernation + _ensureHibernation() { + if (this.preprocessor.endOfChunkHit) { + this._unconsume(this.consumedAfterSnapshot); + this.active = false; + return true; + } + return false; + } + //Consumption + _consume() { + this.consumedAfterSnapshot++; + return this.preprocessor.advance(); + } + _unconsume(count) { + this.consumedAfterSnapshot -= count; + this.preprocessor.retreat(count); + } + _reconsumeInState(state, cp) { + this.state = state; + this._callState(cp); + } + _advanceBy(count) { + this.consumedAfterSnapshot += count; + for (let i = 0; i < count; i++) { + this.preprocessor.advance(); + } + } + _consumeSequenceIfMatch(pattern, caseSensitive) { + if (this.preprocessor.startsWith(pattern, caseSensitive)) { + // We will already have consumed one character before calling this method. + this._advanceBy(pattern.length - 1); + return true; + } + return false; + } + //Token creation + _createStartTagToken() { + this.currentToken = { + type: TokenType.START_TAG, + tagName: '', + tagID: TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(1), + }; + } + _createEndTagToken() { + this.currentToken = { + type: TokenType.END_TAG, + tagName: '', + tagID: TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(2), + }; + } + _createCommentToken(offset) { + this.currentToken = { + type: TokenType.COMMENT, + data: '', + location: this.getCurrentLocation(offset), + }; + } + _createDoctypeToken(initialName) { + this.currentToken = { + type: TokenType.DOCTYPE, + name: initialName, + forceQuirks: false, + publicId: null, + systemId: null, + location: this.currentLocation, + }; + } + _createCharacterToken(type, chars) { + this.currentCharacterToken = { + type, + chars, + location: this.currentLocation, + }; + } + //Tag attributes + _createAttr(attrNameFirstCh) { + this.currentAttr = { + name: attrNameFirstCh, + value: '', + }; + this.currentLocation = this.getCurrentLocation(0); + } + _leaveAttrName() { + var _a; + var _b; + const token = this.currentToken; + if (getTokenAttr(token, this.currentAttr.name) === null) { + token.attrs.push(this.currentAttr); + if (token.location && this.currentLocation) { + const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null))); + attrLocations[this.currentAttr.name] = this.currentLocation; + // Set end location + this._leaveAttrValue(); + } + } + else { + this._err(ERR.duplicateAttribute); + } + } + _leaveAttrValue() { + if (this.currentLocation) { + this.currentLocation.endLine = this.preprocessor.line; + this.currentLocation.endCol = this.preprocessor.col; + this.currentLocation.endOffset = this.preprocessor.offset; + } + } + //Token emission + prepareToken(ct) { + this._emitCurrentCharacterToken(ct.location); + this.currentToken = null; + if (ct.location) { + ct.location.endLine = this.preprocessor.line; + ct.location.endCol = this.preprocessor.col + 1; + ct.location.endOffset = this.preprocessor.offset + 1; + } + this.currentLocation = this.getCurrentLocation(-1); + } + emitCurrentTagToken() { + const ct = this.currentToken; + this.prepareToken(ct); + ct.tagID = getTagID(ct.tagName); + if (ct.type === TokenType.START_TAG) { + this.lastStartTagName = ct.tagName; + this.handler.onStartTag(ct); + } + else { + if (ct.attrs.length > 0) { + this._err(ERR.endTagWithAttributes); + } + if (ct.selfClosing) { + this._err(ERR.endTagWithTrailingSolidus); + } + this.handler.onEndTag(ct); + } + this.preprocessor.dropParsedChunk(); + } + emitCurrentComment(ct) { + this.prepareToken(ct); + this.handler.onComment(ct); + this.preprocessor.dropParsedChunk(); + } + emitCurrentDoctype(ct) { + this.prepareToken(ct); + this.handler.onDoctype(ct); + this.preprocessor.dropParsedChunk(); + } + _emitCurrentCharacterToken(nextLocation) { + if (this.currentCharacterToken) { + //NOTE: if we have a pending character token, make it's end location equal to the + //current token's start location. + if (nextLocation && this.currentCharacterToken.location) { + this.currentCharacterToken.location.endLine = nextLocation.startLine; + this.currentCharacterToken.location.endCol = nextLocation.startCol; + this.currentCharacterToken.location.endOffset = nextLocation.startOffset; + } + switch (this.currentCharacterToken.type) { + case TokenType.CHARACTER: { + this.handler.onCharacter(this.currentCharacterToken); + break; + } + case TokenType.NULL_CHARACTER: { + this.handler.onNullCharacter(this.currentCharacterToken); + break; + } + case TokenType.WHITESPACE_CHARACTER: { + this.handler.onWhitespaceCharacter(this.currentCharacterToken); + break; + } + } + this.currentCharacterToken = null; + } + } + _emitEOFToken() { + const location = this.getCurrentLocation(0); + if (location) { + location.endLine = location.startLine; + location.endCol = location.startCol; + location.endOffset = location.startOffset; + } + this._emitCurrentCharacterToken(location); + this.handler.onEof({ type: TokenType.EOF, location }); + this.active = false; + } + //Characters emission + //OPTIMIZATION: specification uses only one type of character tokens (one token per character). + //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. + //If we have a sequence of characters that belong to the same group, the parser can process it + //as a single solid character token. + //So, there are 3 types of character tokens in parse5: + //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') + //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') + //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') + _appendCharToCurrentCharacterToken(type, ch) { + if (this.currentCharacterToken) { + if (this.currentCharacterToken.type !== type) { + this.currentLocation = this.getCurrentLocation(0); + this._emitCurrentCharacterToken(this.currentLocation); + this.preprocessor.dropParsedChunk(); + } + else { + this.currentCharacterToken.chars += ch; + return; + } + } + this._createCharacterToken(type, ch); + } + _emitCodePoint(cp) { + const type = isWhitespace(cp) + ? TokenType.WHITESPACE_CHARACTER + : cp === CODE_POINTS.NULL + ? TokenType.NULL_CHARACTER + : TokenType.CHARACTER; + this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); + } + //NOTE: used when we emit characters explicitly. + //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. + _emitChars(ch) { + this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch); + } + // Character reference helpers + _matchNamedCharacterReference(cp) { + let result = null; + let excess = 0; + let withoutSemicolon = false; + for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) { + i = determineBranch(htmlDecodeTree, current, i + 1, cp); + if (i < 0) + break; + excess += 1; + current = htmlDecodeTree[i]; + const masked = current & BinTrieFlags.VALUE_LENGTH; + // If the branch is a value, store it and continue + if (masked) { + // The mask is the number of bytes of the value, including the current byte. + const valueLength = (masked >> 14) - 1; + // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + if (cp !== CODE_POINTS.SEMICOLON && + this._isCharacterReferenceInAttribute() && + isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) { + //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after + //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes. + result = [CODE_POINTS.AMPERSAND]; + // Skip over the value. + i += valueLength; + } + else { + // If this is a surrogate pair, consume the next two bytes. + result = + valueLength === 0 + ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH] + : valueLength === 1 + ? [htmlDecodeTree[++i]] + : [htmlDecodeTree[++i], htmlDecodeTree[++i]]; + excess = 0; + withoutSemicolon = cp !== CODE_POINTS.SEMICOLON; + } + if (valueLength === 0) { + // If the value is zero-length, we're done. + this._consume(); + break; + } + } + } + this._unconsume(excess); + if (withoutSemicolon && !this.preprocessor.endOfChunkHit) { + this._err(ERR.missingSemicolonAfterCharacterReference); + } + // We want to emit the error above on the code point after the entity. + // We always consume one code point too many in the loop, and we wait to + // unconsume it until after the error is emitted. + this._unconsume(1); + return result; + } + _isCharacterReferenceInAttribute() { + return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || + this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || + this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED); + } + _flushCodePointConsumedAsCharacterReference(cp) { + if (this._isCharacterReferenceInAttribute()) { + this.currentAttr.value += String.fromCodePoint(cp); + } + else { + this._emitCodePoint(cp); + } + } + // Calling states this way turns out to be much faster than any other approach. + _callState(cp) { + switch (this.state) { + case State.DATA: { + this._stateData(cp); + break; + } + case State.RCDATA: { + this._stateRcdata(cp); + break; + } + case State.RAWTEXT: { + this._stateRawtext(cp); + break; + } + case State.SCRIPT_DATA: { + this._stateScriptData(cp); + break; + } + case State.PLAINTEXT: { + this._statePlaintext(cp); + break; + } + case State.TAG_OPEN: { + this._stateTagOpen(cp); + break; + } + case State.END_TAG_OPEN: { + this._stateEndTagOpen(cp); + break; + } + case State.TAG_NAME: { + this._stateTagName(cp); + break; + } + case State.RCDATA_LESS_THAN_SIGN: { + this._stateRcdataLessThanSign(cp); + break; + } + case State.RCDATA_END_TAG_OPEN: { + this._stateRcdataEndTagOpen(cp); + break; + } + case State.RCDATA_END_TAG_NAME: { + this._stateRcdataEndTagName(cp); + break; + } + case State.RAWTEXT_LESS_THAN_SIGN: { + this._stateRawtextLessThanSign(cp); + break; + } + case State.RAWTEXT_END_TAG_OPEN: { + this._stateRawtextEndTagOpen(cp); + break; + } + case State.RAWTEXT_END_TAG_NAME: { + this._stateRawtextEndTagName(cp); + break; + } + case State.SCRIPT_DATA_LESS_THAN_SIGN: { + this._stateScriptDataLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_END_TAG_OPEN: { + this._stateScriptDataEndTagOpen(cp); + break; + } + case State.SCRIPT_DATA_END_TAG_NAME: { + this._stateScriptDataEndTagName(cp); + break; + } + case State.SCRIPT_DATA_ESCAPE_START: { + this._stateScriptDataEscapeStart(cp); + break; + } + case State.SCRIPT_DATA_ESCAPE_START_DASH: { + this._stateScriptDataEscapeStartDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED: { + this._stateScriptDataEscaped(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_DASH: { + this._stateScriptDataEscapedDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_DASH_DASH: { + this._stateScriptDataEscapedDashDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { + this._stateScriptDataEscapedLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { + this._stateScriptDataEscapedEndTagOpen(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { + this._stateScriptDataEscapedEndTagName(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: { + this._stateScriptDataDoubleEscapeStart(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED: { + this._stateScriptDataDoubleEscaped(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { + this._stateScriptDataDoubleEscapedDash(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { + this._stateScriptDataDoubleEscapedDashDash(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { + this._stateScriptDataDoubleEscapedLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: { + this._stateScriptDataDoubleEscapeEnd(cp); + break; + } + case State.BEFORE_ATTRIBUTE_NAME: { + this._stateBeforeAttributeName(cp); + break; + } + case State.ATTRIBUTE_NAME: { + this._stateAttributeName(cp); + break; + } + case State.AFTER_ATTRIBUTE_NAME: { + this._stateAfterAttributeName(cp); + break; + } + case State.BEFORE_ATTRIBUTE_VALUE: { + this._stateBeforeAttributeValue(cp); + break; + } + case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { + this._stateAttributeValueDoubleQuoted(cp); + break; + } + case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: { + this._stateAttributeValueSingleQuoted(cp); + break; + } + case State.ATTRIBUTE_VALUE_UNQUOTED: { + this._stateAttributeValueUnquoted(cp); + break; + } + case State.AFTER_ATTRIBUTE_VALUE_QUOTED: { + this._stateAfterAttributeValueQuoted(cp); + break; + } + case State.SELF_CLOSING_START_TAG: { + this._stateSelfClosingStartTag(cp); + break; + } + case State.BOGUS_COMMENT: { + this._stateBogusComment(cp); + break; + } + case State.MARKUP_DECLARATION_OPEN: { + this._stateMarkupDeclarationOpen(cp); + break; + } + case State.COMMENT_START: { + this._stateCommentStart(cp); + break; + } + case State.COMMENT_START_DASH: { + this._stateCommentStartDash(cp); + break; + } + case State.COMMENT: { + this._stateComment(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN: { + this._stateCommentLessThanSign(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG: { + this._stateCommentLessThanSignBang(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: { + this._stateCommentLessThanSignBangDash(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { + this._stateCommentLessThanSignBangDashDash(cp); + break; + } + case State.COMMENT_END_DASH: { + this._stateCommentEndDash(cp); + break; + } + case State.COMMENT_END: { + this._stateCommentEnd(cp); + break; + } + case State.COMMENT_END_BANG: { + this._stateCommentEndBang(cp); + break; + } + case State.DOCTYPE: { + this._stateDoctype(cp); + break; + } + case State.BEFORE_DOCTYPE_NAME: { + this._stateBeforeDoctypeName(cp); + break; + } + case State.DOCTYPE_NAME: { + this._stateDoctypeName(cp); + break; + } + case State.AFTER_DOCTYPE_NAME: { + this._stateAfterDoctypeName(cp); + break; + } + case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: { + this._stateAfterDoctypePublicKeyword(cp); + break; + } + case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { + this._stateBeforeDoctypePublicIdentifier(cp); + break; + } + case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { + this._stateDoctypePublicIdentifierDoubleQuoted(cp); + break; + } + case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { + this._stateDoctypePublicIdentifierSingleQuoted(cp); + break; + } + case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { + this._stateAfterDoctypePublicIdentifier(cp); + break; + } + case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { + this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); + break; + } + case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: { + this._stateAfterDoctypeSystemKeyword(cp); + break; + } + case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { + this._stateBeforeDoctypeSystemIdentifier(cp); + break; + } + case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { + this._stateDoctypeSystemIdentifierDoubleQuoted(cp); + break; + } + case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { + this._stateDoctypeSystemIdentifierSingleQuoted(cp); + break; + } + case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { + this._stateAfterDoctypeSystemIdentifier(cp); + break; + } + case State.BOGUS_DOCTYPE: { + this._stateBogusDoctype(cp); + break; + } + case State.CDATA_SECTION: { + this._stateCdataSection(cp); + break; + } + case State.CDATA_SECTION_BRACKET: { + this._stateCdataSectionBracket(cp); + break; + } + case State.CDATA_SECTION_END: { + this._stateCdataSectionEnd(cp); + break; + } + case State.CHARACTER_REFERENCE: { + this._stateCharacterReference(cp); + break; + } + case State.NAMED_CHARACTER_REFERENCE: { + this._stateNamedCharacterReference(cp); + break; + } + case State.AMBIGUOUS_AMPERSAND: { + this._stateAmbiguousAmpersand(cp); + break; + } + case State.NUMERIC_CHARACTER_REFERENCE: { + this._stateNumericCharacterReference(cp); + break; + } + case State.HEXADEMICAL_CHARACTER_REFERENCE_START: { + this._stateHexademicalCharacterReferenceStart(cp); + break; + } + case State.HEXADEMICAL_CHARACTER_REFERENCE: { + this._stateHexademicalCharacterReference(cp); + break; + } + case State.DECIMAL_CHARACTER_REFERENCE: { + this._stateDecimalCharacterReference(cp); + break; + } + case State.NUMERIC_CHARACTER_REFERENCE_END: { + this._stateNumericCharacterReferenceEnd(cp); + break; + } + default: { + throw new Error('Unknown state'); + } + } + } + // State machine + // Data state + //------------------------------------------------------------------ + _stateData(cp) { + switch (cp) { + case CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.TAG_OPEN; + break; + } + case CODE_POINTS.AMPERSAND: { + this.returnState = State.DATA; + this.state = State.CHARACTER_REFERENCE; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this._emitCodePoint(cp); + break; + } + case CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // RCDATA state + //------------------------------------------------------------------ + _stateRcdata(cp) { + switch (cp) { + case CODE_POINTS.AMPERSAND: { + this.returnState = State.RCDATA; + this.state = State.CHARACTER_REFERENCE; + break; + } + case CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.RCDATA_LESS_THAN_SIGN; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this._emitChars(REPLACEMENT_CHARACTER); + break; + } + case CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // RAWTEXT state + //------------------------------------------------------------------ + _stateRawtext(cp) { + switch (cp) { + case CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.RAWTEXT_LESS_THAN_SIGN; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this._emitChars(REPLACEMENT_CHARACTER); + break; + } + case CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data state + //------------------------------------------------------------------ + _stateScriptData(cp) { + switch (cp) { + case CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this._emitChars(REPLACEMENT_CHARACTER); + break; + } + case CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // PLAINTEXT state + //------------------------------------------------------------------ + _statePlaintext(cp) { + switch (cp) { + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this._emitChars(REPLACEMENT_CHARACTER); + break; + } + case CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Tag open state + //------------------------------------------------------------------ + _stateTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createStartTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } + else + switch (cp) { + case CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.MARKUP_DECLARATION_OPEN; + break; + } + case CODE_POINTS.SOLIDUS: { + this.state = State.END_TAG_OPEN; + break; + } + case CODE_POINTS.QUESTION_MARK: { + this._err(ERR.unexpectedQuestionMarkInsteadOfTagName); + this._createCommentToken(1); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofBeforeTagName); + this._emitChars('<'); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.invalidFirstCharacterOfTagName); + this._emitChars('<'); + this.state = State.DATA; + this._stateData(cp); + } + } + } + // End tag open state + //------------------------------------------------------------------ + _stateEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createEndTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } + else + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingEndTagName); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofBeforeTagName); + this._emitChars(''); + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitChars(REPLACEMENT_CHARACTER); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data escaped less-than sign state + //------------------------------------------------------------------ + _stateScriptDataEscapedLessThanSign(cp) { + if (cp === CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; + } + else if (isAsciiLetter(cp)) { + this._emitChars('<'); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; + this._stateScriptDataDoubleEscapeStart(cp); + } + else { + this._emitChars('<'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data escaped end tag open state + //------------------------------------------------------------------ + _stateScriptDataEscapedEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; + this._stateScriptDataEscapedEndTagName(cp); + } + else { + this._emitChars(''); + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitChars(REPLACEMENT_CHARACTER); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data double escaped less-than sign state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedLessThanSign(cp) { + if (cp === CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; + this._emitChars('/'); + } + else { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + // Script data double escape end state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapeEnd(cp) { + if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && + isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { + this._emitCodePoint(cp); + for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { + this._emitCodePoint(this._consume()); + } + this.state = State.SCRIPT_DATA_ESCAPED; + } + else if (!this._ensureHibernation()) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + // Before attribute name state + //------------------------------------------------------------------ + _stateBeforeAttributeName(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.SOLIDUS: + case CODE_POINTS.GREATER_THAN_SIGN: + case CODE_POINTS.EOF: { + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + } + case CODE_POINTS.EQUALS_SIGN: { + this._err(ERR.unexpectedEqualsSignBeforeAttributeName); + this._createAttr('='); + this.state = State.ATTRIBUTE_NAME; + break; + } + default: { + this._createAttr(''); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + } + // Attribute name state + //------------------------------------------------------------------ + _stateAttributeName(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + case CODE_POINTS.SOLIDUS: + case CODE_POINTS.GREATER_THAN_SIGN: + case CODE_POINTS.EOF: { + this._leaveAttrName(); + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + } + case CODE_POINTS.EQUALS_SIGN: { + this._leaveAttrName(); + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + } + case CODE_POINTS.QUOTATION_MARK: + case CODE_POINTS.APOSTROPHE: + case CODE_POINTS.LESS_THAN_SIGN: { + this._err(ERR.unexpectedCharacterInAttributeName); + this.currentAttr.name += String.fromCodePoint(cp); + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.name += REPLACEMENT_CHARACTER; + break; + } + default: { + this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // After attribute name state + //------------------------------------------------------------------ + _stateAfterAttributeName(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.SOLIDUS: { + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case CODE_POINTS.EQUALS_SIGN: { + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._createAttr(''); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + } + // Before attribute value state + //------------------------------------------------------------------ + _stateBeforeAttributeValue(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.QUOTATION_MARK: { + this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingAttributeValue); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + default: { + this.state = State.ATTRIBUTE_VALUE_UNQUOTED; + this._stateAttributeValueUnquoted(cp); + } + } + } + // Attribute value (double-quoted) state + //------------------------------------------------------------------ + _stateAttributeValueDoubleQuoted(cp) { + switch (cp) { + case CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + } + case CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.value += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // Attribute value (single-quoted) state + //------------------------------------------------------------------ + _stateAttributeValueSingleQuoted(cp) { + switch (cp) { + case CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + } + case CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.value += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // Attribute value (unquoted) state + //------------------------------------------------------------------ + _stateAttributeValueUnquoted(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.value += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.QUOTATION_MARK: + case CODE_POINTS.APOSTROPHE: + case CODE_POINTS.LESS_THAN_SIGN: + case CODE_POINTS.EQUALS_SIGN: + case CODE_POINTS.GRAVE_ACCENT: { + this._err(ERR.unexpectedCharacterInUnquotedAttributeValue); + this.currentAttr.value += String.fromCodePoint(cp); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // After attribute value (quoted) state + //------------------------------------------------------------------ + _stateAfterAttributeValueQuoted(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case CODE_POINTS.SOLIDUS: { + this._leaveAttrValue(); + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingWhitespaceBetweenAttributes); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + } + // Self-closing start tag state + //------------------------------------------------------------------ + _stateSelfClosingStartTag(cp) { + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + const token = this.currentToken; + token.selfClosing = true; + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.unexpectedSolidusInTag); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + } + // Bogus comment state + //------------------------------------------------------------------ + _stateBogusComment(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case CODE_POINTS.EOF: { + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.data += REPLACEMENT_CHARACTER; + break; + } + default: { + token.data += String.fromCodePoint(cp); + } + } + } + // Markup declaration open state + //------------------------------------------------------------------ + _stateMarkupDeclarationOpen(cp) { + if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) { + this._createCommentToken(SEQUENCES.DASH_DASH.length + 1); + this.state = State.COMMENT_START; + } + else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) { + // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here. + this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1); + this.state = State.DOCTYPE; + } + else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) { + if (this.inForeignNode) { + this.state = State.CDATA_SECTION; + } + else { + this._err(ERR.cdataInHtmlContent); + this._createCommentToken(SEQUENCES.CDATA_START.length + 1); + this.currentToken.data = '[CDATA['; + this.state = State.BOGUS_COMMENT; + } + } + //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup + //results are no longer valid and we will need to start over. + else if (!this._ensureHibernation()) { + this._err(ERR.incorrectlyOpenedComment); + this._createCommentToken(2); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + } + } + // Comment start state + //------------------------------------------------------------------ + _stateCommentStart(cp) { + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_START_DASH; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + const token = this.currentToken; + this.emitCurrentComment(token); + break; + } + default: { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment start dash state + //------------------------------------------------------------------ + _stateCommentStartDash(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '-'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment state + //------------------------------------------------------------------ + _stateComment(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END_DASH; + break; + } + case CODE_POINTS.LESS_THAN_SIGN: { + token.data += '<'; + this.state = State.COMMENT_LESS_THAN_SIGN; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.data += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += String.fromCodePoint(cp); + } + } + } + // Comment less-than sign state + //------------------------------------------------------------------ + _stateCommentLessThanSign(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.EXCLAMATION_MARK: { + token.data += '!'; + this.state = State.COMMENT_LESS_THAN_SIGN_BANG; + break; + } + case CODE_POINTS.LESS_THAN_SIGN: { + token.data += '<'; + break; + } + default: { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment less-than sign bang state + //------------------------------------------------------------------ + _stateCommentLessThanSignBang(cp) { + if (cp === CODE_POINTS.HYPHEN_MINUS) { + this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; + } + else { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + // Comment less-than sign bang dash state + //------------------------------------------------------------------ + _stateCommentLessThanSignBangDash(cp) { + if (cp === CODE_POINTS.HYPHEN_MINUS) { + this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; + } + else { + this.state = State.COMMENT_END_DASH; + this._stateCommentEndDash(cp); + } + } + // Comment less-than sign bang dash dash state + //------------------------------------------------------------------ + _stateCommentLessThanSignBangDashDash(cp) { + if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) { + this._err(ERR.nestedComment); + } + this.state = State.COMMENT_END; + this._stateCommentEnd(cp); + } + // Comment end dash state + //------------------------------------------------------------------ + _stateCommentEndDash(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '-'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment end state + //------------------------------------------------------------------ + _stateCommentEnd(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.COMMENT_END_BANG; + break; + } + case CODE_POINTS.HYPHEN_MINUS: { + token.data += '-'; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '--'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment end bang state + //------------------------------------------------------------------ + _stateCommentEndBang(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: { + token.data += '--!'; + this.state = State.COMMENT_END_DASH; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.incorrectlyClosedComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '--!'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // DOCTYPE state + //------------------------------------------------------------------ + _stateDoctype(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_NAME; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingWhitespaceBeforeDoctypeName); + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + } + } + } + // Before DOCTYPE name state + //------------------------------------------------------------------ + _stateBeforeDoctypeName(cp) { + if (isAsciiUpper(cp)) { + this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); + this.state = State.DOCTYPE_NAME; + } + else + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + this._createDoctypeToken(REPLACEMENT_CHARACTER); + this.state = State.DOCTYPE_NAME; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingDoctypeName); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._createDoctypeToken(String.fromCodePoint(cp)); + this.state = State.DOCTYPE_NAME; + } + } + } + // DOCTYPE name state + //------------------------------------------------------------------ + _stateDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this.state = State.AFTER_DOCTYPE_NAME; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.name += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // After DOCTYPE name state + //------------------------------------------------------------------ + _stateAfterDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) { + this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; + } + else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) { + this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; + } + //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup + //results are no longer valid and we will need to start over. + else if (!this._ensureHibernation()) { + this._err(ERR.invalidCharacterSequenceAfterDoctypeName); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + } + // After DOCTYPE public keyword state + //------------------------------------------------------------------ + _stateAfterDoctypePublicKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case CODE_POINTS.QUOTATION_MARK: { + this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Before DOCTYPE public identifier state + //------------------------------------------------------------------ + _stateBeforeDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.QUOTATION_MARK: { + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // DOCTYPE public identifier (double-quoted) state + //------------------------------------------------------------------ + _stateDoctypePublicIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.publicId += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.publicId += String.fromCodePoint(cp); + } + } + } + // DOCTYPE public identifier (single-quoted) state + //------------------------------------------------------------------ + _stateDoctypePublicIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.publicId += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.publicId += String.fromCodePoint(cp); + } + } + } + // After DOCTYPE public identifier state + //------------------------------------------------------------------ + _stateAfterDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.QUOTATION_MARK: { + this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Between DOCTYPE public and system identifiers state + //------------------------------------------------------------------ + _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.QUOTATION_MARK: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // After DOCTYPE system keyword state + //------------------------------------------------------------------ + _stateAfterDoctypeSystemKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case CODE_POINTS.QUOTATION_MARK: { + this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Before DOCTYPE system identifier state + //------------------------------------------------------------------ + _stateBeforeDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.QUOTATION_MARK: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case CODE_POINTS.APOSTROPHE: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // DOCTYPE system identifier (double-quoted) state + //------------------------------------------------------------------ + _stateDoctypeSystemIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.systemId += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.systemId += String.fromCodePoint(cp); + } + } + } + // DOCTYPE system identifier (single-quoted) state + //------------------------------------------------------------------ + _stateDoctypeSystemIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + token.systemId += REPLACEMENT_CHARACTER; + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.systemId += String.fromCodePoint(cp); + } + } + } + // After DOCTYPE system identifier state + //------------------------------------------------------------------ + _stateAfterDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Bogus DOCTYPE state + //------------------------------------------------------------------ + _stateBogusDoctype(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.NULL: { + this._err(ERR.unexpectedNullCharacter); + break; + } + case CODE_POINTS.EOF: { + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + // Do nothing + } + } + // CDATA section state + //------------------------------------------------------------------ + _stateCdataSection(cp) { + switch (cp) { + case CODE_POINTS.RIGHT_SQUARE_BRACKET: { + this.state = State.CDATA_SECTION_BRACKET; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInCdata); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // CDATA section bracket state + //------------------------------------------------------------------ + _stateCdataSectionBracket(cp) { + if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) { + this.state = State.CDATA_SECTION_END; + } + else { + this._emitChars(']'); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + // CDATA section end state + //------------------------------------------------------------------ + _stateCdataSectionEnd(cp) { + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + break; + } + case CODE_POINTS.RIGHT_SQUARE_BRACKET: { + this._emitChars(']'); + break; + } + default: { + this._emitChars(']]'); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + } + // Character reference state + //------------------------------------------------------------------ + _stateCharacterReference(cp) { + if (cp === CODE_POINTS.NUMBER_SIGN) { + this.state = State.NUMERIC_CHARACTER_REFERENCE; + } + else if (isAsciiAlphaNumeric(cp)) { + this.state = State.NAMED_CHARACTER_REFERENCE; + this._stateNamedCharacterReference(cp); + } + else { + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); + this._reconsumeInState(this.returnState, cp); + } + } + // Named character reference state + //------------------------------------------------------------------ + _stateNamedCharacterReference(cp) { + const matchResult = this._matchNamedCharacterReference(cp); + //NOTE: Matching can be abrupted by hibernation. In that case, match + //results are no longer valid and we will need to start over. + if (this._ensureHibernation()) ; + else if (matchResult) { + for (let i = 0; i < matchResult.length; i++) { + this._flushCodePointConsumedAsCharacterReference(matchResult[i]); + } + this.state = this.returnState; + } + else { + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); + this.state = State.AMBIGUOUS_AMPERSAND; + } + } + // Ambiguos ampersand state + //------------------------------------------------------------------ + _stateAmbiguousAmpersand(cp) { + if (isAsciiAlphaNumeric(cp)) { + this._flushCodePointConsumedAsCharacterReference(cp); + } + else { + if (cp === CODE_POINTS.SEMICOLON) { + this._err(ERR.unknownNamedCharacterReference); + } + this._reconsumeInState(this.returnState, cp); + } + } + // Numeric character reference state + //------------------------------------------------------------------ + _stateNumericCharacterReference(cp) { + this.charRefCode = 0; + if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) { + this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START; + } + // Inlined decimal character reference start state + else if (isAsciiDigit(cp)) { + this.state = State.DECIMAL_CHARACTER_REFERENCE; + this._stateDecimalCharacterReference(cp); + } + else { + this._err(ERR.absenceOfDigitsInNumericCharacterReference); + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN); + this._reconsumeInState(this.returnState, cp); + } + } + // Hexademical character reference start state + //------------------------------------------------------------------ + _stateHexademicalCharacterReferenceStart(cp) { + if (isAsciiHexDigit(cp)) { + this.state = State.HEXADEMICAL_CHARACTER_REFERENCE; + this._stateHexademicalCharacterReference(cp); + } + else { + this._err(ERR.absenceOfDigitsInNumericCharacterReference); + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN); + this._unconsume(2); + this.state = this.returnState; + } + } + // Hexademical character reference state + //------------------------------------------------------------------ + _stateHexademicalCharacterReference(cp) { + if (isAsciiUpperHexDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x37; + } + else if (isAsciiLowerHexDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x57; + } + else if (isAsciiDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x30; + } + else if (cp === CODE_POINTS.SEMICOLON) { + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + } + else { + this._err(ERR.missingSemicolonAfterCharacterReference); + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + this._stateNumericCharacterReferenceEnd(cp); + } + } + // Decimal character reference state + //------------------------------------------------------------------ + _stateDecimalCharacterReference(cp) { + if (isAsciiDigit(cp)) { + this.charRefCode = this.charRefCode * 10 + cp - 0x30; + } + else if (cp === CODE_POINTS.SEMICOLON) { + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + } + else { + this._err(ERR.missingSemicolonAfterCharacterReference); + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + this._stateNumericCharacterReferenceEnd(cp); + } + } + // Numeric character reference end state + //------------------------------------------------------------------ + _stateNumericCharacterReferenceEnd(cp) { + if (this.charRefCode === CODE_POINTS.NULL) { + this._err(ERR.nullCharacterReference); + this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if (this.charRefCode > 1114111) { + this._err(ERR.characterReferenceOutsideUnicodeRange); + this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if (isSurrogate(this.charRefCode)) { + this._err(ERR.surrogateCharacterReference); + this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if (isUndefinedCodePoint(this.charRefCode)) { + this._err(ERR.noncharacterCharacterReference); + } + else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) { + this._err(ERR.controlCharacterReference); + const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode); + if (replacement !== undefined) { + this.charRefCode = replacement; + } + } + this._flushCodePointConsumedAsCharacterReference(this.charRefCode); + this._reconsumeInState(this.returnState, cp); + } +} + +//Element utils +const IMPLICIT_END_TAG_REQUIRED = new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]); +const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([ + ...IMPLICIT_END_TAG_REQUIRED, + TAG_ID.CAPTION, + TAG_ID.COLGROUP, + TAG_ID.TBODY, + TAG_ID.TD, + TAG_ID.TFOOT, + TAG_ID.TH, + TAG_ID.THEAD, + TAG_ID.TR, +]); +const SCOPING_ELEMENT_NS = new Map([ + [TAG_ID.APPLET, NS.HTML], + [TAG_ID.CAPTION, NS.HTML], + [TAG_ID.HTML, NS.HTML], + [TAG_ID.MARQUEE, NS.HTML], + [TAG_ID.OBJECT, NS.HTML], + [TAG_ID.TABLE, NS.HTML], + [TAG_ID.TD, NS.HTML], + [TAG_ID.TEMPLATE, NS.HTML], + [TAG_ID.TH, NS.HTML], + [TAG_ID.ANNOTATION_XML, NS.MATHML], + [TAG_ID.MI, NS.MATHML], + [TAG_ID.MN, NS.MATHML], + [TAG_ID.MO, NS.MATHML], + [TAG_ID.MS, NS.MATHML], + [TAG_ID.MTEXT, NS.MATHML], + [TAG_ID.DESC, NS.SVG], + [TAG_ID.FOREIGN_OBJECT, NS.SVG], + [TAG_ID.TITLE, NS.SVG], +]); +const NAMED_HEADERS = [TAG_ID.H1, TAG_ID.H2, TAG_ID.H3, TAG_ID.H4, TAG_ID.H5, TAG_ID.H6]; +const TABLE_ROW_CONTEXT = [TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]; +const TABLE_BODY_CONTEXT = [TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]; +const TABLE_CONTEXT = [TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]; +const TABLE_CELLS = [TAG_ID.TD, TAG_ID.TH]; +//Stack of open elements +class OpenElementStack { + get currentTmplContentOrNode() { + return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; + } + constructor(document, treeAdapter, handler) { + this.treeAdapter = treeAdapter; + this.handler = handler; + this.items = []; + this.tagIDs = []; + this.stackTop = -1; + this.tmplCount = 0; + this.currentTagId = TAG_ID.UNKNOWN; + this.current = document; + } + //Index of element + _indexOf(element) { + return this.items.lastIndexOf(element, this.stackTop); + } + //Update current element + _isInTemplate() { + return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; + } + _updateCurrentElement() { + this.current = this.items[this.stackTop]; + this.currentTagId = this.tagIDs[this.stackTop]; + } + //Mutations + push(element, tagID) { + this.stackTop++; + this.items[this.stackTop] = element; + this.current = element; + this.tagIDs[this.stackTop] = tagID; + this.currentTagId = tagID; + if (this._isInTemplate()) { + this.tmplCount++; + } + this.handler.onItemPush(element, tagID, true); + } + pop() { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) { + this.tmplCount--; + } + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, true); + } + replace(oldElement, newElement) { + const idx = this._indexOf(oldElement); + this.items[idx] = newElement; + if (idx === this.stackTop) { + this.current = newElement; + } + } + insertAfter(referenceElement, newElement, newElementID) { + const insertionIdx = this._indexOf(referenceElement) + 1; + this.items.splice(insertionIdx, 0, newElement); + this.tagIDs.splice(insertionIdx, 0, newElementID); + this.stackTop++; + if (insertionIdx === this.stackTop) { + this._updateCurrentElement(); + } + this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); + } + popUntilTagNamePopped(tagName) { + let targetIdx = this.stackTop + 1; + do { + targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); + } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); + this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); + } + shortenToLength(idx) { + while (this.stackTop >= idx) { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) { + this.tmplCount -= 1; + } + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, this.stackTop < idx); + } + } + popUntilElementPopped(element) { + const idx = this._indexOf(element); + this.shortenToLength(idx < 0 ? 0 : idx); + } + popUntilPopped(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx < 0 ? 0 : idx); + } + popUntilNumberedHeaderPopped() { + this.popUntilPopped(NAMED_HEADERS, NS.HTML); + } + popUntilTableCellPopped() { + this.popUntilPopped(TABLE_CELLS, NS.HTML); + } + popAllUpToHtmlElement() { + //NOTE: here we assume that the root element is always first in the open element stack, so + //we perform this fast stack clean up. + this.tmplCount = 0; + this.shortenToLength(1); + } + _indexOfTagNames(tagNames, namespace) { + for (let i = this.stackTop; i >= 0; i--) { + if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { + return i; + } + } + return -1; + } + clearBackTo(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx + 1); + } + clearBackToTableContext() { + this.clearBackTo(TABLE_CONTEXT, NS.HTML); + } + clearBackToTableBodyContext() { + this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); + } + clearBackToTableRowContext() { + this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); + } + remove(element) { + const idx = this._indexOf(element); + if (idx >= 0) { + if (idx === this.stackTop) { + this.pop(); + } + else { + this.items.splice(idx, 1); + this.tagIDs.splice(idx, 1); + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(element, false); + } + } + } + //Search + tryPeekProperlyNestedBodyElement() { + //Properly nested element (should be second element in stack). + return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null; + } + contains(element) { + return this._indexOf(element) > -1; + } + getCommonAncestor(element) { + const elementIdx = this._indexOf(element) - 1; + return elementIdx >= 0 ? this.items[elementIdx] : null; + } + isRootHtmlElementCurrent() { + return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML; + } + //Element in scope + hasInScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === NS.HTML) { + return true; + } + if (SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasNumberedHeaderInScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (isNumberedHeader(tn) && ns === NS.HTML) { + return true; + } + if (SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInListItemScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === NS.HTML) { + return true; + } + if (((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInButtonScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === NS.HTML) { + return true; + } + if ((tn === TAG_ID.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInTableScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== NS.HTML) { + continue; + } + if (tn === tagName) { + return true; + } + if (tn === TAG_ID.TABLE || tn === TAG_ID.TEMPLATE || tn === TAG_ID.HTML) { + return false; + } + } + return true; + } + hasTableBodyContextInTableScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== NS.HTML) { + continue; + } + if (tn === TAG_ID.TBODY || tn === TAG_ID.THEAD || tn === TAG_ID.TFOOT) { + return true; + } + if (tn === TAG_ID.TABLE || tn === TAG_ID.HTML) { + return false; + } + } + return true; + } + hasInSelectScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== NS.HTML) { + continue; + } + if (tn === tagName) { + return true; + } + if (tn !== TAG_ID.OPTION && tn !== TAG_ID.OPTGROUP) { + return false; + } + } + return true; + } + //Implied end tags + generateImpliedEndTags() { + while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { + this.pop(); + } + } + generateImpliedEndTagsThoroughly() { + while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { + this.pop(); + } + } + generateImpliedEndTagsWithExclusion(exclusionId) { + while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { + this.pop(); + } + } +} + +//Const +const NOAH_ARK_CAPACITY = 3; +var EntryType; +(function (EntryType) { + EntryType[EntryType["Marker"] = 0] = "Marker"; + EntryType[EntryType["Element"] = 1] = "Element"; +})(EntryType = EntryType || (EntryType = {})); +const MARKER = { type: EntryType.Marker }; +//List of formatting elements +class FormattingElementList { + constructor(treeAdapter) { + this.treeAdapter = treeAdapter; + this.entries = []; + this.bookmark = null; + } + //Noah Ark's condition + //OPTIMIZATION: at first we try to find possible candidates for exclusion using + //lightweight heuristics without thorough attributes check. + _getNoahArkConditionCandidates(newElement, neAttrs) { + const candidates = []; + const neAttrsLength = neAttrs.length; + const neTagName = this.treeAdapter.getTagName(newElement); + const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); + for (let i = 0; i < this.entries.length; i++) { + const entry = this.entries[i]; + if (entry.type === EntryType.Marker) { + break; + } + const { element } = entry; + if (this.treeAdapter.getTagName(element) === neTagName && + this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { + const elementAttrs = this.treeAdapter.getAttrList(element); + if (elementAttrs.length === neAttrsLength) { + candidates.push({ idx: i, attrs: elementAttrs }); + } + } + } + return candidates; + } + _ensureNoahArkCondition(newElement) { + if (this.entries.length < NOAH_ARK_CAPACITY) + return; + const neAttrs = this.treeAdapter.getAttrList(newElement); + const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); + if (candidates.length < NOAH_ARK_CAPACITY) + return; + //NOTE: build attrs map for the new element, so we can perform fast lookups + const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); + let validCandidates = 0; + //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met + for (let i = 0; i < candidates.length; i++) { + const candidate = candidates[i]; + // We know that `candidate.attrs.length === neAttrs.length` + if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { + validCandidates += 1; + if (validCandidates >= NOAH_ARK_CAPACITY) { + this.entries.splice(candidate.idx, 1); + } + } + } + } + //Mutations + insertMarker() { + this.entries.unshift(MARKER); + } + pushElement(element, token) { + this._ensureNoahArkCondition(element); + this.entries.unshift({ + type: EntryType.Element, + element, + token, + }); + } + insertElementAfterBookmark(element, token) { + const bookmarkIdx = this.entries.indexOf(this.bookmark); + this.entries.splice(bookmarkIdx, 0, { + type: EntryType.Element, + element, + token, + }); + } + removeEntry(entry) { + const entryIndex = this.entries.indexOf(entry); + if (entryIndex >= 0) { + this.entries.splice(entryIndex, 1); + } + } + /** + * Clears the list of formatting elements up to the last marker. + * + * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker + */ + clearToLastMarker() { + const markerIdx = this.entries.indexOf(MARKER); + if (markerIdx >= 0) { + this.entries.splice(0, markerIdx + 1); + } + else { + this.entries.length = 0; + } + } + //Search + getElementEntryInScopeWithTagName(tagName) { + const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName); + return entry && entry.type === EntryType.Element ? entry : null; + } + getElementEntry(element) { + return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); + } +} + +function createTextNode(value) { + return { + nodeName: '#text', + value, + parentNode: null, + }; +} +const defaultTreeAdapter = { + //Node construction + createDocument() { + return { + nodeName: '#document', + mode: DOCUMENT_MODE.NO_QUIRKS, + childNodes: [], + }; + }, + createDocumentFragment() { + return { + nodeName: '#document-fragment', + childNodes: [], + }; + }, + createElement(tagName, namespaceURI, attrs) { + return { + nodeName: tagName, + tagName, + attrs, + namespaceURI, + childNodes: [], + parentNode: null, + }; + }, + createCommentNode(data) { + return { + nodeName: '#comment', + data, + parentNode: null, + }; + }, + //Tree mutation + appendChild(parentNode, newNode) { + parentNode.childNodes.push(newNode); + newNode.parentNode = parentNode; + }, + insertBefore(parentNode, newNode, referenceNode) { + const insertionIdx = parentNode.childNodes.indexOf(referenceNode); + parentNode.childNodes.splice(insertionIdx, 0, newNode); + newNode.parentNode = parentNode; + }, + setTemplateContent(templateElement, contentElement) { + templateElement.content = contentElement; + }, + getTemplateContent(templateElement) { + return templateElement.content; + }, + setDocumentType(document, name, publicId, systemId) { + const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType'); + if (doctypeNode) { + doctypeNode.name = name; + doctypeNode.publicId = publicId; + doctypeNode.systemId = systemId; + } + else { + const node = { + nodeName: '#documentType', + name, + publicId, + systemId, + parentNode: null, + }; + defaultTreeAdapter.appendChild(document, node); + } + }, + setDocumentMode(document, mode) { + document.mode = mode; + }, + getDocumentMode(document) { + return document.mode; + }, + detachNode(node) { + if (node.parentNode) { + const idx = node.parentNode.childNodes.indexOf(node); + node.parentNode.childNodes.splice(idx, 1); + node.parentNode = null; + } + }, + insertText(parentNode, text) { + if (parentNode.childNodes.length > 0) { + const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; + if (defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + return; + } + } + defaultTreeAdapter.appendChild(parentNode, createTextNode(text)); + }, + insertTextBefore(parentNode, text, referenceNode) { + const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; + if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + } + else { + defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode); + } + }, + adoptAttributes(recipient, attrs) { + const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name)); + for (let j = 0; j < attrs.length; j++) { + if (!recipientAttrsMap.has(attrs[j].name)) { + recipient.attrs.push(attrs[j]); + } + } + }, + //Tree traversing + getFirstChild(node) { + return node.childNodes[0]; + }, + getChildNodes(node) { + return node.childNodes; + }, + getParentNode(node) { + return node.parentNode; + }, + getAttrList(element) { + return element.attrs; + }, + //Node data + getTagName(element) { + return element.tagName; + }, + getNamespaceURI(element) { + return element.namespaceURI; + }, + getTextNodeContent(textNode) { + return textNode.value; + }, + getCommentNodeContent(commentNode) { + return commentNode.data; + }, + getDocumentTypeNodeName(doctypeNode) { + return doctypeNode.name; + }, + getDocumentTypeNodePublicId(doctypeNode) { + return doctypeNode.publicId; + }, + getDocumentTypeNodeSystemId(doctypeNode) { + return doctypeNode.systemId; + }, + //Node types + isTextNode(node) { + return node.nodeName === '#text'; + }, + isCommentNode(node) { + return node.nodeName === '#comment'; + }, + isDocumentTypeNode(node) { + return node.nodeName === '#documentType'; + }, + isElementNode(node) { + return Object.prototype.hasOwnProperty.call(node, 'tagName'); + }, + // Source code location + setNodeSourceCodeLocation(node, location) { + node.sourceCodeLocation = location; + }, + getNodeSourceCodeLocation(node) { + return node.sourceCodeLocation; + }, + updateNodeSourceCodeLocation(node, endLocation) { + node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation }; + }, +}; + +//Const +const VALID_DOCTYPE_NAME = 'html'; +const VALID_SYSTEM_ID = 'about:legacy-compat'; +const QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd'; +const QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ + '+//silmaril//dtd html pro v0r11 19970101//', + '-//as//dtd html 3.0 aswedit + extensions//', + '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', + '-//ietf//dtd html 2.0 level 1//', + '-//ietf//dtd html 2.0 level 2//', + '-//ietf//dtd html 2.0 strict level 1//', + '-//ietf//dtd html 2.0 strict level 2//', + '-//ietf//dtd html 2.0 strict//', + '-//ietf//dtd html 2.0//', + '-//ietf//dtd html 2.1e//', + '-//ietf//dtd html 3.0//', + '-//ietf//dtd html 3.2 final//', + '-//ietf//dtd html 3.2//', + '-//ietf//dtd html 3//', + '-//ietf//dtd html level 0//', + '-//ietf//dtd html level 1//', + '-//ietf//dtd html level 2//', + '-//ietf//dtd html level 3//', + '-//ietf//dtd html strict level 0//', + '-//ietf//dtd html strict level 1//', + '-//ietf//dtd html strict level 2//', + '-//ietf//dtd html strict level 3//', + '-//ietf//dtd html strict//', + '-//ietf//dtd html//', + '-//metrius//dtd metrius presentational//', + '-//microsoft//dtd internet explorer 2.0 html strict//', + '-//microsoft//dtd internet explorer 2.0 html//', + '-//microsoft//dtd internet explorer 2.0 tables//', + '-//microsoft//dtd internet explorer 3.0 html strict//', + '-//microsoft//dtd internet explorer 3.0 html//', + '-//microsoft//dtd internet explorer 3.0 tables//', + '-//netscape comm. corp.//dtd html//', + '-//netscape comm. corp.//dtd strict html//', + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + '-//sq//dtd html 2.0 hotmetal + extensions//', + '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', + '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', + '-//spyglass//dtd html 2.0 extended//', + '-//sun microsystems corp.//dtd hotjava html//', + '-//sun microsystems corp.//dtd hotjava strict html//', + '-//w3c//dtd html 3 1995-03-24//', + '-//w3c//dtd html 3.2 draft//', + '-//w3c//dtd html 3.2 final//', + '-//w3c//dtd html 3.2//', + '-//w3c//dtd html 3.2s draft//', + '-//w3c//dtd html 4.0 frameset//', + '-//w3c//dtd html 4.0 transitional//', + '-//w3c//dtd html experimental 19960712//', + '-//w3c//dtd html experimental 970421//', + '-//w3c//dtd w3 html//', + '-//w3o//dtd w3 html 3.0//', + '-//webtechs//dtd mozilla html 2.0//', + '-//webtechs//dtd mozilla html//', +]; +const QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, + '-//w3c//dtd html 4.01 frameset//', + '-//w3c//dtd html 4.01 transitional//', +]; +const QUIRKS_MODE_PUBLIC_IDS = new Set([ + '-//w3o//dtd w3 html strict 3.0//en//', + '-/w3c/dtd html 4.0 transitional/en', + 'html', +]); +const LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//']; +const LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, + '-//w3c//dtd html 4.01 frameset//', + '-//w3c//dtd html 4.01 transitional//', +]; +//Utils +function hasPrefix(publicId, prefixes) { + return prefixes.some((prefix) => publicId.startsWith(prefix)); +} +//API +function isConforming(token) { + return (token.name === VALID_DOCTYPE_NAME && + token.publicId === null && + (token.systemId === null || token.systemId === VALID_SYSTEM_ID)); +} +function getDocumentMode(token) { + if (token.name !== VALID_DOCTYPE_NAME) { + return DOCUMENT_MODE.QUIRKS; + } + const { systemId } = token; + if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { + return DOCUMENT_MODE.QUIRKS; + } + let { publicId } = token; + if (publicId !== null) { + publicId = publicId.toLowerCase(); + if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { + return DOCUMENT_MODE.QUIRKS; + } + let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) { + return DOCUMENT_MODE.QUIRKS; + } + prefixes = + systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) { + return DOCUMENT_MODE.LIMITED_QUIRKS; + } + } + return DOCUMENT_MODE.NO_QUIRKS; +} + +//MIME types +const MIME_TYPES = { + TEXT_HTML: 'text/html', + APPLICATION_XML: 'application/xhtml+xml', +}; +//Attributes +const DEFINITION_URL_ATTR = 'definitionurl'; +const ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL'; +const SVG_ATTRS_ADJUSTMENT_MAP = new Map([ + 'attributeName', + 'attributeType', + 'baseFrequency', + 'baseProfile', + 'calcMode', + 'clipPathUnits', + 'diffuseConstant', + 'edgeMode', + 'filterUnits', + 'glyphRef', + 'gradientTransform', + 'gradientUnits', + 'kernelMatrix', + 'kernelUnitLength', + 'keyPoints', + 'keySplines', + 'keyTimes', + 'lengthAdjust', + 'limitingConeAngle', + 'markerHeight', + 'markerUnits', + 'markerWidth', + 'maskContentUnits', + 'maskUnits', + 'numOctaves', + 'pathLength', + 'patternContentUnits', + 'patternTransform', + 'patternUnits', + 'pointsAtX', + 'pointsAtY', + 'pointsAtZ', + 'preserveAlpha', + 'preserveAspectRatio', + 'primitiveUnits', + 'refX', + 'refY', + 'repeatCount', + 'repeatDur', + 'requiredExtensions', + 'requiredFeatures', + 'specularConstant', + 'specularExponent', + 'spreadMethod', + 'startOffset', + 'stdDeviation', + 'stitchTiles', + 'surfaceScale', + 'systemLanguage', + 'tableValues', + 'targetX', + 'targetY', + 'textLength', + 'viewBox', + 'viewTarget', + 'xChannelSelector', + 'yChannelSelector', + 'zoomAndPan', +].map((attr) => [attr.toLowerCase(), attr])); +const XML_ATTRS_ADJUSTMENT_MAP = new Map([ + ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }], + ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }], + ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }], + ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }], + ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }], + ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }], + ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }], + ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }], + ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }], + ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }], + ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }], + ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }], +]); +//SVG tag names adjustment map +const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ + 'altGlyph', + 'altGlyphDef', + 'altGlyphItem', + 'animateColor', + 'animateMotion', + 'animateTransform', + 'clipPath', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feDistantLight', + 'feFlood', + 'feFuncA', + 'feFuncB', + 'feFuncG', + 'feFuncR', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMergeNode', + 'feMorphology', + 'feOffset', + 'fePointLight', + 'feSpecularLighting', + 'feSpotLight', + 'feTile', + 'feTurbulence', + 'foreignObject', + 'glyphRef', + 'linearGradient', + 'radialGradient', + 'textPath', +].map((tn) => [tn.toLowerCase(), tn])); +//Tags that causes exit from foreign content +const EXITS_FOREIGN_CONTENT = new Set([ + TAG_ID.B, + TAG_ID.BIG, + TAG_ID.BLOCKQUOTE, + TAG_ID.BODY, + TAG_ID.BR, + TAG_ID.CENTER, + TAG_ID.CODE, + TAG_ID.DD, + TAG_ID.DIV, + TAG_ID.DL, + TAG_ID.DT, + TAG_ID.EM, + TAG_ID.EMBED, + TAG_ID.H1, + TAG_ID.H2, + TAG_ID.H3, + TAG_ID.H4, + TAG_ID.H5, + TAG_ID.H6, + TAG_ID.HEAD, + TAG_ID.HR, + TAG_ID.I, + TAG_ID.IMG, + TAG_ID.LI, + TAG_ID.LISTING, + TAG_ID.MENU, + TAG_ID.META, + TAG_ID.NOBR, + TAG_ID.OL, + TAG_ID.P, + TAG_ID.PRE, + TAG_ID.RUBY, + TAG_ID.S, + TAG_ID.SMALL, + TAG_ID.SPAN, + TAG_ID.STRONG, + TAG_ID.STRIKE, + TAG_ID.SUB, + TAG_ID.SUP, + TAG_ID.TABLE, + TAG_ID.TT, + TAG_ID.U, + TAG_ID.UL, + TAG_ID.VAR, +]); +//Check exit from foreign content +function causesExit(startTagToken) { + const tn = startTagToken.tagID; + const isFontWithAttrs = tn === TAG_ID.FONT && + startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE); + return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); +} +//Token adjustments +function adjustTokenMathMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + if (token.attrs[i].name === DEFINITION_URL_ATTR) { + token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; + break; + } + } +} +function adjustTokenSVGAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrName != null) { + token.attrs[i].name = adjustedAttrName; + } + } +} +function adjustTokenXMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrEntry) { + token.attrs[i].prefix = adjustedAttrEntry.prefix; + token.attrs[i].name = adjustedAttrEntry.name; + token.attrs[i].namespace = adjustedAttrEntry.namespace; + } + } +} +function adjustTokenSVGTagName(token) { + const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); + if (adjustedTagName != null) { + token.tagName = adjustedTagName; + token.tagID = getTagID(token.tagName); + } +} +//Integration points +function isMathMLTextIntegrationPoint(tn, ns) { + return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT); +} +function isHtmlIntegrationPoint(tn, ns, attrs) { + if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) { + for (let i = 0; i < attrs.length; i++) { + if (attrs[i].name === ATTRS.ENCODING) { + const value = attrs[i].value.toLowerCase(); + return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; + } + } + } + return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE); +} +function isIntegrationPoint(tn, ns, attrs, foreignNS) { + return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) || + ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns))); +} + +//Misc constants +const HIDDEN_INPUT_TYPE = 'hidden'; +//Adoption agency loops iteration count +const AA_OUTER_LOOP_ITER = 8; +const AA_INNER_LOOP_ITER = 3; +//Insertion modes +var InsertionMode; +(function (InsertionMode) { + InsertionMode[InsertionMode["INITIAL"] = 0] = "INITIAL"; + InsertionMode[InsertionMode["BEFORE_HTML"] = 1] = "BEFORE_HTML"; + InsertionMode[InsertionMode["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; + InsertionMode[InsertionMode["IN_HEAD"] = 3] = "IN_HEAD"; + InsertionMode[InsertionMode["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; + InsertionMode[InsertionMode["AFTER_HEAD"] = 5] = "AFTER_HEAD"; + InsertionMode[InsertionMode["IN_BODY"] = 6] = "IN_BODY"; + InsertionMode[InsertionMode["TEXT"] = 7] = "TEXT"; + InsertionMode[InsertionMode["IN_TABLE"] = 8] = "IN_TABLE"; + InsertionMode[InsertionMode["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; + InsertionMode[InsertionMode["IN_CAPTION"] = 10] = "IN_CAPTION"; + InsertionMode[InsertionMode["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; + InsertionMode[InsertionMode["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; + InsertionMode[InsertionMode["IN_ROW"] = 13] = "IN_ROW"; + InsertionMode[InsertionMode["IN_CELL"] = 14] = "IN_CELL"; + InsertionMode[InsertionMode["IN_SELECT"] = 15] = "IN_SELECT"; + InsertionMode[InsertionMode["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; + InsertionMode[InsertionMode["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; + InsertionMode[InsertionMode["AFTER_BODY"] = 18] = "AFTER_BODY"; + InsertionMode[InsertionMode["IN_FRAMESET"] = 19] = "IN_FRAMESET"; + InsertionMode[InsertionMode["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; + InsertionMode[InsertionMode["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; + InsertionMode[InsertionMode["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; +})(InsertionMode || (InsertionMode = {})); +const BASE_LOC = { + startLine: -1, + startCol: -1, + startOffset: -1, + endLine: -1, + endCol: -1, + endOffset: -1, +}; +const TABLE_STRUCTURE_TAGS = new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]); +const defaultParserOptions = { + scriptingEnabled: true, + sourceCodeLocationInfo: false, + treeAdapter: defaultTreeAdapter, + onParseError: null, +}; +//Parser +class Parser { + constructor(options, document, fragmentContext = null, scriptHandler = null) { + this.fragmentContext = fragmentContext; + this.scriptHandler = scriptHandler; + this.currentToken = null; + this.stopped = false; + this.insertionMode = InsertionMode.INITIAL; + this.originalInsertionMode = InsertionMode.INITIAL; + this.headElement = null; + this.formElement = null; + /** Indicates that the current node is not an element in the HTML namespace */ + this.currentNotInHTML = false; + /** + * The template insertion mode stack is maintained from the left. + * Ie. the topmost element will always have index 0. + */ + this.tmplInsertionModeStack = []; + this.pendingCharacterTokens = []; + this.hasNonWhitespacePendingCharacterToken = false; + this.framesetOk = true; + this.skipNextNewLine = false; + this.fosterParentingEnabled = false; + this.options = { + ...defaultParserOptions, + ...options, + }; + this.treeAdapter = this.options.treeAdapter; + this.onParseError = this.options.onParseError; + // Always enable location info if we report parse errors. + if (this.onParseError) { + this.options.sourceCodeLocationInfo = true; + } + this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); + this.tokenizer = new Tokenizer(this.options, this); + this.activeFormattingElements = new FormattingElementList(this.treeAdapter); + this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN; + this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); + this.openElements = new OpenElementStack(this.document, this.treeAdapter, this); + } + // API + static parse(html, options) { + const parser = new this(options); + parser.tokenizer.write(html, true); + return parser.document; + } + static getFragmentParser(fragmentContext, options) { + const opts = { + ...defaultParserOptions, + ...options, + }; + //NOTE: use a
  • *m*FNxO+wI` zzyIQ^4H2Ci?JpGzZdcDSGCn&-^V{$R-4Z1TE*=3iJFnIGtAGA(CSFGa|+ zzX7??4(gq9S>lj|UZY1p8DXpnrkvsZXpLh*(fsiCoCz8sT6?)!YJc@c=i6=C3?sG0 zCWF>P)i6KkMa_?u$7q2xO*c^bS9939%&lXC7LVr^Pn2rn6&ttNu;YyW{d`#bX#Kc8 z!hb=I@Xx_7^-YFU(a*3iG%G6@eQstak!rOk^!0&Rm9k)>-!tWjp#H+j;?h#8TO`bD z0!b`9x;ix4{a!m&q)|4)qw$bu9Io=w4)f7u=QlIGWfr`9*QpdsU5Xn=d^la{ICk&l zYDAABXs%H@G_QZL?BjegHP;2wVBBCxs+Kht-d^K>4M!#3Zg4wuvJ=JB*@+{ns8*vd6<2{N- z&!S9{dBX0!j8?Taw~gh(ea-fOo4L;SnE2$8BaewCFZQp=r7_36Mn0q#E{z9GHv*7@ z(w?(7mSw1vS=%p*cb-jSq;fjB1$mdsdDv{DAK_a7o%0WQWR#C)T_O{M1%{n8R#XrzP7#5*0_ry!OHAAkYpU; zwUy;~1(y+aH!9$r9&cZr>1;ANWGPe%+WpeV(vdXTAnVGv0 zVNZ$mM2Ti&Vp^Lr^GsxDx#SU^V|tG`<}M`#X3$UV?{I3*W&^<+o-_`oGsV;>4lZi@ z_euP`2GC=U-jOdUyUF0B%8h6_IZ~RGfTRZM-XO-9WJub}CUhHfC;^k)OMYj9$K@TTpIlP~zA(N(*`B%hE?`FP&>cp4$R#Pu( z>a1N+p6hXkpSd|X*N*E=7ba?42WFn9j}glz3m7@yqE8UW3*crK+foegiavCb${!oD zSIjeuq?1wNwv+r$6N()!+F}BGR<0qPLEMRI1lvn5<%siMG!R@F6)ERhP0##7sfhKxRdrcD3cyqPO*J z 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�nKT|Hc+vu$|oAsfDIagx8Go@H&k zNnGOE{1Q`A-bJp>a6%zr7Nc^kimamqxAfI6LhcKbzt(>LGTcO%(!^Ur58s!K2|mYE z^R#FbT(#SIJBtvO#c+njn;JMl9;z2FvJ7COR@)ocedJIlc>pL+7D}@3f@9c=2;Ko| zf2h)g_@lj{Wp3$ld$|)xdP(P+^d;nF`Rs={nl0ae+zqI1r!a@ⅇ)4_LU z78ZO;S(ETB&8viV^5BceaKj%c{hif=LM@^~QFx0qR|~4VZY!^~zg}3(-HqwNBy0O< zL?sM{%jfoNUlj^O$Os^|SE(#OiGnW^9W_@^S&XLiZLcSrQ=WSt^2pi-fK>>IiEyJn( z1emMTalg(k6G6(O(tNP@Y_=k7s z5g4R&7d9Nq2_90QxAb?rz=`IT-w^qGWOBI}-H;wt@d_r4E#KYWKRm0cAW*(U26}Gw{$62|-5ZSpqhLMO5)Bk8^VnA;OXKj_ds$w~9@^f(qt=V&)EuCgScO#dy3y;BaJ}a}jSP_MlOWBH{O|m< ze}(cBJTu|PVf0~`|0o1({dqPyAxDhhnK zMhE32omk%jME6q!^8lU-39s^yP>^K=3mjQ&Aa{jtDTvZh{_RY*2)t+5oHTWk&GsD{ zXrnk)<1OEa+u{|g=Cr>il2=6~{XAEuD?=^!-%01i3aZr=xnvcotth^C=90T}HBuVr z)p5x!5ZMdcj9*I0x?;B#e)k<=DZ#a;Y+wG83Y3A*Z`JSwm2o0fM#1ztXNKEz=j(2Hg=51F#0L8BPqKe7- zH)wamzgNQn^xDyKn6+$1(X2*+0HoLpYJRx$u5+2zM)aSt+<(T=&cn4X29!J*3R`m( zXBX!{VH=)T3o}f2BYCf^N|1bg&+=H>Q$kqJDQ&l1CN}8Q2Xh%A>cLKO1es{>!9!`b z=pEX#f$HqFUOd(X@i2BSHnJR-x**TZZ_3Nf_2=cp(tEQS{@DvZbMqbfKV&jDWQr%}gH!TEwewz~ICxWUK8Zn#b|K|ELhK~RQlk3d z{vsEN`WnpwxhrO2Ob|PxE%2)Kr=DAv3}l{!BVPlyoh^YW!yh9@RZ0GmLz^sBZx>2p zu^zO1$jma&Np`@Z6VAeBg7h3{K>=2WA{ChtODSgG9=wRL84MI1<0 zTpWP3cwX#>z4o?r?r6qIV{r|HHeBo8=iYGh_aN%Hi9k?jxnP;l8cx*5QhQ>tkhhCQ zPyHT*oc5f%>?aqTDE4D;ohY4mIcE#*LnJuUH#Ve<+KoP_!Orq4c}N4wxD&6PpDq+% z30s8jX>ly(>tJg}j{BAg(&%y-Z)$&+!;l!d9(K9(PZ%ZAKlgN2*SqWu3-ck!(6TtL zj7@QT*%CiwbZ~lIG-Yn6+W|!MoMD{t#MLeI)9dQu{Bm0EWN|sh;p*aQ6GwLCRS+@Hl_Q9bjYg$PRIGKH} zqF=0t7b>*kil>_ z)y1M#u5(gbJiX7VitTvkX{0`2!P6)|KY_eB_LJ!k52cmG4gZZ5!}baB2G}x&aQ+1m z5Ut_K$P6S+IQm3sXqu-RS8cJXl;%B{jKiQY1N`^14{|oN*)m{ET)sG`jr&{K#$BcN zx3E=QV(;(rHkj2cKC02Bk4JD@XZ80RgnXL_fx(t-E@_RSn(TZKnsotEm!#|ecs=u- zkK4MgZxbuqyocJ%qiwYKZT3ocv{~&wu^!zZCPU7&wfv`JxI z|J5k-xo#tC(F9UbHJpsv08Gd#WUyAv) zBXT!wD7y~YQtzzD4F%%I-$l~q7}U>bD*(5!AD#9iwjX`RVxnBPsmGqD`X6Lq|GF^+ z$KGMiR~^ zj4;g64k(k1<=O>2k=F4dJ=C?4iWa7j0kFjmwW#xu9>YRG6cnmDOD*b7J(>g47Aj~v#-A-gNoO|q-zU@l zyT6_VFcl7hH2hLUcJHr<<4CgKpHpisL1w$97i;T%N(^|C;2EC48}KI44|1EdGtAV9{!9e)az>&MZ+(8IqkK!3afZelOL5KShx|PJposB z7akH{4fH`ySw{wOObuOh%xz?v3$e%m8%}p-e_C)?l)xSEfj(FELHXNHL9uc z#f!WEs*t}RGcU_RM+mh{@!vA@o-`K-ahoYT<~F}A)!&(763ftjj%$-(`15Vqf8zI; z+QcOSN1=Q{n-w1EYr!?D)HwOSWalR`^BJ-Vvdm9q2oIFVuhuOO%FVt1!!)hoUqW|_ zZZVb55rAMOur)wU)1AOo$2SIXO}&hOoq-vT1hj=a<7_Gzt*6%J@drUS`Iln~U_b3& z*$$d|R~9A>S*SKQtEMKJIHrlyqnlbQ3C6wY6ukj%ZhkSKvpX}O3qJNHTlFfidcdgf zSsx=yjwJ!f+18yc<(ji$?oeknCa@J2!H>X%oiCbygl-9$P$ffYHjKA0pG_hr`-Z?< znF_pL;ffrhU0~Fb;i}5@P-ek-0r6Eb*I?%$0uSDnCbw z7h9zo_O)S^SAE`O<}~AwA3f&x{?V^I<|l6bepSqQe^By%mE5P)N~M0MNY9}x!XwIzki&x!HMTqC z+bY~zu2IqZN>8Yj{EGiSocA{0Uroj$Y;(rn242tD?g!MB?uTr^RWtnA{&r>x1%ZW{ z1S$YUjPI!%tj-Di#X%ts{v-1y^EVm3C9{76CkEQo^txxN(kaS6S;^n1=uAZ>@K5BA zrBxw|P2gL=xx^O-=As~bVGv&sBm?qy2i1;8@O{bnb=y`i$nZtUr~Jq^O|N?#u3=yZ zUrFyvX^vOnaqu4GPZZJc{B70*ZIFHb7C4CGe5v&J>6MGLSt)?ztkdDmkSj^ExBC%Y z)|zOx(Bb89B>k3%26*&}nCn7W!TD1G04&Ire zwP2ye@czXb+HLIw)dQNcg01s3NfDeUxtZn1Dq%h%XusHx3 zE(8+(J`28Iz>=`MC=O-3EmXt_uaeF>s5wCE{4;F-7y%RhDGc8w!LjLMk@=^PUx?^) zVO|Q6rwCkgN@Q;H`iIjUmZvw=r$@mVk&PN7v(OA9%2a28G%^Y>ehOjyNm#?tNVZ8~ zuWW5cIq>r^`2zj0a*vl;Nem9DgbxNiUZicuX6_oF#x<5L?tFxf+N|aNS3->8kx(XC@oy= zo7enJ3_A_Vt{@H%@efuR-h*d)nAt(FM zDZZh6VT8!auUC2-`^8PZdM670uEZa8<^a8a{85bf`e$6YRA-*?^MCd;kNV~j-+Rm# zuS8ZGm_}Yeazk8r#8;03ju0P4;Wa9}S}|LpX4oS(`0@F^zr;7|{jT$TGLDZU!x?8z zodQf5v7i1aGt_iE&aE~Zxu(a-CmE`p^sG^cy*g$R5oGH~rR+k2sampnEfG*1*z|h~ zvhu7YfME0U)rw|(qc{`;Mwi>>k*WfK$zUOLTSqY2bUGebA5@4kE%{QWXc#(T7+N2G zhGb-6h#DM?v2$QR+y;eV3tK4%$Z-(%B;1_TeUIaW?u(qZm!xx2wiw2()izlLRV^b* zZ+VFxq{b=Iz2IXVM3hLVs^u)vtr2w;jn)I2x=m|{p%68j9~Q3>IJm5|pk|Ozmy66) zk~xavQH;XB5UI13q3m`$Suqml?O_=GhUpvf1^QqoDb!Yx`4<`ticH~aQFD6F5RZyv zd~}vL^8EneRUSTm@};ZJW_`cHsXXf+hMUhM>O9EleNR3rO4NgYRCtd-JD6!B z?o6s9BoB=1BtBdCmx%%FD<}GFA+8Yda=WLMB7k9X76ypuBiYvPsy6r4Yvcw`1Op0< z>8{WY$lyV!L!vu%@SN~gGuB)7q7!^)!a&qXRP~yiH5|xpz?d9eCOi;|yM#N(7H|zF zhkfB>)xS^e5%1|Inf||Wv6>_I%s$XKUVR7XmAFvHWcvR`Y&s@0zu01WsPeG~%&Pvj zGS^B_exGn=bntAr?9j0qFyy~7=Q|E)l5>S+%G^$Ep+|x|E~&{Z2g`x_wA51SMUfn4 zuJl}BB+hfh%W-H#U~T|J1wGvLLm~kfsF^!UZV}3O+QlZ1DeB4jUM5sB7lE*Bv(a$X zsyi@Wg`dw^o`XX6`E>K>1QYEdjanzt^RPM&1=sI{jv}*3B3`v$jCyf67eI;XPdK`ifoa1 z#&gub)Ita9bzFiceMKr;~L1qVP{s@req`ObW@kgUu__KS7xRW(Hy$VrvhPQljaBp|e%E zQIs}yse6UIN0@s>aI2_p>QeVxW2f-#PIZTn4~R|ON^hy=}PWh{p zyiu83lz+3*w~!e~;uNq`av>v7fZ}oGZ&3P4K~BE8SHFs_lbiT`O$rgIU>O`=D;uU1=ZejCwVS2rL+b45amXU^EDe zttG6Rp<;wT98IdjjEwozBZ*`*bGD(pC)ED~Q?=i!{sWvrw+Lqr?najg1ya~!bZEu~ z36S}$>axMqHdgp7KNOQ?UjqHjpt?uZCaCxyq@Wa_w5!M|krm~tvI6mo$4-W~8M)HL z9hpA@J8F}4EG#>LgwzE_B;%#QOpah4-(*GrccS^oZmx^nY->@Jda&K9lZ^x~ui!#9 zcWj@tY>MgajnuK>XNgW{&?s9Ilv*LBUyE+!)bO> z|4^BaRR5IzH`QbvciOzC%z70LF$J?L@Pq@x{jJJV1tk+ct!y2+OLcOx?%edCe@VUW zU?BFV5>gKcL>{)JwzTkY1ieiO&EZqcQ}>UT6_sL-_)|#W*~`HmCrH^2NMRBgTWQcv zviU*428q}+ezJt1CKfUj5>8S{uufbqQ-{z^tT1SD=^uNn#oacjGiVQI2O~(!&f>5p z)x{@j@2wZw9}>{F$%kh|!>LfjVNdv+9eGQQj$aZgKun%2Ta zEvEpjfeCy7DEWrsxnYx?e}xLDhM8HelBFvA2<6BWE_U^8T4O`yUljpa^%6%4k$-4Z zcekW5i%hsqWY-EDKI%~a$SUMi<%9D_gu8|>3i3IV&vp2P&RnaY+THYe)~3Vw7ic~o z3f+oBSB?=Cce)`;*2qPkt^Px+t63Tj8LN`chQr-bv7o=W)>}e;1Fk3`OIh+WC{{EC zt}~Pz5?V0C@r8sfNZ4}NhUqSKr|u3096hi3Xt|7 zV>;~Iak>TOR9Ggkv^X9A7S5yuF9qmkzyKjGDL3i>lq9k-v|zsQv0lO~`D%9Jcpt&@ zccH%3fr^A;TEeW9_{py`Xn z_ZXswon+08Zk82-kCsCRIUUz&=VeH~acts{0i>9>IoihWB;N~UDVgUq8>tBqu&|l9 zIq3Hql@eVX78^2(ZGOOZGK}bvw)_Ad)?s2>5T*m=cPT{bQxA&0H9b@AXMNU}3w%fN zY2|cG`ATHJ6htn)FR9yLk-8lm(pVFuSWJsq@PrM>BKN>RQ97{#^F;P2@jsCL!z2PO z0+g298cwfm*2 zXNTblWJof+Kp>00ttSt5IzTjSRJwPgM3ZyC1k?y1yCqzLgsqYbfq$ zU1y#nxTt1ven`99l+qkcN#$lryn1l)qp(dQB-L@G^QJpM;}kV3L<`pJK%1(8Q(mzF zMU&je{%r(-yRdKn6wcS?EP#q~CC{b_qFYyxowRM7EG(w6_}QcaFuPF-PaVV0M)fkZ z$|Lj6f_A#rSyVoKnO8+za;@_3C4r`F*`T(SfenDz!u3Rw!%?I8O~L+VNcx-M&IkOa z;OZxp|1`gWbi!f=T>G0L{DxZXOp!OMbdLNtp*5&vW~F~@oqqOOisc29X4s(HEHT@g z(=j_U$8G$1h5dW_Y%@ose+z%kX-u^GEV0jQA6_Xn$Dq>-){XCHO>X?`R^c44hY?0IRCU}ehi<$ z8(!D}SUH*D$HvQa_H>bfg-0g)WDXAxfe$0U{id1X{1m1-17TFx-Rec*?qoXLDU@C8 z4SxrFT<8WI%G^#f{6bu7BrKnkknc9m=uy4|qF^vmadd?sgRPz`5+NqWT8+gscbY>&(~XS{Z*d4*Xkg?CFrzC8*Zc5rNjz; zO$unBsA(wO_hiA^I1qGpD6ROQXi6I%fF9Q4R021s6tqd6mwL=Q~lfYUZ%j2Ywv^I6b?jE zjY1;e;lPY(fqYvwZ8T@9SB%(b+Fzl3%7TOG_ot+7WM&PpEtZ)@r+?5L58ZS14JEqV zcKH_U#n3?^yGYf=#v*>}`fl+Y%YSzrTN#`a;xf`iGArC4y1ABE6)hoT!!5cRsF9VI z6apPh($Ef#l14do1H%8ubQl-?=_J9Y@dl*$L@vKzOR{fl*&)k>hR5+d>v7D07Fy8F zYo2Ov)68nMt8msh=QFqUTrHMp_n!og7?<)Q?VhKrXfzt?m)xE9HlN})8G#gq=QhJf zU8Y+b&>tkHQIEa83Gw!O+6(lA^*1UTsoOHWtyXR;jBHKyomU9R*A`4aTXdZz)Y%ls zwx2GIcDC@&VuraFjJ-!ql^~~JkAuOl*}RH0C!Bq+QTG_N&ZxC^j@)1}e=^{lnWKS) z(z^N0mI6i|U1|lNjoiw$+|y8`yG4t2@fMjeKywm(pxppoQT&7GgSmn8ighMgOG@8@ zqplLYSBm+zed1Zm`v<_z&fmQ$BtRBrlk2ZEy}zT3Z<|k194&5#&ySjX19UgtmAMiB zG7LdPZ4o4|+FYO4z1-j=kD1qarO&21K5RrklGmWHGyU<^V2*!)cY2iU74z|R#Rew~ ztAI|26X~^v6X^zmV%*_Y-;CBR?QQmt))28>ne#KmbWh{vZU2UR9)56!*64*xSs%!)TCYZv}KfJvuvib{xy;1=83^yn;B z6ELiBj2WKCeq}Pg$P&YuW>gB}U1^h#?+QzKq5y=d5&L_F^R1gr0;Tfz@%IJX4+*m0 z6Lk3P6pVr8&x{XeKn(~9IqFXn29wO4N+`-)6XuCyFf{mQ{5yPotBrPmx;vk1gue;F z%Bk$oC_~#d2JlU3JZ+ksj4;_={|^-$e~viZ7eb<50IVEVqluR?m;gqmUDS@6n0aXw z9hACGAP_<@9hLmgC}h)<3YZ%$de1cF>svwl@3$D#^00j`UP#|Hf_c7ea;LN4$LTzH zl7LgM%PO!ew91|Iuj~_Eh79Tdgw$>%OdJsN*EDnPNiSK23D$qxu%gmodkC-K)~hJ? z+eBBe?#_-VNg0OHp7@|U?SwyS(}cgT^A@QBc?*ebO!LEZXM-emi%(H!^!={*eF!U@{M0vJ@Q!S53(VvL;Tj3k6zL{vq$f}L;nkV& zx(xNh02FPKvZ*0ImM7bnX>oge`l)taO*5duA*Ry5kN)rCPy$bF{nZqE1!CqA-zBY2 z#UZ4dlkz~ojn!xldsbjbSoWaZ4=ptwHa|N*C&wT-O*${~R`Kxt*31qV21K4wW#UXzxh-V7k`vvn6dbwq^KT)WC{bp!MHkaGUW;g;OGKz|Zp|!g$W@Rw;ex^NhA!y5N(5J;C9f`apgQ`&Vwm5(P4A;eVjlD$pV-rxD&Q8$ zcpY&8hE`YqLw(r)G=rQcid`obAx-hFD4MH?0z_D$p}RMpV{ZOxd-K;7LyFn<4~I2r zyA2`5vMw>AvJI5!AGl;!|1D!uA*HZvU$%F5n;+bf-W{WSnV8HQtM%W);a0>avr5i; z#oE|GJ-a!Idghr3H?Q=NSvczA=nz5;@ z>2PX?JJU+K)1v!uGB~rD)>)Nc)W%J?9S6-$58TqJy&;^VnD_1w(d|NR`qXUmV&n>u zL%~`h!mEXy^!Oy~B3Ic;JCb@kU?`Rgbp^vdhhJpNP0e#Z0R|$yR?A^u7x6f{w!*9hUw)W~n;0uY_|RL_TDU(_Bp-+Bk~5Te$xb@psExp;~}IHBm5&AUU}EF8LEN1G=;R2VqD%N9d;XLPv3d zb>b2~b?$v6)`HTnJrFv}O|2H5rNVxnwRAwnr=^yTcq3*Xlm2pwGTZ} z>5~Ww`&E=t^e3Da{z&&H(%h-SyHv-GDzgfv1rElMFWt&*DziqJD)5db)sd`KnRV8Q zKP=N0%EJ&oX8Y`xSaPtsjfb!}+~OUzDX0Sr7dk727kyFmYsCMF?RW-MQo^Sn?IQ~< z-wb=)D88f;yXe0?f;Qvj?{LL0 z^0yoRBNe=_!~??2*GHPUge1>U_B3A_@exOO=NkD7_Y9l$o4ekGzaFq@j9rjwqeIa` zB_T{hxuMCr6IO~ge+1L*?v1fwxt>QO{mRU2sA#ZVqcVYcPojufS!W~AcynRRvyfP? z*bee2U-g@VCedbE0W-9S4vr#;k#BKiGLH|ob9Y}KN=n4?2Qj(oj2TL!jbNcJP+N_L z(`=KV!{0I6iU4h)ErFcaiuke4rLwk4iE9-a;bJ9nT9$gPHYKs#&|JTT6Ubeo@EOL; zF!Uq4sjh`8%WhKD^HZ6*MEJwa7;zHEn^U!T!m_cNXGQ!+8!W3h&hZjf2G%uw0TSKX zwYUy!7>hm#GaHH#t&*k^d)g8hQ4bnAy~xE3pSI+XOm*WwF~~^^QbuHA5NZlM~BRW`jYljm^h^~&IS309!#R_U#iO>3pM zK{l1FdEWo;JXt1Vbg@j{7ybvr`-d>^3GW>w6L<2K@Lt7ik2ebMCH7=r6!?|>=Y{td zOM^^=3N0CLw7q}Q|A7!!@$cC}xk216bAJ{7`yze{)pexolRL;f?0Wa6e^nlk*uf;b z$x4wQ>rv#y7dOcGRXIdXk@=Tp{0^ixeUhLv{k37n--GSyINQiGjrc2`64i}o8-w96 zmUQE2Hjc5~n+nwGZd8DulTU{49R!9&D*pFBazB8^RxcA&FbA&5z#qfJ+tlTCHg$Ug zruDK%dV`~3d=B?Vc_YmjZ**a-w?%17Z(M0>Z!3R-H{RdIo0v@UwtZCe#gji4+r?83 zn-)*~Sj>p0A3ZbP9#VdW#`bh%Ya51>^G^3Kooj*;m2|;j1C*jWS$HYo7jAYuQC0p- z5%(IWVK{1QYQc2RavrwqT?`mYKpaMB#jONo^QcaJQ#kDcr~4WdufSI8t-<2AgCzWu zq_gl0y}+tL#u9Kq+3s|+JVpp4?QDF;^g`0sP;j#3HYW5bGW`hf2nR@tqglAd@z(C% z+39Z2=5iHGW+vohdRFK9oOdJp6LGDVTR~D0HN|d)Sl)j+YL~rtdU~Zd!d8OWfhU@% zcd+*{0l2g-2;*ANB}@W_XwW}@a5aoz9sOJ_My zZVzf+aEfjYHM=-~*58l#gKg8aTGdbv?ieYY-B4+tlE4~swuDrmGrzUvv%|QHQXj$j zBDv72@=1yy7@S@>(H2cG4IwfabumPaE#ytu%#;nvevTkNWw+zycrxd$6@lly7`qed zuna{{j+ng=V2_hHl=PrtS!0VFAGxGuqT&(;zq$rK-ilFWp0M2`qNrnT3(Oou%! zY?>9j_HPkA&JqgVO9)k)%)7QGC|Nv&RQ#85rjk?KiG5j6X>xI>=2+X0*@^55y1m!q zknGAS#~vF^QTGbBu@c9sg@Wpb;QK+Cj;HzC`+ z--*Hv=q~!V2xoEc-gphx?yJC)N^w{JA15iXW^Z-Qe9|Dz$I`t|sJ)x9f_c3Gp0J1a z_8;1t&&C0||A2Difbb)}U3Zxw2_02f_aE!a*XjXL zdRDl95w({oD=XFA)TWkWv0pAQ;%I%UFxMIHD0zhWtuZT%oTgzlQ&Z)&#_q?gAeM2P zF>8$XqoC7tx4k2LG%oDWkKwk+kIW8(g0rV*lLGQ|>Rb587VN{tMGrv_eGWZzD4M6j z_H;4#tjSEqH~+M6B7BxW-BzxBF3WIx^) zhmNI9w(ReS`=!s_YX1sv5qqY8Rr~*n)5fNiXmT2!HjF6sl(uA$Zqt%u)BWD9B2M?y zo*Y9vAMCv650%lifGPZkVd1pYk)FDVZ=fZ{$RmMj8DDfT8~Ijy)Hyhs>Hto3jg z-|K_GnH-S_G{7Fa$m7_ow=c&EWm!bez|a(L+auq#9>+fm>MP~WQ{l7Bff$(mf4wZi zf4gFqnjI|@;Zh+_ap}bYozyj-OS4ffBET~ZSDearcDtfWb$Z?L z074Kx6m>YsPS3+|m_e_gBiAR{b zgDjQg{YL`zSb!Bu=apsjiw-oil48EKBGae|h&AK2;Tf_4!iC~{cCP#Jv5E7T_&c*` zP0nV@2+emeNf1!LMtlysKn&(3F#VyV2O#r+ z^w-gMm8r{O;KARNC0nRR^#&QgZdtxb$CG}0ibAO}${7ou{(b>HG#?YJB;Go%Fh=_m zali6ABmkC5PAn18--Oyty1`y%5;Ja-!4%jB8o2U~{0*5{xicK#Zoy33P>SzOgD|g2 zK<5t#k$3l&JBs0mWDXdtAHrh;19@cco}REJJz=}KBX}rcmMbw9(Eh9k2B#_N7Px_e zH)7NK0cmAByWT~ys|F0mo?vfIP@g--nYl(dH$k#la3c)IPIQ1gX`?u~?Yk}V4EDFv zK>xC<)#^kR2=O+Z4h+LXtN=n#uVj!j^CIm$s=ClYx54;_?!yHECwI}u%H1ecVi|P_ zRy6v{SE<)zjsNyYwK(?6rv%{v8tPEnf%}@GI)I9vYrw}X%I z`33?r0$SqC++G}HIXUS3&V!`b4cGEGu0k!^U|`yVv+FsU)DbtC&yK+{}kRe5(TPt>W3y)T=64_YMq_rII$gCMkZy= zdR#BHtXb2SO5WzzYKf=-V2izWeO=f zWGW+GlGS(NVL@t1WoN2|vf#Q8l54l^g|bU8+%3*2QYi;YF8QA)!q!U>Mn& z-8oWrp}gvg5<5^{Qt8;(?G@DGnZx!K`*@?xm)+LipaY!G7m>&Oi^=90hGh1z+%aJGUN^8Ji_fx)i4RP!=>^9;&7nMxdggi z#g2|&M^jHnj|ZGRpG4^2jsE;d+9+e`BFm*b653AWe^#y~tVg-qG^}@lV#bd>Zp8}r zpQUm=NIyxmVS0F&=^=(E(x!ofNwAzFR7WC!ME;ytO%M@)k~U8l*Q63=0ijZxVU$i8 zNEWHr;UiAp|1s%jl723?BiNbQv|0?jRoqM;H)O;v5#IUY&?Um{pvXFX9m+ty!9?e? z`FxReo{ke#YEu*U#RDG(<3D8>{*DNm#Dp59@PhccFxft;*0KY$L%~aw3ojY-mTCTr zEw;exv}`j#n+z}(CTUf7^$W)R(rwv@GMWFx=$DOr$pn19U~COK^PWjx?|U>^6BITm+<`bLJ@#OF?99WQCo&1{vua3}O~e7jQ3$7e|`y3C)v%ocDD#c>IN+S9US zIRggwyxWOhg!2eoTP{1Fk`Z%dr8-Minr6wWW%+N2zY|l);URLG97eYFSQW~@!AkC+ zD5f^TKzFif;*OJm%S*lBG*DsA%pQA3{+J!?Dl;Z@PNM1>E}na`+|$dzb0P+@CBqR< zaz~k`Ep{&v$I){J>m4yq3N|<{ut0WT2xhn!UjFO&=$z#iv$*-!R_Zm*^UXfaG?ECg zy+gc$>KQx67Ce;R)Nr!H&c`Rgz2I@tMGbFgcz+y&p#@KG2;_+|;DQR8;7TIy=5CJG zJKNLP&EY5x{8(zsWbVw|&iNO&g4W6H*v?~(r!6#nS$F)vet)oYO1{c;YQKkYG7+G8 zr(^wJ{H?t=d~5seZ*6b**7j@P+Wz=k+gxXyz0L&Z!a{-vDs4dOdNs*T+gQ8NRx|f< zR`T7HQu-aD9S@m(n%N9EZqj#V{>oWZK(%+PSnf@piY?@g&NdblF;1am!4L3FMCnp= zX71EnYZ~u7T)_W|$SdHpq(fbjuPw`Gb=(x^d1n(CDJ4V!n>%5?QCGfcRp|q9W2xPl zd4|{~J8>s`$y+-o6i2&dLJ}xbB!bnoJhzZtR%oI6XWQ=z-o*q6a#e!P4gK?rRBj%j zk5sW+Ze(iv@>5<2k@l?IiI|RM58Wu%m{iGH)juSU&2ye1va<@Q6H0>M;1vVkYn3ho11 zy1ZQ6SQe|w|1#<7;PkUK{XFW%a?P3fL)#c;OtCR2^IK%brh+3gW`x}nkNJ7JIwU*s zJEw@=6NMP(-X*Fhi(s2%Vu6=el;yvxe?5yw=d2DE}e6@A zG9&N@#`&LH$R9m*Bup8#rnuhAv97AN1YJDBfI@G!r#Q$1TkQ?rZdhjM!6UFvMs7PM zGde#uvqfr#jGB+5zJ25%Xa2DBMD<+pQ|Azd`~A9lAI5Yuu6-LO$AavV+mZrZRw?o= zMAfsJOqIh43~b3M+>tHL`~%3bX#yfs<#(=i;o51oD7LrL>=g78>OhBw9Z9%jZu zIe*{$9l_Tdm{9r#U>VN;2&2RTYrzeoT~Y|jb1VE6s4Qjza?U3yl4wXiD177m|8pvr zw$k5|V^SJ=CV?8Bs`CXxo(Rj4w0OapPki<*OdE3j6L8N=fjF3;!MFdIcHMAWMlv&? zF^&)WGzybA%(qp|y=1-93bY*~rTwvlQCizmEvvJL4 zh_;bZtBJLz1m_=uDX@_JqKUNp%jWYd6?0^L^0JSwG#K#-&0!v z!qN-CA)uAh92n|IKU7MRMQBJvGED4Q0`oaxZ*Z<8i^&8wF~d&p8;HiG5B)`BMe)%2 z2W)!q91p$=g`s%#-FWmxV%9EdUX*SPKS2y#B(4#2tOT1jodz-Ke%l6B=QI>x&?k`k zQ@@0Wb4)GYrPiqNWB`nx@b4MQy-XB?aO@aujyC^0W4Qi@P?ySx?O|H{D&;Z!pRlZ& zN;p+o=vc-b5G%|ZI*Ne!2g!A*r3}WvhPjRkUyEHs=;D9P`NsSUR9TAGT7xv1NP_(# zdVlr2aCe}E+8gMtUbUF-4oF)nXRQt(JiF0Cvv6)itcSZp%{2{$aJsc$*=1X->dYVR zyhVaZfo}d${~C|Q2iA3NQLA<-9!lp~C7t7m70{)};CCf|Ht@57&QTkQVNcDhVJQBX zq+P?qf}LUpS|4VWaBZR3vU#36H#PmcNhW5}8Evwn!z#Y?)K%Dssh*tNNSgTkzX2}u z2g`hg*j5Jf4BafGRmQ-Z=#vj7U5a%?#ve^TA~6wDX~1Acjh#!IG3#ZPu1911goMI1 zLblnV)~%@p2$pTVh0g^PdYKP!ZW*pzYNMfCwLmyh2S67|ONJa~`|%ByDe#qacn+3F z%kd2Wo59?)!tJO-2Rrj&VgD+i@GS$Ae|p|x>v&JSaMtKJFa7QJG1b^rA}g5RZ4^I# zMflGAqn-bculE3ttGe2M&)%obIcNGv8fhe}cgvEk;@*U9u-qGN*nksr6s&2jVPr;%@1~j3*CpPAL9D-CvtWli;)~=AdF>;rXyN9E07){8SE}Po#P1gOx zC*Q03-O1NzW4&LalU~wt?{d96T)l%j*O0uC8xXVtT)NM>)HCC2CP$H9UMj+_(giC- zo;$SYsW``%9)HX1T6}plWWt-Ydn4Ypr}HIdX`B=fep~(6! zYd=F_0ar)&4}p*pwm!oH2+f_!cs`JpX;wQqaoA_-)WF8diRKboJh&7%C#ksi znZ6L@xhQH3)y{Qhjaf_hNvDLHRI=Jw#wgtas(^Wcr-|sOYkE>_P5N1e1l`VJC9KCX zX+m{hG*H`+Q**2lQZ@)+1jlY)XMcjl_vxnbo>2boaNg7P#CTf>$3kbf8nz> z+s&~yoAiJ40{f@-{(e6g8jf0;isVES9K^KFNLxTOPkhOl5{0fdzb7rEWX_cxZXO|a z$6~5OsEdA)LGd$tjU4xp30?97`{1}PNvXGD={3I9tw-UB=S}*3>yq6b*g-sxn_wK5AKB3h+#^L!EYxl|4~O8lr*{Qf3#s%K!<& zLr{L;S*9KFr~=l62Cik*Jf?Jw0CxN*oaU5HLzR|yGeQ0C*!Tp15?pa@t{RKf_aO?z}@nP?`==_vp@gzr4$8050J)a6n;)aj>tlY*_I^IBOmxoVr!L{AR$EXD5*AMdhdWLJ z4`bO<2J<-M=*(0GvHC+i^%!d-*~0>mR53VX$N2>+GR!o6r^;R4Sjq{f{5CP^9`XEo zxh! z%@4w7Gl(TI`BJ@Xw73Issu>&2s2n{Sp%GLMkoS)e9>_Z2zHeK1(usT7iF&OXeT<^W zg0pp4bU!Y-uZ`}DJEk(zsFD>Ir}#f*r^l#X*QY0qAA9n5CY5QP#Qu3W|=gT54+iqyHfaX@_T5X4NfHO0dq#Y^QvL_KO_Y zuB^IS9vfWv{R==ciU)VBtr=dU^%F|{8f{GB%Tvi1qxgo82$1>}sNjiOj|LjH)M4Dl zajWGPodI%iXt2UPL8OMJWG;uY48JW2aXWHld)BHLdFr()M{!A#Ky(@|ZxiBc(Y+Pj zJI1Aie(L2AB>YXXx$31ba$R2xO{WX#`Y`rJX#OR{i+w#b>C$RT__!lYB>F+|gYWV( zSMjsrf1k*QzAirhGIR{JgB2ZXiU?qn*@FVT>Exg+61>IIVN;Nx8?TjWk~wSDG*qja zpqe3^?KdY^(^&ztaFs_hDO&avJwR-8Ld%`ST^6HP%@BA+{l$G*@?Dwe{&)Ii7J{9s zWia$!daQESv9R8ztlQP>VU->JFuSAXSY@wM#rq#b&u2vUJ;Mqe;jo&H-s4o+c2($@ zcP#x;{l2xT*XsNAIz-5xL?$EkNhl`)Sw-A=T~qV9vTN=7SiAKj`!(NvDzxU7jq#mD zel_5Z2NvR>_)_EL60s7xDhY!lR2P|*mzwk=x37d05E3(x8UD(*U-fZKr^Xu0Id;E& zQc(Q=FnegM!5&R8((R{w&*@B$%AOT|`#lsKDpJF&j{KM3{)%7Rr8~{SJti*k{btPr zy!QT@NW@k zw;>sZj)S(ouj}!$pH&K|Ca{jCEv#42Co6qm01_BP%X*{vF1;?K5LIIJrL5vRMCoX@ zUx`ME9jn0$m)j4x&EVD(7J@KQ6Yr&!MIk*8w@fC)FLAsq_t#nE!!TP1Vd6F@(g$RP zuR%$si3>f9YqUAr5txRY6K-1bIa2VOL3lqsqFORLn3Oq}iA%*~i}$_tBIDUDw=B z#ZE0Uc1bRdnL!r>d?W1HP)isOlfH|=oIuOios38{6U0o45PCqF5eg$ViS@=k#_xj2 zGpW`C0OS**Sm70j?$Izm+KL`#MfauAePwhX|Np(`Gb7ma6{_3pY3a`P#JWfHRCn7w zL3hCO?w+3yseqAA@z{_wJZhWj2^&szMHM;>&w}jH1>13U@GJ|H3<5cbNryYFHhdsmOb@;7#z+ymg#{&_#-V zwkSGupjBd;ElvvdTFeD0bSR^a9|ESC(;4HZN43jpcDt%FF!G!^2L}rX-lNo}Jp8UuHCSH+oJyz} zno&E6OcAe);=F}4at6U31A_ge8aDVlY2&QucT%|is*Y7`Rm39h!=Z%qC>=&Zp}r;# zc#Kp4EpgNVvFO&$Z~R^x*AmmB{pZ<WQiz8J zWqY>&MzsB>lx{0-A3ErhBzHtOg$*)>Uf=Uf`y15KQ&c4%IMR3rZGrOp$&T@dwhABJ zgRXv8z=1^&e0inZ`kpk)9)e#F)#wyOOW7wS&G@l7+*(RexLxTB9cVaeq)CAvSTJl1 zpP+(ktjFP)JgM&2y=EWH&--${<$aX5oD)evusC9nJGkMrSk07KlL}6;WaHh@*@V~2 zbkYg$@yt6t=Pu8_8zD-t?)Dl0R{^a z%aDZ@(H`2QW%wV-Y4BNes9csR@eVR!>X6u4nueAi?2sUbP=;Qa<5yuay5eZ+Hxe1s+%`Fp1j zyM!EVPzyV5Tq;baXgs-^ahj^fY$1MemMOG2Atty*D;DDWG6)DE2wn#IjE5tMmdHpH z;7bZ>H1{nvCt(as+@>nGs&GFskIL&adsBT!7*Dd=Hahx7tMVa>!ZA$bBg$E#aj+d& zZ)*SKF0C$Abr<3iH3pd=vHLo{9#y(dL`_3vh&ox0d21pQCX_hDB4I(+k33pjrRtIk z#FeeajU8w()&Q79Yd-<6yiBeU!7$#+_j-K|#-+A6i27^GBY?%0P~9QXTAzqw;4w2) zfHxXAsIDj2Dsn<&`Q|3k%LH5_7jwiW)x1%CSJYn+2YXei*E#+EUw~!R>t67xM;$KK zD3&#IQow<1A%mFrc7YJmK;mn8n_iiAud++^? z%H5=#jmqB?f$;qb_^D(+d-?Y_skV*kdN^TRxt`lNPo zB@KYrp>B31d{H2A7RQA82Y%l)Yn?Ku=&KZ7eat&R{a8W|8N)>+9yfRpi7&w^_`cs3 zyB@cmAdFT$d_FqvFG)O*fA}58{lneI%~f+J3kJVY{X!;pba*2+sg{kngT-UsTY$Le zb(`}+Jn2XlvI{)H2+p?S|HUBwKEi3SZ!6;Odw&am=hy~1 zj7MCd@4Cj*gO99JL&!l5bQ-&OMP~J&2U9L{zmB;o!)j97M82IpO=V7Hro8DAD<0)! z);iG)suemR{y>%=_KlC_&6AzX2HwO$uQUc~jIVetIwtNAZe)&a20Xt|k{Xp4vSbYm zD_)HAl#tlcg-k~NPxXv3?(_2N9CeJ7RK(uL!gvoa_KqR|18ntz4W50n2b#RWBaLw; zl=aj(=s)m?vq8m!uX|YI#HZJPNBBrv*17 zbjx6j*f%=Zml*?9`>EwFe)~Xiw`z=YVpUIg>S@pYhiAW!rf8hHA8Mi4gV#Mj*yDz* zi%8Lpx|j0r7;eRx`fx0XxyIk(AU;EeM^`uX?gEMUJblW_`wobP-_duxX zT;a-H8%WO{S6BPKGt%;%PD|v{(yFRFbFwTP#bNL$o1j@4qB1j_6O`Eim-#o`Xxmfm z4PzJiAcF&{KRrqq4M4=ubh`lKbHPeMdl17ZLu-Xv{cHiHd;x9YDVG$eP7cdCA4Hn% zM4AhTGzZR9#-(B2akh_3+&qqoSl80ysfJ~$6!+yQDQAx*;=o0aqB$hjr8s zq4VIV3+W#n?f?}@(EhXZMlZF^YuoDi+r2PV?NLNgk?5m|;>%~Q38sFSXOfwKgC3{gb)W)HG-)|5C9+p@{Fp$(^+5#C|P59ny z3{2W>hq1p_^t@O3EzhtR3``Ph`(ei_ypv8$S&Gu7kNw?jdH-g`RgL+;6e{dbRDfa1B^m%yl-f4 zvaioLBSEtAlrT6zKNR>$2uWJq5vctW7l)|ZvBxaef-+Q5;I2i$9jav?zq3XymMqle z&XEnqz+(L4b#gY2lDnfdcfXZqH<5!%G$K!_6^u>5Vsl91+`zmT^xuyi3}mP|0fHWF ziXE~01RVB;PFEeG)uZ3Mw?^%L^Vg36jyFi+??lDS>gwqw19Q5BtwD?81Ginij#$*@&=^?E~a^|ax&_g zRAEah^;shPG7*$oaRSmRb!w`x34UGBWx)^wr6?zp^DD_q=-=SS+?^`imrB3^Vwp^; zKc)(grI4OI$gd4S3E^=3GqgVq{eOkdr&t>{6hsT=30#OddZH5Aet-$aC7R9cU~Y@J zH3I>RQ|-deCVg#w$>V003~~9*oKqkhTI1IEAbgmyIN8bqUVoU*=L*^WQV0V1LfP1g zLitkClzydCXy;na{ly$?7~1(elP!90Xsvtf*3ZOlwIB+}y1u(?mrFjiSNH8@Jd%dn z;tAWLWpm=z3P!#S$tYGv7KdQ0F3dn>a5R!If1T!C$aV8v?(b6IZVfrMi~Y zdQ9Y~<&dUn=U*6gQ}!3fC_0{ABi$5uVa;$FK| zRpZb2IKIvM1~d^v=H93Q|fd{q}-H6Ir6geV065s{8@21kEl+~FfjrZi-C46&E zVLyt>zm5|MTi#dkWJd;BnL#7`WV9lVBR3th1~3zn>u$9hJsOZe)yP?k;Pdcdh!5sd zERL1Y*abkquvC#tO2$NfG?4$3CPcxYBonzo6yK0#@+ENl!|uGb6qfvfW3QF&43HNSWdy z#3;P8X|e#XmYXy&6j3-RX~O+3t}(Af^M8u9Ua8v1R;3yNIG!)dfW`={6cf6zxX+=g zFUB}F_y(cM1ab)jdl?_oYf^9(@g5?%DEk-=46e56NsNTsKoN#-k@)E zaqiR)PO{=d4g_S9JdO7Z&aJt|ro0?T3ZjVJWy`Mn`5@M7_Qyl&v2V>P!!aY zH2$+4S)a1*b6Fq!MrfQ6d-k;ZKqMN%g#~FiYc#XRon%J^?217#AC# zmRD_+uGwm9#@U_;ERw$oAc>DePWkC_I=Sc;r-8GRcBIE*9zIGO*#H;j1n1*ldE&FL z%9CD)pr{zH3ffcz@barr+;SeO#DUuIuRxUD9FXV$a@^Pn@?g#4r3eMo?v^Gx z;!z-Ko9DA^Ll0v;cR+~XV}I-5S~9};ywI$} zTQKC-T{(4U&bd#X-kWpp%i$Ii+^HuD?BV-`Y)=T}2V2~4_NpWe=u=>LVM&x8Kd%Hf z@>0y>+2#IuB8AKj@!?^*Ko+clYauV3e_Y5GnT>h>8w3AR_}OZ*8|M0cB1bnl?DyDYj&8{L zP*_Gn8Ws``ggBXE^bM>ln3c2xsy1uz4>)#pO2I#^pzf`3XXidGCvZnP$;VuDJMmDx zJS6o7%6RIZ72&59e0C?&5e5Iva{q^WjQefT+EvfC7V58+nlA3?zc?)b-LB5rKaq0- zVGU|M0*As-6UH>?^$fht(#g60D)zVBIISj6C#F(y*lw&YxrcV{(Y`%b$n7cs&e22)$mE9wy$t1zAiyOji|1rz)ojc1r=l=t3+RmO-|aRSS?| z?kH}VIZRs&ZxPE5HmU^9%HG9E+l0>&c{E`UF*?X-Hk!oKjnnF?9<8umuTZaYE$oLY z%!=TxD*K%(*Q%o}Tt2UklD@td)MdbP)q7R$hu|)-(=2svEfet4I_uOzgo>^&2+7Dg z8ykc#az=sL>apKU%_2T$%>^Huj#PnIM&Ij<+GIx))7D=y5omDDal^bJEZ;jaOijLv z7#>p;MoUXFn`ugmIN6~WD@erM+%kvcje+SL=H29}>hcUtNO6w&))4z0S}upkLJVct z`So^-(2980_$^(w4A`fTD?6lfMJjqu4Fz5InPVXEE685AD z0NbmhQz&5jMpZf(Fl?#Mzg4h4EvSDM02)3iV5#0No{~2U{$~aIs{$VJM}=rPdB5Nb zlliyGilT>NiU0|FSUot?v{`8f!zAwBr6}wf$Pc2EQT`>-*K?IosV5JexT#)OfIWUz8+=)-9+y|1tPlTK zugVh-)q@e=&9m^KdYqH9tL^iuQ4#rleaQE3tJ6E`+>5I1OL+~>w-mY8P=o=2o3$lP zQ`X)h$G!-ChFr*mOTlRbAtmA=iyZuVsXZx)=k2nPPLdAFnZk;oJ|QvpK2i4TmH2dK z@raVe2P6(oFIs$sli|%Jf_lKQA z{5Vjvd&VWnycBn}I3{eaSY0$adbkdQOJxxo`%dw5Ly8YYzb7aEq!)hs z>O%R@md4yK-Jjy|T-V4}cQ&f4Sb&)6mk;qzQ0_Q_5w6CO=}#KeU#g-vUa9iG>-?$K zeWjKW@Ko``JBRqM^a%tf{8smizGxAlxf6c}X1bYiMc@8DA_vJ9mD8)a${z2Hbwj@! ziwb>^#Lzy3G6T+VyFW2H&R0b8xXP|`)`45pLX^pMo0QydGGAxkgIuh*Xp%8D-y+U<$P_NKh=Ji-Z-(-%I`m-RFMu9VeHp;mcm zwJ@RsC-!P>_2#sDPfGu#(Z8}pJK62PRghL|?Gu{9ZB6vofshF+8aa|TH{whGuF1C&dz<@|{H@V`vk|;nxE(rtuhIUbG4*nj^KMgk zOp~{kl}Ww8=fho1xJx${)N{W3qOV@?yZ)Ug33CF z-4i#tc=<1keCksb*MB9pa0K*(80CmKiq>2;2CfG|B{kfwXf9&!0dfgYWgM*4=4Ym` z7;(W-+7y{5*KG>990Yp4SrThcG4|52Tv^rx-mj3$F7a)lvj!KuwyVi*9LX)!;xvbC zUaK>d_d6;Z_!ULV?;u%UHiB2WtNOSfIZ;fNthy(OxmwCCBPOeXt4+L9T!M*xn9Z?~ zk=q>hX8K~q3(AW?2C3pdnP`?b8TT~jo$!mMvM;$Z{xLPyrW&=e#yO`(ommt6S`v%f znwiEQG-W<+@*H(l6X)*QW_5N=PV&xY)WGwqP`{T~cQk_}T+i#w&TDJ@s&8@Mu8Y>; z??UXZhn1gq(rP$#0ElJ+oRyJ!FGAxqIE!MF(9guAUs*^JekhnC&$5})_7XAE8`NbS z76$PI>|)#)*d{Rc-q^W-#|ZGhRvGJC#9r4>wII#`X&~-XFPA&7l?P~OVxG4)T30rX z)Ts*_Z2G>^geHQxzrpy=s3cA3#&?g5>mnC_hV?Xk@j$ZepRr}*a1LNJd%ib58<8)t z^==ryOD66COwX2yxCveCTpDK781NZ+SF#m4HyGq zd4fFYVl7TX8j{?{q|0R1*H0wHRs$kh!8ILRojT-d#(O3if0rLWyGdWruSvB7{L=KTeUW?lQc1(Bjr`P##)p9+JxehjqZ!jfBIjqlt!;y ztfGfQqx+MK|9s8^p3`WEHnbt`zh!VC985FTWB!8P$}5#V?40PGbPt}6#F^>d2#3>r zz{2~Uh%N0C4;)*%%4^!7yml?h6?+lH8j!F$#=4YpB>!Xh~kgd5g{yy-bwZ? z|7HU*e!QGaPwO^GLQLjA1&-P*-%0mmi(j1(eJ$)el7o0$;y&4v1Ni3`@;mmCF?Mng zCR)9O?z_ZTrmA1u$R}nQ>)M)dN8NKke3_1*BcpriE>y_R0VykAeulY z*0EPq{80>@I=hWAv%QT(_$94O?aSN9!rGT9?{Z~d(dxY0?A@x&r&=m6p`T$3Jqp;3 z=uQ7-rMD~ZdPtXLUKPy})F1hw^qXz833^6;==rwv#uh@OGg|aDEzY$q*12u&d2Il0 zXN)vYAL-QOuV@diY|k(Amm=_{)wx6P6aN^d9t+i}esDvJRN&yFBAtw0oL4$3Qy)LG zxtUex(-M7ldvVoyr=<25_F>-fCjEop(n;miE$#N_?HyF|H9KnK&}hX05`&K*{>c^D;A+N4G*E9`^ccZ9chsM|V{J31(I`J~(VTQ^;?pRl~A(I`@v z4dWc&Gb}?vIlZLAn}&f;?dD9$s&8(NFm38*jSZ~xpZc9*-bRzp#R7pzkO`ME1bc>Pkm2)*uCf5 zA9efD>nW=;>kmV3MUL72vYj6|W|+Hf7*WP?wzuB4Pqw`cwtWY?pstYfdG*lBClw@> z{nJa+R}95&6vd+}&GPzd+wDv`NmlTv7H=(4RkUxX3y4}INxl_zwVwhd_!@d}qT}A; zPIr#vS({ZF>m;Q4j@)c383>2#aL$PN+%Krxw`9>?OAv_WcaqDOAHbGY z=vB^vvG0c8DgR!4b?f(Q4x0Rf@L=_$Is^`*Xf~c^|4IF-_}%a~ z|GS28*h7ePi=vZzamS8R`%@t;ub!X|qL-AiPgb$hlzXZgy@}UDY8*$!k;WkTx_|x1 z#&eW+HhrduB0Is6e#$M+Ez!w}z4{yTC-!x0@kSEb9iATnQ zOKt&jo@)`+*PvzC&wjnHzEbZg^}c%3j2`mex(9n9GgCh~=&!t7HD0F7%aw^Z-YwUDzMSE})#sfKKg}I(e$^8@x5qrK$A7QK`K$v)%}YBRFY#%Q^{*ZZ`I6R%)Lm_k zmA|(wQE%_-cgC&Kpqc)-|4Y*{_LJYx_s~Qk9+Ln{M6styj?x$LjAMno1{(T`tC5T$7!@`9}HR>rD&c5 zx~*qLsRXZw-p(P!_1<>MvFt9CLD88)KH8-tb`HVU&diYXR`{>Fu4IN+>CS>U4y`Cn z|213Sq9}%0g%eZGEtojX7`Sq9g)A*DbAxW_3geTmI-UM|Yuw7c-Ri6#>iEesF|Ogq z?M2FC0t>#i3nRX>izSSbT=iflrsLr*6jbk)XZLl5ue1j5wN5Jzi#)|8;$+;QEYJlS zBv+ceQ)f{I4kBAiooESkn|d%VMzLGUOoN3Rv2sK~XPQ89Cla!E;Yv&ibrd7H{VCe4 zT|69z3yIg*j#h`Jg{}IQM!h@saCiBs?Tx0+bJ62Bv;w*2)zJWIc<7wcJT*4L|Hm+p z=fuk=i=8stNK`?0e^S`^1#a=d+d(|`A(1lB@+%N>_XZXFr9+fQFC{r~sh-Xydhy`N z8}td=mdLJ)8&I)0D4yMx;zP4>-|&1Qb#o=!BkoO<7VDcTomab}m9ym5Lbgr)ez+=6 zJv$tiKa{@psXK=2yM|+*pX%b&K07>-RQJoXhlVFQsU7_{#Kmunbj6P0T#%G{TR!pr z@I1Ph>Q#CE`fw5t-`V3%U&d@iNr;lnm>F^jV)|EBv)Lg|HNFQY1e5OhiX)726rB{` zq@pxXGK!nq64Yu4wjQg9i`HsbXd!+MtKkGyV^F$`9V754e6@AByM4Hiavxc_T4?cI z6#H15^LyD#v;k7DU^4B zW4CePCUB{Cs_w^y6nd_X9&RW;v^`Eiz`#@-{t=Pm4+6tu8J=N!aG*~%`=jh#*i*wh z)A=`ssR?*K7>lRA`2=LXP2G&MZJp-UPK|B@=}p_undf$f7k9cSVTp#BeSN2WVwe46 zI{~bHO{cx3Q(f0--_Yr{FhlO`cAo9VTswAFUDeIJd7xXJ*W~}*wclD{zQ021d}%Ce zxu3aIte)SbwvOO}ZSOA8{>L5axfS;No!(s?-koAiHw**C;`8`3rw>!lcLdshbcMNd zMeOkv!P6`BpE_bsblMMh!lisrHuQS8`l|8&V?$pzswZSaPqU%8XJ6joT)`Hou{>6B z!s&NHsz0`e>39>4l~ld%YgRj*_Hd_x%1B_`;oeX;MJZa&uaVCR8DC`9PL2>6Q`HeX zjR3g89kQhbd>Oq!(}Q895T{HvOr?{uJcnh~j3c|?(Obr>si{^KCA8I!`5wg)v^2ur zIxT#vRSn(qy>{se5_UIJcCcKg?Y~T>Y0v&xi3`fa_UkY&he1Q}%4mZOoZy?nS1?_)tU|pt!XIQ~hRWe;8PE`Y;Pph0H zujedsz7~ zHrqINbFb8M%5j?*P9C>i%6Pqxd@fiC!{#a#Tua^N2t1uPyWnn|kNMWW8&1+*U}#Ys z(X>@JD`2`aGYD3AEek}Iltj~TP==!CbW^lMjwcSM$}1-=Wb)Q6?9)=#5heRb*vP%> zB3>b*{eD@b&eHp{U-Jg{%PU&9AH_8#OaNDxffKh zONqhxkDcemSNj;?U-hY*>eO2A|244v;=q1*k#l36dYg+FzTd~OWYux)d&ruH@1`Rj zwyr%xI&JVM|3cnTWM>vb*36kzWJK30b3c>!^PKB9VWS9dx|vc5aR&Arvl)T6xKx7v zM8ll-T^AG!|30ir)e!WNs6D*MVytc_fneM^lCw{~S#p1VjK!ypCrSE!aPqEJ6tNA| zu2ap&QVJrer&jR%heuXf*2&$?>$|nC7QE!%TI+#Yb$@L_7apqRSF)J6`FaV+BTs4} z=XFM~S*r{Z|ImepWQ+mWx%^rKa^bHPx6f}pRI483H%cFt-;g~i4!LDAflWvsP6x~#Bb_y?4DmWfGlKbR=xGjwfm-A`OWrB{F`gXs$7&DY|sbj z7AR@`gJsJ0sy$bbB>M<_LR@~XqG=*QkKzB;m9(L_6))CcDRNRsiHBaM4gp4Q8a#O^ z7UII-!HzW^8^sacSZ8gkQ(Nmejoa%|XZP6W^(2352J21r*Z(@Q^)!Xx$kKaY;K$ly!<*RJ+(RUz`h1sDR=q{et-RF1`8{jDzlP94~JGRmzF z5r3rkKF6`%CN(*o?wkW197FZ5MqjVO8x%@JAxM9!ZLM?EwwsL9nWIwYjjBzXP^zR>P=G!bEY3He6ZuXu z$WVmZ&@U|IzXsSQ-{O4%+%Jj$DQ~bT+2r#$G zI@D^RzgxC|lQj0I-Q?(pc>==F)Y+91w#IM!?7hC%) zW8h;&s${#=@D1U~Ok?fXJOy~v*%1Orj!VkEa~c@GJO}iZOxe$khGzH4sA7#_6RgIh zL)`@@3hu%sBh5=kLJrm5d-ADsMi)QDRTXLm+UO|!-=T;~E?|y|Mek2Hx1g4?IpDUe)NpheZO;tGT;P*gj&hmM&sHjK+X zI95G8*8R)aSd@dgXEaXUb)#VgZWu$R{e>|Y*Ii@jKrJ*q(XkYWn0lb%`a~}s*`ufx zLJ-8GkSW71b={ykNnnyJF)kj5(<40w{xPyhs`_ed9f~xGfD-03T z*~q*kiB=h!5bhWI6d&mU8u%muyrQ$b32T3#b+;5(tf313NM8sj#?j*&0Wdjk^0i&+f2^c`|~9s^A0mE7%z*hdZwxL`6lX@2^mNvc2Y3QL-7*> z!;HU=-_uD9!q#%}hYlBiDAK|Tj^r><-FtTec_|11b}C?|WjQINF5vKqn>eq6W=LqB z18yX!4@7U=5<8Nxc#fa2kYv!_k_`GE2qI0!ritAQG5q@sk&+!8*HN~vqf)4?-IV-L zII04tTZ$C_hYSpv6>ILXWR#2ngg76VC{&v)%U8@BlgJ_f%=Uh582egnoES#cuxhr_ zZ#+FQZ>3|qgrT_^DM1_M^;s}u7VO;ndobnlpG z-!+k0_|Ngq68nPj7I6U3?Fr)#}{)b{fKbYzMi zx{o7sRe6xJj+@Bwy*`op5w0|dA9cJ@1+Vs}?^#M-iQKeieUKVL71044b+c8zdr5f( zV=?r<{I!T!rYn-=Ip%8GB-jbcN(pwp?XdfXUnuFq z$qzs&>k{~HZ{zCznn(_SVO)by05k{xfK~fvjEDMjaKESL{BpdMnG~ktE%}q?(|mW} zAmcH2Kyrq^}xl-7r>NKNi;I4P)KgCfGYB z2+S{y<$SB;wjPm>Iet=%C^SY(^H@%3O3W@kkk%b2bD*BgpL(=E^_pX!G|nwg>oysH zXHPQEnWWF2WM43eT<250H1-Z|R8}I*Sp@nQ?C{CSWEHWOr8+#b@4px2+b5theeZ(U31W7eM%)} z#ZOi#KiN+u8Xp(R;sx0G@sUqN-6nHt3IoWY8z31}JD5dh8|hjk&D;Y$BHf)ET!_mm zD$?cC!uDV(0=%1(y%#3c=H&fW^pL&~-K>Fg=~+Dd_v&43Ts@_gP$Xk}l##_n_{^!+ zG1sBMY&cz}y~{=pzj9uOhSi(Ox94KAmDu&qygsalLve3St)_r|_tva`S*<^=950 zX*O8LvF3?|T#RoF;)75$bxURonuc+o_6ihf#q=W4jG3hKy0 z)KfK*n0tq2!3nq>GKb4rQ#6?!!d>^57dV-JmNWZ3zXZ%-qBNKr&(#hsi6}Mqp6=RWg6{{yIUt*|6 zOA*Zs<0}p~l;Od$$P8+Lh9Fu7H&B`?lAy%#-yUjC5gH16jwqhKA;$J;RCmeb%p;JMaLD?(cgZ}VPt()!6-U;8l&jyX}NbRc8{VHD$C#5 z^UraWjG}X=a$zo*=8N*^^)hBw7l|#yF+wJBGF`TJj}1gsiq8>D3uw>_FC&*{RFsrQ zBP57m*dgL&FJR$ka*f8)iReX(arNH#HPq|+IzHO!SJ!;;Nz;pVuozX`K+3 zR0B0;NH`BnHO|;a@K~?g0xhENkPf<(%gTZpu~JaFnbKC*I{XY{;J3=SavyQUOKJO& z+}j#Z)3fr0DXbM8)76lYI~uk>EJQ(`7BqFkW2a zQ(pa?+n3zF;-<@Y#>PJ$Q#)fH>FD9n;=^m|@z^+H;5LD@4&)O5R)cyVlW@}XR-H=F z%`%;z8_qEo=B>t;rn&D-8&%P8hsMM36OGXdCF_77IANdHZqN1> zc{Iz;so=-scH7Gn@G1@C0RUGu2Ij}x%37!oGHch!?*7G(2 zKtu+K9Env0$mqoQJf&% z5gawT?9N2lU3=?)3^*STh<~fz8i;Q;-N*J;pY3gZwYU1q0Hb!z494a^rZYA_ln+sD z;O|An$VhS}0W##xs2?S)y-Z%B^(mEv((o|4R6u zf=zqMK0BF7SMIhl|Bf6pQpL9dznHw7xAvi8Y%Rlx(lJX7|~nk$POjzh~hr*pBn#M5JPI5)iN!x_QYiZ;WbmHseVz~5JJqMP+Zx1QWC`YmD; ztSgoII73kQ>vdRbhCyT-G;QU-`40dVYn>oHI z6Yfegr;7o6xlpPCsRL^(X)0|m4%@+GWVP}BOlVM+cm51|5omYQ3>u`6cws@`I+MY< zb0&1^J2=wtu9+0ONEmgDBG20*K?ohBDVoJN+NDvXN|j6LD|%fr>Qi!$dKs~bfqB#s zQY~4rRk_=gwN*85Q}$LhzPJ--4^pZt(5twb_JSENU6HB8sN^Z8xOyWS-SY2Q@vmliU(AYQFzlme6OR9Oz&mNcqYjbO#Z#kPUHbH> zd_%~0?e1!rHl=lC#in%p0>9!Tj&irsbV$Yf1zrHuL2@8Ort+!T?Ctxr8*pD)xnG^d ze*Jy6TW8f~+k(~@x(^on5jL6iT)8LX5OH51{w` zg{w=Pt4hrGbL3I3FR^YYiGAc2lhmcJ#skV!<0?o71%EgyGS!|6vR-RO3aqwPVNC(1&KxFE#YD79gmsLfgjEG2tz7c2Hy?48ByI<6$7Vn{E-?XhTv`L>X&uT@Cy-7vjNe!nMaYLdAB#y4RRw-Uz?`EZ;QCrz zV`E@AhIA8RXLBXnR&vZt`^1?Ffn#DdRut5_I2sHQlolLE;d^j$k7Zj&FfrD%JuV7H_daY3!UY@F^kCehiFbD5qqOS zBFs`=@YKKMht|wTZtpKK`$aEK@TtpYU=NFq_(ze6KZwBO$2j9LeW04fnQ7C*sHsMJ zl+ShZ`bg}ih%P1EgQCH^B2gbVQ>ml}YyOwfkS&nOMQs!4a|xqJBnuBmu6f`vT#sXw z@z}g3xajJ)dj;$Fq7oddM3I#C5`MY=$Jy2^vzO_z@;$2#BJRw<7SQFn&g$JT%1ex^ z5x^)tTrhr6qe=U!CyjLWT>r2;vjJU;!DRjHD1RAaZI0muHAHs2=mVj0BQNa(qjS(H zI<$C|l<+*MqiHDqJIM1yVgh{}f18SJrN%D~40$9973Nzi)7Q(-EEMGIo9|cdb`ip! z?-{Sp&!0PAT`=FhWxjpue7HQ6@6XSyfsDBTowqv{aAAHopT>Eg(pML*8dlPYIr%zu z%!0zY1#YW8VIH8>uDP+J7C1*Q$aYw-DQ~N?k6mCNzd-$MJ~sCe#%#9tpz*)B- zJDd;L*GqOwCq~Nis{m;k`cKRSjNUd+eKt==b@>Nv>q^n?Yyeu?+Re? z>U==PGv?FT!hV+}LtV6xt?XE+j+xJXy)hpQ=k+*i{hcfAU2`FO-dH???pNg8l2J*o zzfoZ1;>g|=dDAueYAObq@XZ>PqnLh7A*(^xC_P=(%3FMV_v8;fLMK8YvCgv-g?KE3 zHAu!#gm1vNj0g!Lt6Ux%;#BQZL%fYe=Ch5567C2Ifg|V;T(w~Y|95BmxF2bbp|GdY}M?$rcia3Mla_TCAMUpPz6<@@te3*m7rN-W`(rQc(eA9{iY z_B%=+0(phPk4TW}$-!Yej`7-79C|^h2YBPH@o_8j(TY!SN)Ym$u|jo z2g^(@boKpg`48HH*-<-Pe9$k^SsKlB13E zpIT%Fda{~e%~I2g0-d&b8gArnVXVh-E~4CEh@aDr{jYCg^j92!R^O1l_1dRkd zT5v&t(ppkgVrrIJL#28oXNir$Jv=^$+{2rlmkEUjIwCWYiEKep0Rm%^CBk}1_YUd1 zT;uOuU~~5+ZTA*;e6X+m@xGal_KkhAFTN^gb6-X?mSmso)_wdJwSV!#N2xDQIoB@= zmtKsoR{cs2%;T2NoUvzoyAT=t9 zyWz}_ji&0;sA*#7_SKtd>FLeV3y_nw_A|d$Zi9TOiCFJ8d3vMFlL&lyo0? z*9dJLj@m#(QDQnLYy~RifJ$-vQ3+$Jq$BT?)iLf;!;?5*wYUI{#(7IKd`sQA(7k7& zECR9kpd%J4GJA-Sku>0yj5SsW1THiI=Kb}GdB1|2e+aCcON6XO#p4Cb@=nT2#3fN= zLqP{6V`2l()3=5mg-;UQnJ>HgH6lzXt*5NC*Y9h$nOfI}v{Hc#ZBl5U)gzG?A+i(k zM_oLIc(q~NtE@S+5A$uF{|`F>&w?A>GtAKx*GWbAq$`S-Pftor#2Qs_b;`y11S;s8 zCr|vI(Z;RI3E^*E;%r|+ES?IFTCU22=XLPF5`eQ=mDqH;56xAlEF&mAZ8<&J$9l>c zgKZcOcCY}ImjnrS{>{VwM0p|*6(I>R%Nb%oMsCg@7hwo~yu?pHE@Q8*gcvlbTPk1{ zMoa$Bab8t#*_hhVZr^g_-Q~b`B528c*NO8L89bZ#?0=a-A7w5>}}8B*413U7}E zY6F5x>fXiv1B=z^%Tu45?q=F#VHW3={m?yQF{-*}a=g&oGD1Eot}|~(Aj3lGUEIfR zQ$to%AnHT)6f$E}ewGG}Y;fw4<{yGQlTTA3NzhrQg9Lz^Eg-BW#YqRepz)jP#cyim zdOOkaJTJcF_l-;U%Zm&6-eUXX#T>v1`xVyjS8^|ljz#R9yHBNVQLWK)?{J+i#as<=~jI)Gbz(>JmG(GddM0}lF6MVp|iVpuO&bSv}PVTVhc1$N4t!axh6 zJU)%;R2CzNRjtCRR!E4^+MDRBGIs5klWMCJ2X@EO#9d3n^qx>-f{gGSp+KKl)k*T} z3AD7qspkSwS82S9NZRzSu)u5`_p?Gt)^KVBX9pmU>Swr82NK zO2g1f&pdx=cFR(vK2oM*#(@FKnk7LMGf%}=6qUFA)WOoS%2Q1=*Vqe;@RigS^>RwR zl6tWCQ2BDI%NTf60Pz-1xTG2e*H+I0-7b;>JMq=KodN;@R5 z%Q6-Ah0ELvmJu*BQ0&W=*;g*}u2^PoS*E^NfyF;-rMlVrzws@RAJ}H8V^?6Dj$c`l zr5HWVa4DuvwnSG4v)gHQQ53=Jt(GY95$C(Ag;?XW**n?Q5pqR-s(&V3 z>4$Pf94=GJsRpvM$a1jLl;R45RSpA@-zcO&cH>ZEAUV0Df2Of{f4UY2=D(MfoVXma z9F!Xf8!QD-LR{NWhZ@$QhLJ?B0rrK}^$fss*D3*@>n3Nov}V7L48%$=6Au8Q zl}wzpXPIt$Shqf`+vgN)y@a}+(Vwv7z7Fw{EZTB{gSr|Sesd}0L_3a%26>;D<01&8 zgS=e2vjh|kxOI09HwKPW`H6PF#m>hkm-atS+4}+QxbHN*kPu48klb^~(%}R(1h>u3 ze-XD|+|PPpKkn_t-ckFN?%2=E#HPD5vFQnGxw&6%F-|rzb!cp}DnSe~V}5)EBdlo7 zK99`Vk<=Qz8BL?C`3`$eoX@#}k%KfssmV?-fssX0fak?zQ)W(^G4NMvJP)j5?9dd5 zjJZg*r*R$Q@pvrEWXjtl$@v>5EKf-F=!f{3@}1Vy$1Sy!RXck47qBA#{h0^M;AX%$ zqOU{*#tosr+-0gWx*xSom2Xw`ktg;CJ;5DcHsRp$ODFtf{0}D#AKzqbU)@UDk|oa+ zuT}>sgt+l`?b6T%>{NHJE_+~g;{MgvhpWv-ugN#H#A@%^ z)$lzUSTr4&#-v!(pH`Q@zS@I-YW{U~?2XlBC{IrWANrAwpSzmTbLnc=N?o>^H5mT9 z4?bN9W2X|xzzP!&h!{nnKv**1Ht7ph{u~d%o9qomchZUBytZPy0}$;~6diQysT27Fk|wb-|KQkCI1L8}KNK~z7>tt{#u4^`=s|H)2fC|D4os{{8TT;y z)s@=1jM<=0)7B{(yoa^pZZ!WAS@RK{xCPbz&`>iB+V;|phC+KHb>=yZ9ZJ9r5ZeL- zdO-`bCUa!Fal~b&vDwUP7ezKFmGj_ekQ%Y8?UppBX|f*8TIuO2(o{^RsxsO3-Q)Av zs7m25dN(|yIL!`9^9-i>`YR>6fmZ57)cnYpL-{q1*sN%>84}T`kCgSfvR+VhvUotn zeCu%)?&JcI#;1Y?L&!BC1ArQv6N|+Iy6Rwur9b#NQDsO7>)J5r`v9ONNMeA^3S;}q z=AQr7=H5l5kRie5uF%#NZJn&y+~+FpTgOlx#ek$!m=0);$i@=` zjim#2n@zvQ=H49Kv^@Xzrqg&n^gQKs(l8Am)uJ#td!QuPzaF7uQ98w-wyctJJ%Zot)2{^bp=D!uS zWj4-E4#p%db3b(wc4J8%PKlCe7wb)VLdK`=p9W%3FBuL7dT4YM`03&B85NGcm(ipC-FF( z^tR;0ut~v#j0dDpvPm6iG`Z;Q)6gxk>;cQ4C-rz?EzBd$|jsm?BjQtUuy)m5JH zio^QgSqb%9+oXb&IbeNYL7)1w6{|9b1TR_fS1h|wP3b>M>kGLy;7r1zc>5+D;2T0#*M5llohB8oivDj^9F zdhd~5LkqnJ1Pq-7M8yIGq$xh32?`>-pS8~SWx-O3i@whdB&3^2{6!H&V7YW5W!7ig**)lXX z(E)oBBXcGv$&Sr5z)HWra~$@*i%-FFVWBSAnEae1Ca-s)$Bek%>Mg)bLw5eFa$ca2 z7e!70ms>kv>s!jrLdTD$@pa0o{o2YVz5Ze8#dj z`K1pHGLO+r-AX>m15NwL6vpV~r~oABT}Gm7lN+g=SIFfuxq#NymI&86>$KPYA0^cI z1DexaNHz*RXx=i_NC12O43wRvRG!ZNK1B+sx=iD(;C@Xf68kMAcFcXPctYf#6u-eK zm)Qao-WKi6v}PMK!NB@F=Xsbgt@AXjpCH9UQv4wIn3w@2g&_|4 zo2gU>VSEwBUyD(LK6(%$m#0-irn1=bwXy_LjP&x`w-gI;lpeVw74R2KiH z^zsP;gX2hZpg)1KVhg>BO$l5<)Heqw1QKwIP2;j+t(6SZU|@Y7H@fsvn~*Yn$#}=# z^J7u|NW>ot{gD72dt8RD&ddj<7v@uZDetGtAEe{=)B1xnTj?hSsID#2h3OvtG}4^N z-5Ge$t8rf2q>H^UxC@HS_SvjPOWhMy2Nq&`fv3Sx#k%5%ZpRh{3uhb(Cl3{mEC>M@ za7aqcLt;N?c5$VrKO(@0nri;$g5_w_dVEJX8a--nd=d=LqW*y$5Ej>h#|SA7gf2bf zc*`*Nf*ACGpyV1^`nW$fit@?>17N%uov&6$j(?7$vDVjBWm@ z(tlH8kvQ7)GTN>d*~{RXA|f?NxjS2mM|CGSTdHTx7RM73Mh3cOdG`LVLrig;YMldB4MXnHt41`pSr-s26om)is+v-SBl-r`tE_hqtT(W3ST7I!AO2tW8#7<+F6QTU--qSZsA(z( zfG<*)s51b^+cZQ{@In|V=CH@UUpF*l_(_}W<1M>fe0~$CWYCcOe1vd!)6k$%a zpX)sGC%Q`#$5o74(o?MzeK%Y6!E83vgU9RhAuKpS1}6&tGp#N&{^iEK&VW*J;{$A3 ze?fTr!eBcj9)__Q`;+|Ps?o1AaSJ7U)jZX2>sTDE2AMp?Tmhm4c;A$7NZ5hcc!=pj zQy|sZk^~iy6{b16Nt^SGIV{)Ni*AObAew=C#K@J<5xwJ)1@Wdw^^xLG6727gsfR%! zrJ42fgdPxob%P$_^#&w}wA`$scHLIzszd!<`JL)?rA|ZLi%VAFP}!fVMOzx+yl3@5j2-s@Pi+L>$kRBb_RFUjK(*gs^XD1r_gKD{c}#)OHm{2C0qaU$gS<)IBdGlPu=gQe`exKj8CDf59pi)MwQRxJ$(Og zv6+1u6EE zilT>I^K;jK)J;JuzP*v7LGT6xen`rXeY3^$=f>v>ca<_z+|!vI2?=myw?0ZfF+?nZCqqKfW<4q~lK`_W+4{53Dz^ZlH50M+!4S;pKEweFN)N*1HGR8(25d7+^>?t2Ue2 zC!fo`p^D!s)D;I&+^m`JT?%ori*<^dL;KA%25sIUb(PYfI#p`tdzZSnWI4waOSbMD z=}*OQ&9M{+&H4aX^45@L$+BcvnuxywB7>exS1*$8WIR4O77zhg$1dNv?^v=d85YaP z8j&l~h=gNe^P8AG$gmx;B6bd%>-^aR#$&PMDd#3uQTX3vt@uI>jrkKN0Fvk^YkiGY##8DbEp1V@7*Fv-NNktf1dh zhc{kILU^l;uMlQ~FocyM9L6C4RXnF?xPJTA+XR~6Z$-nMqV69eSSiJYvgvSA@~#nX zx-3(hRP!S$I-3e@f)RbD$Y^;EC`;wR6^f0|IIof%f3^(Hkm3k*&l8a}7<%{!)X7K= zXi|P7)Qh70p~xG8k2MGI9jGJtFXVD6V&a#cNPWSfctw|nW8~zd@-TZ=^a1ir1Cx+5 zj7N_0CPv_0w1k0R3|Js@L7&2(XQmE(2hcZCES(q8r1GXa)f`3q8m56!x+rMbAW7s7 z3p3LhqMPNIBu_9{k3#E52GN(%SF3sOUA&sTHj6wpe>MxukHRyEXdHTDH;eSY-pzu6 zcQp3`k-AX)z}boq8~DS!BKH@e-VqIF%6vJ9gH9x=`HL`>;0bA7Bog5tE3;<;UPfWx zDAI)WojOOC;&`p}ZZ{ zv?F0DYQP4{gHa~vOsowJ6!=#Yu0RW^4&%95Z{PvWEs@&B<5YN)_OMFwN`sR8bE_%W zO&`UBJI$op8TEw-VBR)7u*{OE_!RMCvXs0_OFhB_=BYF^CHS&1!hQf534l@Tv_ohy zMkSq#RJCTrQGp|@24mxG6`VjQV#L96=uCLJ04aJ6U_cslvmq6V^HaIH9zsISk46l3 z7wsy1N+#)5uL<=k&J8GcY?9UM%pX|wOke)-B0Lq>AX43pgLF0w>dv!aq*`zNN77qw zwRAxhLP1HKX{&*=mIrKPJFP2FFN){z-8U7{^slr0UaV;4IlSOH>j2hU5=zyf2IJ5{ z)^m##JHe;a9#LeaL8JQ5HLWUbMg|>bkkNL=XvFsnv7#Q7e0n^FW*%WONrJ&dkr8rq zdTCPl)#MM?-)FkykrMOi3!Aa*`=B6qF`cNvg{96g%xYLzk7(U~M|UN6bd-KqDv%5p z3BxZHy-`aL$c#T575{&6`@B<{jpJD?K%2y}@~s=a-*eAKJ7w%>8V(&UL-K&omBQ zRt)DNuwa*B+H8@jp_wpPhPVG<85Z-@4wumpsUy7~cxMaZN7&@Hj?e+#p^&P;Lgpgd zK?-D+fILczbBNQvE#!BJg%JCDMyUI#px>sG*X*ObCpUBql1< z&SBXky?aDwh)zZ`Ro17OI-jO0wu=|g&65yDGr=%LXtXzwcdi_&?Kzso@u;S0b9^=;}Q(b+6q29$DH5 zjZ_yMzfqItOr>VKgeJoP(zE@YyknHhJQSrF@2g0n*1xeMDDl;UFgR>lm-QWOEH_66u$ynjqTrQQ}pBH)=S`ek?PsFOag_ zOK9x~m7>=97=Hw^p5eTR(QL!LJF~15d^A!-`c2XNoX9>e+Mg4_^I}f&nMHqnUg+mU z`FRm0pH0a=Q=QZ4S+w{DmAy)}NpYnLE>o#YsvdKbg5RJ_Dp^3&DmX(y)^)$|?-2S# zSw0>c(tIY$pAZrw0i|G?#q%<|S!TL(Jy9<2I44^dZ!a?q>lOVhE;hQz2)}X8`OoeF#_oEm%SHH0Cn;WOIEPCn??+3SzDmV7`wP?cb9M zyuy53ei<~C3_))Gt!ViEokM6u9pRLroN|L$!YJ7wwg$=9lk#RUh10JT#nO>1}>}$967mGtu$?;(qY#+t+kksV0Vv3r4ttdVt z3Rei{ezX_Af|7s-FY@yf)fiI7=j2bqXbx_7!&}^Orz&}+if(jApQwo3#cP!LrxYi; z=@V4;2Z}(~YU>6=RMn2~Z*fOosO0&{5$7s-8X1Ll?|(wTPAtLoj>7%W5btWP7Ty&Q zzv1Rl7%0qHxx4;#&D)jyT-s}HQ1ZHgGyIVt40&I(iFY=rK68ms*9t6T={-U$*1z3N z(bh+m+$O^t-7ya-c~9-Q)EC4HiKhf^up2oleYs~uh+394gK$$5QOSjP_tmG$FNOvA zN8$e&?1Jqbjc!#}drDXiZUUzQt9x1Nzx#1|8-v;D0e4)=r~0BN`Zp`9Fvg51xBOm$2?C& zpVu3fP-jNND$aHQN@+KpnT$jqT1@sY$O_x-J9X35{zk|&#JC0$k=2+65_;TJ+gj0~ z23;!}hkE0JG2TSM%O-HsvOp}H&5~MRht=KaYIs0#Sonk(1%8}t*y?Jp+YBQPH8QSC zZpo5XU6OcC_k~P?O+|fWqWiok(0eWsD+(ZTE~mSzrND4=~<_G>G=r4!GKv% z8VD+sFnS|5;}auD>)WKdGr@8on{gX+y-e<6t#8!o8mZQ!*l3e2n|2B&Vx}2*zzB{| z9|}1QCN95RgkJENP>m zl@o-ZQtb(1&WR!>1aYF6ajd|vYLYhpjL}OW+cxJ-Rk^_v*LmT?Mh)}s7j=IUdN-FM z!~f9YMj5a7%oQG?eN@MWq2_pHUX$iksa~_~X1>X^cGx6$Di?;`p;x-rOW)|VCFy}h zVB>=bm5k;ZH2bGWa&RvRTHL~@JynOw?3zYj1oR>?1N+%vWB&}84M(7G{?wlcvv1TjOyRKJ43dC7&niWr@&==V@Y(t91G{rS4RCuU-6yzyin+f@fJ_ zXq-(qWdpk4cc4ya(R2Y!|76&}$3L)xUh+qB$W{SE*rnFFqgW85I( zF59kq;nAU8<+QhhLHwjdbzGqj5Tlb;B^2Tf>PZNC0kl|K5xYZ~=}D_>KxHLnp2da? zJGw%wL8Zda%0ea#4Gl?Pg{aS+~|#uQE1-04x#}a0|+=s66O-~ zPo-cmios#^$%%5fD&w;lY@d!%Adj3b$rDjN{V2Yv1(Z18rN+8=m;Llx8|!%G64&KQ#rzm1IWfp9&bN))7^}HcG`KK{Nc= z=2{f8m2^33fzHL&@u4M>mgn+C#jA@-XAH#d9FLr}~Dvbim6z zP?9fugCOR1c}dTs=BJo^4;~|PSF3ol!X2O}$TA!Mk9|eQvb(w5;}xC8?&0$uP7~QW zAJY?Cn&kYaT=TdaKIW>&38SN|;?s?O@fdj5ikdjE zyj=Uy-6=pYAhqg|T2K=Je;|t*jnw3dsZ;>&H$h%@B>9Jh#-L#ev)p3%158V{o#8TQ zZl@U>cB;Y4c~K9E6^XCxmzZEvcthX(iT>%>ef8qu$nyiC;s2#@?hg8je$J-gp|qs4 zDenzmzX<|EP6)>vTQE0~!TP>HZwzF&8Aqgd7)ALC{HB9zmAZ=hQ?9kl>+_S2&!U znZVbIU;4aRohEHB+opd~{^?c-5yMWZlzV;}@=EYSKlz+tm=ll7;Ax`ah!b?MRZ;!e{-L;}_rX^ytPk_6nySXp$00=xi<;yJqliVkK z0Anv=uzR2Q=HwtXSUqCdnJFgBQP)fVM8p9x(h&^RR7wQD4$7ycwr`wZ9wu$Dyx9k0 zs@SoU@pzF?>ll~7wzMCeYaNb}l*dVPf&`GRhRBO-pQt5%+?%)>zM~h(A!a8^6h15b zxn9P9Qdo3*Cxx2;L=9E1@g)CS$ie9SKGXHKN+{F9=5Zkg6Y;EJHrEvn z_Y6)z%6Af>8N^eilG)!Q{h_s@{|W?7d|{g=qrXdWj7ru%m11>m?K3Hkt*w17#qqVZ zm5Q<=0m=yT>?%bGCR-Vea1XWF>VX*61B9-}u~?5UtRAS$usG3qEML+pxuTovFUPsR z3bQBqg2okS%=4)VT{}lGDHW1WUB%5WOv!yLWj=_^Mauj^!Q@?KY?=FK2ztR;o>%U?$dtmK9SidGXIQVH@_Oc zf_MXD54Wj(ThUKmYN{a#@#0sgn{XDr4&wuFjJ2B#DA>#39E8e?e{bbqTM5Cs49jj$ zDlfD90Zg%70D3f8{2jJwUaB8sDYZ9Q$AB8-O315yABP2`~D}`tQ`_yP5 z7u`(d8(r(60QK6-OTfQizK@$UlY-Yg@X`f2G*izEG91y>RhLFw4X-{Ru%~~*gWKXh z6Kr8=;=6gaO7JaMF zIWg1CFx6j#YGp*NP=FBe&=K5U@)xEERHC^&5)FA2UgorH@%@5dEZ{aI;fbm$K2C=| z*{ptrx46$AR@diEl0cvEd;_!t&^W@cH@o60^x;`W;6^Vg^)@CcNg?zr;uB#eod$`M zu9W>eBO8*E?pRLnF9vI4c5A{NT4A6~1bOtKfZ-}!k6tXlM&b9|H$`br@O$=^z~XV8`Hl)Is3HRB>_l`9&0t-Hf= z)!Zjw?cHXOz^~Zs$uQUo;yl`_@fVEFRx?jX2qF7;Nv`u`j=2-lC%b2+kqv_m3cn@} z>ik-V^Fj{Cw@lrUvw&T7Z%*8k^DM$pR_@FNK+_m$)=zP84T|;+3!I@gBrq&n#&^W? z)}u0?CCw5HEOUpKxI`!Yz+EGDUM;*e*dcTV;ham2@ANau@`s%dzO1LIct=Joc2CVl zL;O^WANQfNfmz&0lq$q$7`s8f5u1;hx{dmMULgX;mdRT(*vAN@iG2};t$MQkzoM@a ziV_vekgZI{E&(6LDBqFU#Xb@%wYK1_#@n?;T*;U1yG;YCORxP#SMNr*w3bAo8KZgP z^*gZu_^)2Pk+Ujsz96fQ<>3Z-JztfXMsZ9bT`&Kfuaiw#aZDa2LLWKbhk*N&L zfF^4h&t^3?O8s)B!GJckvfynbOj&f&3A?f%& z7;}u3uv(ojbJgnlsNuQ@ah2Z*yJBB`FhQ?5a&LrYs~8URZJ!t{)`}Wa^Juk(K~!r7 z$e;VcIT)HDOApCw+y^a;uQmC6*E}eDXz&tx?RPL9V_>B-Wd_r1B`Jwn?58RZW`fvx zV4LN>Dcb;w>=SK^f_*-AaSnAd9GHhhHeKEthQB8w<;y{bh0D~zslBpU2--hSr+jn%K6vgIQ4!MEQY9aeHx+m+gR;m)~A7S zUYC|v?l?iVc7k89p-zx~#mp+#B`0_pU1Q+D#j-b>l7Ef;cVqb;ejR2}-@}1byEfwn z?MDX`lMgqmV2di`hdd(MZWYn+hj@R)Hf5=sT-02KPM@EL@mSMbp2e~0I0x&=a)No( zlFpx_!W@yAud6-XR?(`K`Hi5>7bNRT0uJlc?eb$I+T?|<<0MZS10{xkZ6=U6-x~?g z7QQ=y2QoDw+8HhO26W@De@`wR&wqMV}3fmb599uuv$xd@?(;DGU~`NF80-ckTuZ=dk%Lbp*sZJMe2 zumupDn@+=88DNo@*YW zkS)#nDE8eTmfbA&X5U{3#(gIaqP=Q6Q{j%sVS#=b#imYuNlh-U;$bXff9PP>GOWKM zkn>i<>LCbg&%TQCI*M&$^~3gn_kdKsD-Pj+3nbq03GydoMI;9d6Msk!xY{1Twh8)G zdq9$pcn}V^n5BW7#BG9V%vXw58FWB0>9-FLCq!;e7pI4_S|+9^)fL>~=yE?M4SN`X zoKj7(+XG*Jnlv=aBQ@g?+|Q$?w>Y08co-Tm51Ej(8HDR8vU;j4ox}UcD-v#Nnj-jc z`sPfWHx&yM#1+j?72Spdt$?yi*nJXJIjYGjZk$sEy6v;%fk)^M#HKxz2nw0Dm)0r>lkJS%H?uj6oG=rKVU1>=Qd#Zp4cW6 zW4`=u(v>$U=Ui0*!V%XK|0OZb#*WCf!hHpRj(|}n7@Rh0FlC~H0P+Ql2{J1J_JLED z3~=3~QX>a?YMML~`~DXaW?v2l0?HVEfdN-uthn^j@8M5uTGGrt0v~;kM{DgU0b60J zY7m*s!ehyAyGZPD-fSVQ*29N73I+yF-)p&F9h2w?qTcst$_&2(J zpDXz{mHN9f?-XJqsPEx~aiMvKYpXKx- z0)1e=)j z$`rrHG@N=%&IzYsMyGW? zP6uh%{lP#tEr{2Xhlq$yt4<`wWW5HiK`WpCM98A6Q<1aTJ3Z zpPG|sL8gyjTHXd**YhA&3+ug0Yu2rIXB&PUk>H|iH~F1%w)yyoNVD18C^Q*O*Ic~E1KfFC3X-_XTB=-6_`*ZRT($!$!N zbD5;R0oqy4*iQQM0Ga89tx-Wd!kUt7eiz{_i=FkYoQ}YvvIWZ8PDKf487X1 zIZxFM`r7bjEjH+@RPxn!Gs9+`_*vSyQ|u=PL42lg?xXcS8mXU0FiO<#dp8CmA^@>XL6G3I9!ZTAelBsz2XGkQIZkEHxE3V-4d5toT(KfHcN4 zfV&!KX^UzF;zN%F0*Vrvjkbuz{=Srb$0amWj{Px6KanRW+9UUqQz13k%}S+Bq51`i zG9E*#U&#h&v$F*Xtc{K4^Z07I1bP)+`B|Y4mzx9{`*lKoRXrixyJh^2%+8Yaw&p=M zKAOLfwed?EarvB7O+uXG)teq>*{Qs3%6cA|6zP0feWB`kNXHuIbu|p*F4R!xXUZKR z(DHijZG4agRcTTD6x*T~e2*n8W?=3Lb<0j9E!6b0UnO-R7U?N+XNe*Q+hRw=kDWB* zH=5psa-$RFCPgMD*SiQvWQtrZkiW~n-gR)hv&paU1YwpzQ~43xUj^As=^sU!4m?A6 zZmQ6*6Q{=!aj7y%%GLWQUNCpaF`@VcN*k2&5Bua4SX%a4KifnI(w3MyP+lU{*~0Bm zt}RG+k>Y6}D8zD#>JS7dy{8`c-c{l~V6pEav1nY@c`@iD=0mAU#I5p8Y{2CYz zo-Q!^MtU=uvBjV}9_o=Z0ftWw4<~ZBL-;Q%t6|ndPs+uV(=JhVI?Np;>a7+g_Xvw| z3G_eOR{^>|IaHk>-8_WM0}t{&YA-v^Wl|4gu9g#cze9sxlj9#R!r&e%S7I38@y;(P zEUtViRGVek?bQ3Jb5oj_rPNEOF#SCxxQUac^9QS-)Ay(tP>IVe8gs}`;o}eG(wY$X z93eo)>-Ve>U|p6r$h*|dQf!dr(ZeI0(F;WB9cg_Zieu^#>qcRK4<`ttd7nLFq~-XE;z za(`VgM+e|Y?Cj8~Nh)(j(1E!MqOwn|5l{#~42oL~iZyKgv6%NU%e3KjwD2n7tisJ_ z)>$X0e87X7lBw3K3({9XmJ|EA^Z0;8u5a)%n5H8i4&lT8_3=48k6 z5L1ZGm82BNM?Au$k9z4xYUg>#4~`+L2pfM1dDnb_MCVL&R|axmS~+|t=hrFo34uuY zsi!~j7(jmfR}V?Glg*Y+AwPx+21Yod8(7ymv4?YQY%3Hb0X2!rmee8|j6%hhW@-_^ za_~dic7kxVC*1rpGi3jgofG^ zP})k|>dDusD*3vw_O;0Z)>bP23%N6mTZa$HT`N8jd$;eU_ICG@w6%5b++O|3=IdPN z()2h3OyAC+1oJbah3*NYax)>Eol@tduyH@*0gGc|@8neYeX>-)NU0&|7gLQWl!bKl zyp(%&%0EejCkuCSem0VHyv*ZtAK{uzxtRACdEdYVkSm++usiBTSm0~TA!y3O)KpX5 zxi(U}#6!R(t$?LKRi``OjQ0EFYa*BdSZ$Cvj0E)`K{uxA1G10ZeGEs9(}ap=V;Vi@ zp^Q1s45V5kKBx_XjHgdT*v`}sJry7^dRB<*&+AXSF^@`yOAlpKyC}8m#IAcb?lH!B zGt(+n9Jow4t37;otGq0P?TMmbJI|4}W&N0_u3=lV{;^eHn~2dhQW(aDjOlm#(~*iv z-y;yeEz?YAK!)Q0_UWDQfOx4|)Y+cz`}TazP;9lKb|h!~FWaiG)2d)eC#{-AtEM~a zvbI&yw(1_+s=H}b;G*4Ge_ciV$ev|q-Ak+3)~t`Vt)fIl(yG9!cxi~f#L~KfC7Yaj z?>(z~e9yTu+m7P^K#Z(=#zUSxO~tuVj8P(@D7k>k1@2DlpS|@yP~x+(o$4)Q_2EtV zUZUSzCKCOoA^9vnh|aK1oGYD;S&MHff`Mo!8L$FzCd@&(iiMWid8C3_S$mw{mOXZ3 zyZ$S(CtTRIz~1>{=MULtl$F8T?{d8LN)BS+vZYy1WY6!8UNM3_zwNxvo~1C1hHu|@ zzTMYy*|DWrFJOpWDz9O-5|_&065>hyydR z>sM9rWi=dGU(5vd{n$CVORP_v4o8Ay=)wwgZ2)l`aU+|`nG%PBnL5liuA8vQ;1!d( z*5tkYz4maf%u(S18a(fBS^w{(st_LzCT(x<;r2;byPhr0`bf(Yj@BZipzXC&wXB#k zaH>Vl?X^=?2TldcMi}gDyFfR&*MD z%PV>r98$!Upc8Cn1HG378|l^o985XA(5TCksR311;;|>17=Wx8$qM9!08MD+t5}7A}IMljZ>pL2}%w*O}3!a zt`|`{^;MR;iJqnoz?ax5<4PNqle7J#sfU$ob^01&`Qaor(fH%t-1$0v9+4$j*^)os zE#D(z$ggh$FPFxtCg)=E_P8FhKKnKQX`OzGqq9+=P*;bq0T4r=o|5v1Vgf-mHgrNu zOi2H5$60StEnmgZSm?%t|3;YW1o1ygES9#)8$czCt#VNEc~kA570ExvNKj3U+GEF2xXbH`p3 zLCUG=h5F$LOl#^@$>gpJqWn%{adFht&o`66CTNqjXvBu>$yGw_Bgf%mQ0@%t3F##J z=MD*n!)el-F7&tPK@zy;{+is4Q*l{TH)QVCH)q6#%!Hd!#y%6jhp{--5QV8a9N3=; z=XFDDhFcj0M_~(K@Ix6S7Sc-1uHPE-I~&~or3qg!$fRDsn=n{cIAlZ`4G$e6n+bbj zw}5LOrK6_Azn6I1{s^0jYGBzHik>=uFd=2v+DYBIqVChW-En@;7$(Mz#mn!$M?++| zQcOO&$ysy|J{9O}H=36F0Ae*d&M1a7Uq!t;{t(#$QHl&MX{w>?~9mRDLzhcIb)74Ig3WlRI}1Ei4O;0^4ALYcoEGvyQkNR^mrSc zn9&5ao5;+F){36vaqg`FMTF1zB+JF%7fiia;o~Qe`U)_9;$r1qprR}lE-zH+FQ9ny zSAk&9Nb$a;Eat}+<#s-9O)M^0s0I=7GI?7~^en-fOUW6O1RheWF50ag1@Ki1Hd&H& zT**wJ5&2O7?zk-g7 zJK+iZ26@mcWw#!?f{r#yc;pyhc!CE6qQjeRg&9kEkK!_m+X1ph`3xepW^25k$l6}K zM3dzP0b^H^N=}}-vTRBtIf-R#g5m{Ud`8r4+O_a4iRUq5IU-r=oJDiuavH0M3g`qC zLf9;3=4N?o#rXgDe=P5TJ*V-jTr144gxQ_9W0Ji(iQREi`TxsrgPf1CXQXUg9^IWP zUlNDQB|Zhn3ob@K*Uw3Hk;rWkZUx?-3?&@mf__AjnX}`!^@QNXo!EqBojzVhk0646mnJlO616QJ6BqK%uz(0E|lgX3WIPy-tQ$+9v&Z=8L4g&x!d9DPxjiI zy*5fBBZNtky&jQre!OR95W}JNh+j>H%p5$&L`T0z{l!DbW!Nuqa;jG~d?rAXY(^6J zXRtXrAortD$pzK16-*jldTbnJ%b95;x>*3DDS&3L6Q#~NiEWgpS`IL>ylEh1qe(P( z^0MQWLA<4{~t7)XSz{~81c)Q3T-Y^L0pziePwN6RtI9uzqRvjgI7FrE)jC^fC(NpAteQ)OaXquI>&j9 z*q~TMX&=@pR4P=HzJOWqE%YVAvH#h!g|uv?c*e7+zvsl!3!Ozj+}_nA+tn+!tB*-K zaq@r3{y(MG)rbAtp7me)sI{>XU`cO?L12(o0cc@jV#++BLHI!9IBhPg}N;-MIFLAQw3f$gOi?Dj@L zIFx#dHiqR}LI?-CtXrJFuSE+@ogOJh4eVWiKde?_T(Y-`HvNyicOm%d|J(6>dj)J6~0=ghI(^F+7p2z2S_^J39Mof`>pXBHfCw^qUQKRQ9WRvR^Nd3sng{ z+tL)=?a5ct-fQXf&(nn`)84TVpybuUTIZ~YUo(+A&K9YUQoBH!M~paOskN*IX5NboHk?M0^ zaSHW|%XQzV6v`)ydQ;6bnuav^G{1&Vlhwigke;sU&}?_LcT|t+B@V_?uBUo#Azdoe zdDSEAfcUc=5W&Ebr%uwM6-;gZ%+joIW_4C-W`0(~%<`-r)(>;u#OsM^EMSw!5^GC5 z;o?|Vt#wV8I?0soWa9VlGu4g2+QR2_{?|-#g^B!9e%vIO59XxIuS^w~o($)PjQ)6G zI2D@q`h43CVFm!7r$^wf6|r-G9uCL<(AwN@0~Y7v_gH~m>J#@4-70~eyw?zxgPv41 zLTOJgU29R(Z;2(NoJC7$^!%Akvlh*)<7Vn+wJ|f8nf0^2?K~UUzzu;@l5w!cAdZQS zcdI9o2@%$1@)UDurP~06V*AhBrc3Sio=iS!Hp9YsDr)f5ho)|&>qYi^y^V<%p=3PH zFCXj6o!M4@wi}UbZT6vvF;rFq=2BXml}N4qxwAQ<1CZahQGp{uD?>RGM4xg0lH z=7xvG4e2iae^NU4hn1APCGc*C;m|)X$lVD~SqL5?lywRi$0@#koj^DIrhV#Fw{$jc z`ph|A{rR4C*b!V@Lh8+3s|_@nb+t zgH#MkVb0oT6tkeeh4Lo$v(>HhXukUqvTY^am;>-uMjagnRe4vol;M8q2`7mqqn$-7 z0T9gE&3QJey>T1#1#BuCKJjor5f*a8c*py>IWcDsz&nt#6^88lu)zSljgpKS2FohV zK(RcJS(dg1Jo@|6%-3*37A?c2o*#Zk-aSvx5{584P|# z-R2jb^}VY7-b%_c4%9dN>f4xNsC!>{`BiXhgkLiU885oYG#>Ao{mp@P-%o4%;=9bO z4ywn2tqd20yUWJ#o90k-=5PC{Op%CQE*_d2TO!YW$0LS~iAQ%YkF|O+0*pC`HZd}$b>@BjYS9&DJB<;PBjwMEFgfY8Scnxj$6?jdz?jAi($^a8EMsc=Z#ZL&b9UUGx3yy3;p{#sq{(mS9 z!peU)D1E@MetrI`6cjS+<3^a#@O6jJ#^JJ|xPfi%lQEF?;wh#mAEoTrYTwx3&?<2- zHzFde&m0W^uNMh=K_iH369fJsNqG$S@Q^suBo2?O)PtBGi(0sgOT|nxYZSN9Gc%f{ zX8N;c@eYe@J7i`Gl{lC+ao|?#dGCYSZw&jzyze1=TcJ6P?@=th&Y5W{>V23BK2HtP zmBT1ukKV<^K*n+xwKxOwGGm%Tz!3Wx=;{%A&E7x4(n>%fW^D3Hy{SZ}h0*C$*A4v( zL&HQ&{_|U5bsHu(u!?_dKS$;;vy+L{ZiHlEdhzhefuwpOOi}&wsW8}rh1>Q+?s0LeaEV0o(K=|B+C=7PObuU190d&}%fieyLr{%&S3kt+fC)sKyTo7w>3s z^2_C+S!|DcEzC{f4*%oV4I#2)pa0x?duS%Z3DLAe;6FgbAz|I#B7hFfRqF-32(#Qt zCUW;SL*1Xq?DnF{5BN4{5#S?aCKyGAV-L}2kebX_RjdSMXT+5brtgvG?* z1I64by6t!jGB)f(D({r_};XmXmTo2ZZ9oHLX2HPG>#90SuFwI5s(FaNU*{AbN2klRj%KN#P;7mZ$p`pPQmZm^G;oc-8b}0Ax9yzlK&f-V! zl04l%bbtFM$BEk4S)vd^+RAl!hWLAC;z#7rwO>OGCIVvtQ{y1uDK_!|=h@9d zFpD3ZTBYDWv`9o;mlXL96*&`wgY$U$Xk8 ztav$_mZjfkq1nWvty3R><}iL9Y@~hIZ)@=u-?=~Y(8E&Vm;1R?k4kYX_X`aYwL`r7 z$Ujf%XtPw$(|&Pz@=IucxrVxk(MwWowcF4B*AeGX$|72qDqoXof5J38O?F|B4y5>n zO|d|@rh(Ue5h?BRVj=KkyZ|T0zrSa=e6i^}fc|$x zqyPa$wH)ZVLU%=#MX9H*gUlkovA4mpp!uymcxuXR?Hvt+>O0xD3)(xG>T!p4^x+(1 zZrngfAm#KwDV#U4is93Y2*1h&ZfZnzYJ^8k?jffrXbHj*`wjP<{%<+k+`)uo;a!4O zMo&*lihlPCf%EzZmL)77DLxKnIm>QcDOQ9|e`SBMAN_1x_jrH8IRm3}R_%2zt$n>T zu=R|A@9m@Wd_e(%iM4%BN`6a^yOY#rukt5Xoa%YkcxJuVJsVcfaX~TlC$0X%t45!9 zgDfry7rrq_tZh!x%U-FCKs8kkd6qG-H@PQI}Wnp4Bp=mO7z(i zJnD<<-P}!Xfd_~2&z3DdrR`2})zwC9W2jNL;zMDsFlwFWeaIQO^1HMv{irlInUSx1 z=_I|NiF+b+IVL{V&ok7wONfmeZ)c!kVlhsV0E;7#2eaVX4dhZ-n~t$73s?Yb1-QlS zq1$JvZUl#&qg3#dBu#BrA~BXG8BxP3Uin%h3DC;}AcM=|SX{L^BUrf!NMta+b>jYtmDoaEG?*3jn zL#g&=>sSrOmnZnOf3vl(4(I9sqK|gCBX1GB;WgwHh_~$HzBm9!o@_gr_h9xAD@qUZ zf(ZY9Vju8lxPruocI{(71<4|qhdnV_CgL6rhywC&D>uQt*9s%r1Rd#R0)|luTqCzq z&L%hBVH>^5HaZ}@-ap>L4A4WK6W5EV=Srsib%GgVgUH?trnLW9>D(TU2Dnh5$f_1# zqNwHAI;@^chIL$_3Dae?{5B|&#D-~*&s&XsE2(;~*nG}+^ebXd&JsB%M^gbCLRKSp zam`tNbTLV;c*`(Ai1EM@6%5iEEozcKQKq5GZ1u|-Ca=OOLm&Ub!et)@u;V?T&HZTh zh=`;+;`@Zn8cf1tI(QU&A1C)?_Dkq{*~|FZH#8$adbisDZb8DDn>dTPQOg!H%tY<$ z?YWSlz}75aD2#Gf!=-HVXrLZ})tJ$BJ*nB@2A#)^Znt9zQN@exw`sFM$EG3KTHL<( zz}Ds+=U}ifU}}3opUpXG?K67xlN=k5Nk3@z+&+e0N7%zuL1K-(UYQOmv6jMDbinWA z70YKBFt=GI)b#=z-VQ?Jf7J^xS96e&MWnQZ6gC`|bu&}4^D>!ii!qEK~hAR^63#pN*wuer}#+(M}XUb0*^P%7H8m~F! z_kQSmpZauBeQglVr@L7FtR!AX8?<4dgCKioB+ivG^B5V#><+?4d=`s%lV#F3Byvqk zy!P76u>o2&_7Wv7RlhTrkRQ>%!F7I@>Lew~d^bB;^--E3rV~NfjQuOU{%8S{C3a!C z#cv-JHb$_UHbIH)=EHa#MguiCgD!vQZmu`eN6@jw_euMEV#j!j};qj1H(BlWog*{6VL*@r!hs;algOMUFkNkJ31}#jCC-L0RHBTl6kL9+DWaI5K_sCPMOqxGiFORy zXIT(`O?(Pp)d$IX>r-grZM0t;xYN{g4@*C>5r9QY8lC?BT9eOGweMp9qo!f$koC$YdSa>j;)FEqy*7>ebe!%p znT;h)NJUQw z4~R2e-O2zvjxE)OMngJ%$5!0XNCvk4Qg~DF;XDy@f6t~frviD+)+WtAihNV!_UHE! zBFVxc3gRmOfmXwSE)Ny_T0sSlO(QJqU`LWCP=HxZz}A+c`}9yoNya-R)f);KFTW7g zdJZuZJ6&XoO^ow6Gb|aqx2PncDV>bq=VbD=&t^F0`**56w(r)yo*(D{|4`2Pz*(3; zr~+%B-m1*7d`b6&;uLFTuFF8xiosBj`<5Uw8 zt5Dl5E%G18e^<9kJxcCL=_bTPJE$kR-ERNj9dCRUy}e>*yN`z z;@ioy+%5TBQ2@d*Q}RwcO!I*g4pSwYu~OJw<&qMX52XYZ#Zs|b9Jtb&e?%kQZ+Z_EKrVk z!4eucF&>58-(y3pR-Hg3N;Nr{7SxG9WpIl9B^!dmW5$LYh-B20vP3mb&4u&gr3hMI z?PLb$+jq!@vj%RbU(FzgMN$wwg?hx#b9qOE=$LGac+ouY7CMs3U#@Oqk75`J%!=6(q`<4YO!YzF@XWt+(;_hCiMq2D7< zpq+10H=@lX+Wy0~bjwwe@KhC!ETmBt@1y-DzZjv#{tx4#B*}#Nu6D#Gsh&%Y=C{YG z!M1(;PM`J-$w(9_t z>xg&qW)D46bf3Wkd$?HnXG*V$L2SZQxGKgtIU(zvoUIT;7XJj@#5DbBDzwnunhJ1X zqHgS`XVhFQWQ<|d*|=hzu;o*Ry50Et8Nd_JKJvpoXH8uZDh&vZ@F?d4WahCXmMrf3x{IheD-$@}1|?6YYyq_ho&Fbv^Se3> zT>MJYKzxT0U39Aa4hV;VzM9loen?zb%g;!Yhwb!_-ATJrxY`v$o+Lzu>6L%R@~$`t=;q`lysY`osimYks)Yr4JeKjb7Z!eZj};A0 z|B=qs_Gf|%6_Vb<0QG1LJ7D71G^JR!+q?^IfpX+At{-O@?>{WA#$VBubUrGWy<( zxGO^kxjRD#c`)xiOy)Knl(MDU^B3#E=j2ov&iIS zbuh1k*#Ys`s{l||H^is8H^*W_d{#s9H8=TuqI7foO=pc8PcSuPNK%vqLOK5to;@9grJ|J#<$T7HUP<6JfjS_aBz+05m?wR;Zb_*cv_Z}~0u z1ZUYzpUP$B<>9i%<zElJY_q$3rpO~OKbQV>GJ+S~UQYO5C<^MB6Qt?gai~wZh%fyk|4;vL zsowAol8=mk2lOA~+|=oM;CvrR|7~rrMvbJS+!Gb_4=~_TFCqMy@Nbap@9NCCI(-(c zYw3V<;suII7jxlr3MTx)HoqgjU-@K2x5VcL>a0M%ru{oS_fz8^PbE5Gekp^kvL{Q1 zb2bZAweLS;{Og&&Nu+I2(GAL9C;W?qe}P*&ME%&kRhg5d|8w=PcHIQ#L2y3*PQr`X zoPU=zPfE%pxELVR5VQ50MRKjh}nVgFcX> zpV(e+!ZT~7NsgXr&QJNz5PNq0ue(~m`9F92r|^Fr4eZipSiLdyUlQTVf=}@3#{tuU zGXGym^nXfDw%A8$Xke$~-C&z0kO#jR`4`6t|5)KBpK_I#JI0Gx&-o}%J01Yd!U&$` z|24E1y~_2c>#K#iNF{JR7d7JhB~o3*+bKU|&8MaWktweOatUL@|YqVJITZKJ33!4YBk;avPMuQP#Up*g8WNwUq8Hs*X?LY2% zkGU;f{xJG-mL2+9sLnkejVIQ7U}_G-bH1l65c#}Kn6L7tM*0^S3d{K`sbpq&2(p?3v% zIC^Z_wtubgZxQ~be(n-{7byMw@rv;us2})`D*sk(N5zA}cySY)Y!8auuKUQ`J2E#Y zufDn6SU3S41P7JE=9k})C9gGnR7;E>sy9rLv&mh`TqcVr%EJ8OBciZI7LP8xCQ5He z(4z7EBD*ZJTmA`2W9#G`^OEpR64@Uz^ZvB3OCeu6NkvmyDK7ku4Cl9Zwza~SR1Uas zw|++IJH|pJPwq8#;ft0`XMK#u_+v2Uo2j4REhZQA0$jDh8~~T|FwR&@KI60>x1}fX z|0yDy%goI~o)rwr!{Csg$l7o1F+(wnUopV8ZqfXQ9qk97N}yk1rLp`hv}nOW^mBI*Ai6Ab+$H9&p!G&$B;BPT73nec`!SIgYxC8j#LY{>GBE-9_! zI`!jz{Fo)<$|NIeAam`HzS`ou&-g%p2m9N6kJr3ufV^U0kKcmnp>QMq#!;nF?GR%g zP`9+$t9yuGkjeyGxfH`a*)XCZW%^7nsh~}4m7<$%Ln*JswjhH~H((oK!$FM=pdsv5 zQw48e!cH-kJ;z~j;7Gzy#pj8G$}+W}fyr`1CD|8mcs7^ricS!u?$+`=9wP-KNklpw z(7U^s)UL0xtjBjwIR^F`rh?ilY+rT+l)Ci{kp9QwgRKMMu9S#k4 zg)RP5>$_Wel^_9UjqEMxcZ6CguNKb3LAO*t3-mgO18F81ux=AW4+MMDV8{82hMxpN zV01R$a$7sSj1HwZPR`{#bDbMtatnZlKyOVFg6p6~YZU3~>EWsRG?)^?^l9N__IzK1 z=i;{`kad{wf zDsAZkBnmb2`jN!zwOUx~dYvGXhhMsNi@eTS)GNh*VV|s#BThVEI-^iF&ZPMT`UXdp|(Jb{kUoWg_(Dz%$;UygKvtsyezY-EQVX};VawFU4yOwxlaR_63qu$?r(G4VOc5+izc+FMo`D z7u&e;8*OZ2wM~hq9X5)zRoeK`8hNQzmDfT^n3^cZ$*HubUY2lFG`N{*YO;N=gszhJ zYQYs@3s;>ek7PcpP~mkaqLp4S2YzYGkil6bSc^Z`uom&VYg>NX>tKL>a z-%zvM$#U+{Tvt4#GHbIdWv_>JVL290kokL|&7CP{7fY{}PWPth#5uVTAePSR|-L*=6rdV9vT(GqSZ zJYQY0YU@tW>aJ{86ub!@R7oZ@Z)Lz)UhJ(3%C;r7pa7g|CJ1wV)57VPhvpmVI`507 z0N0p}?~CkHQFpe`oeA?<*hkVe?{Qu8JZ<*_&kxUQy5z@be0r_KH0W_^l`=7H@Q9g0 zlM-x)?$jrscvzol9n)zb;>fLfn|F2ao-V$tEAQ#jtJ=PXwR1=CoKfG;(XaB1E{r}s znbI33c%7;@@0bd)w$RNWY7F?lPTLpKxCs3q*Ku2Jk|pj=8uRXO?Zl`L%ps<3gS4hj zj7#HX@UI_gdkKa)c6oxkFs!``=t;6Hz73-SkT+h5bx%a6knc;I*-V?Mr!d=ko5z8j zade(w^4Ah$&Eff9mjmPr^#CS*_)gMjjsAnz@V>WwSG+@lv=r$s4fwFXL6J=*GgH-uLd4oGCCPw?t-Hs7H&t0#Byox`1No5Ggv z@0PYoI~{ygllR7IQ{6muYoWzvuJybdKv%~G4A52(Y=g|h+2Dz6(MI1*H(iy^v}VGt zq%G!%P9!~}+b%+OnCFq)U@cL7q$PU9&J4Up{QTy*T%VP!AM7G#P>caaom?T1dj+H8 zat35j*2uvj5luJ&UShGxi^tP)b}=jPSw;&qg4ppF>3o~?&6J@Gbq80w>kg~7(9z<$ zo3*;5GKt*BEnzcZT}<6?)2NYNNp~@EX)|?ird!@g7vD_BZ>8t58W5Q(V0$%gm(!r; zl9e5iF6jN<0Y<>u50@}74ZzCWNpn3I8T2p~Zc);Cd3jzLW4-tn%mi5_}3`nUM>Qt+KpAE+h`b+~Dck1OeVzL&5? zAju%-SOR;{tb&9!qLx$RX;3`R*LS8G1#K|fUr_-}<`5$JJ!MkN0Z=!L6OF8tS&Lc9 z#LWfQY+{}oKK+7{SPnmz2E=Bum*o2~5DX0^Wt zot`~Oo6j>CFwZ$#8y3YuYM}=bvIcLFhW+C%cB)!4@njCbP z@$h2d$0M7JiX-RAaW{IBI74mJ@c|fhChMQTjf$^ed}PdiG`BohR0rs~px7G+ zhno6w`$!(Js)&^O8hK#w0G8lTI&}h?#o7@oRht+A{~dKTi<16$aZ3hK4myPJ$&S|l zNJvh(A2%gGPKN##6+A>%Tn0L8$8$aP3o?+6Aqyz9jHxTymbfX0YO73ujY0(A_GG`L zzno;{4v*E3gIrcJ*WppcSSS{WW}PkuK;_U3K5a@%T1K*Rq8rV>N^NupQ%#=OtmET- zJ?6gL(SQ-w&&bLzBnOh04wsiq8j?iaI>Bk3--cS0&qcRCn;&H2a7TL~Kaz*LjJgm5 zao^>khzg@QW)70JZPNRt1`1~&1H;`Dx{pErJ3x9q5*F2D4%B$A2XX&2=>Gx5jBH6bFxmv@{K)iI#tHnHp zv^sm2Yt#nm#3B`9J*CHkDTA1pnonm%MVu>iLBef_d7RMOW;r@mysV=?XwIQ#Cv|05 zx5V2Ty<5NO%T69kPhCP!UpNhiNE9mxoo0m2cA;`ZIK4mJgIAm|kBmM6gm$I=s_}Lq zt&VwWf*8WIj?9cuIhlnp3Lc6H6U$<9x;UMsh=51XKTkp`x_x{VQn_{vMnqTE8L_BIFJ^FcbHF>I^Rz6d)|!%($DbRg8)t3s?f zOnztN^U?f_miyMlW$8hv2IcqjLj6RjLw(BJ-vvR$j(4)I;zJZ+$Ys+6+eQzN2G(tS zScDq|j4s9&S}E%FY=H{Kxx)UKdKM%VigzEgS9;yp;;mKpUM+i5WEuVM4y8&?EvHpJ z&Rl!6T3aYrfRp3b^z*Ua9KUJY;o{)=I99qC23-KCK^KVtZNF*Hwx_Nmak8`}3m^W)Io z5t^Te_JPnG7un+@^J-{c3(e_~e@0|(4DBuS2UeoQg6sEw@Df96R>yzv^DhHDH?9f4 z(&!v`dPipaXa>P(^xwte{U_GmW3z8regSguhK;|Mite%4J*V%0;g))~4SKMkD*2^3 zyG6bH=R4~qT_7&c(^jRC4X(z zPBc|J%iUl{iV~9YssP)GolLM2I5GidE~U7;uC5bXfXS2oWD9>r8WRkKIuH~HC?S*) zGtLCRwDxJ6dClrqZ9@p-cd5}Yt@pH@_ZK^bu{C+78b*J$m6vS%uFY=@rkKjhhbwd{D0H!IZO^-MIYWE~S*1pN%R-GL0tR0OVI86k= z(`EO0wo+}YQzx2dJoP2uOQO1K2Nm=i1lfkNyfKt2GxsM*<$#&LOB8OtH; zd&~M>B;@-s(-TY*&iTk7ubsAe0)qaM)$k3uLknvkeO@G--+G3U+!%g4bb zAQkXHxsuAJv-zx#WqesPsH>}uog`n70Y1jNM|@U#)yd`{)ga1cpiV|`amsp)=msV- z1op~YA7jwm`c>$l(zWd%JnXk?n62l42Qr6g^cz9LE1Jk4-j~Y%hG}yyPsZ}uOg4kF zDHi&s)XKv0pdB(Z&Gf{k;|0cjnZtS*xbOl7&Fjr#GqepxkfRp(htAH-IiY5Ewx_x< zX!xbCpYy{veg7T54ZD|8(1GNEwRQTy_0js%i*M=uo>Zex*=YGtd_p$KF<;AC#n}?TIHZAwf8DdZ_bEjsCc04gCnF=?L ziuboV+3aAupT1Dros#LQ|Xf%VAD zY~0fwNS;aZ=#QzVW28PaoG8oGAO0pm}62ox$)58os_@I;C{+41H=J z0o!f%{mJ^9l5+M8eQck&(?=Wn;`ULx-*VF1?sh#`Ml(k|X5OMI7t#@#sI%cef(+b< z2$w;~pGm|A&T#vfifw_3JDS=fwW?3uQR>^+}f#A^3n0U#TVv!y~Ip9;!&G-l0wF%(EJ zXIKe?;Z3ELuOxP*Gq^oqai~^&LH#*fF)LXZM=w?}d+_G>MiU+xJ-e8*64$O7O)>GB zPhkqU;>+q}UuXr))u!RR^{^tQ{b^pe3WZ*%b{SNs0hPie)#U~w+lW}2Cu$-_gnlY$ z=8S3#it3S|azda_3c^c*)a4)>NHlnTjy(& zSUgE}eL-DL*Py7tjiIwo0orvE4M<#D^k=&dt*WjL*5{tlrDt{O8Qu7-Zhl6$W%Idl zYO@c(-Vc2LR=@NEKXn^W8DK~>-{GTCx8A8Xe+GfYXa}w4b2zy%4;AAjtUxiiZUfn4 zoHBD%7c>(nFv=1oLA~dPfAPYj{P0!d4TC?cbF^DZK%T}25{(a5Z#WKzsjR{|uq#w2 z23)0L%W6$o{iQ*yaJ9l3#9|N<5A4$4qSmyXtjB#r530Ayl_1rj@5?x&;0K6Xo1cN7 z-L_1XIke$LJSZ&X4!t<7*8EbdzhL+aPsHsMr#1=}Yj$kf^lynJ+F|NmOk?-cOH=8G zZ!~FXA{fpn^}oy#3<=i^s;?D!UEI+E-u;?6>MAS@(Xoi4B5A>0(t-s}*{Lpi)Ro*& z48%r?!RSYS_F8_caaY_(ZaUR_lu;>MxYPsI*DWoC>lmNcOmu3&^jf7#m($~3LVg0Fa@ z-bU@)%7BBxn!LFS)s8dOdBo7JzOus+J}5ExZcpo(UYU`esgDrI25)IN6GR>w_$T#@ zR({4y;-!M+6O1IURp&8pr?L^?aGTiIKg@55pDNkMOZtft9&wMBDkn`(pD-P_NN9R# zfO*fk({!Wx{aOV3(i_gs7rd$ zi5|ip`a(GI>`{*Plp70BQhdUj8q6{I#IJYAJC`!vfkqBq8y4$59wuoRoxrdNjmbU) z!^PPOGf@)BeL6FEGrI^P6)1&p`Fz_2p(H+uxfenSOnG{wW>5DfUj=@Xb=t zKSFdb08{&m6%-gqv?)#Ou~C|t^M!sM!0?J%6scQq|76U~svY!VgehNxxvS4B2S=6s zqf7KTdZgBN+jXJM%?9Cz=Dl;(vWxNhuc*B;7qg6byEF%a4*A`w+Q z40h$IG6uD6YU_-;Db387Fuz0*zN>a>SlN0JE6}t$ynzl8uJiZGPM1!w*V5$BD~IA< zb1({MAPnfR7oLLw6D|X2A84s3ah5`J5yW{!SNy|H@MO&PkZMlndhu*;YMDHAAc1G} zR(2x8$W$jpP;KJTO{`FyY?m_0&!l@9e~bA!6!Dt)qAMB>99_jy=T8gt=`k%&kIL z15zpy`#4_Hzj}bXKc(KsyfwL-rBS)Ntap&R8@Zd5Mhj+9Jk;Rcy+YlNfvE61_nv%m zn8|x)s(Wi!7&$EoRy|g=ii2fw*(bqQ&sBZJ!OE|Uda3H?aLQN1b;*&1GT`_tO}xEX z+*gJg`Q&war8=HrUgJ+NCOb2d?97rj>9g9-TJC&g=*r$Z^8`^ai>Q+3*~a+AIscCm~=+Rwz4G-ExBakM&!6US@)NBG$jR@ogTlH8Ea!698Nv)y3Ts zWAkX%VEmwR3V?c=$E+;a;Ze!l3ZDZ?5C1d*WD3|}BTJ+vE=*;7zqGN$bS@>Pm{P(S zJx4Nt3pMR${a5xbtGo2!*XrOpW(qfzd+dr*^wUCcPr(mzttF*C#vD(UB{^j+!($Co z9ga{)A?4P5O|R}y>jyUIE*I|!<*Bzp2dC(8gAPy8%haZ*0lOV9N4rm(#{<`&i&T z8h8%`-p|nhd7Fap(I9*b%Yu4Po=`J?jgn#^Lk(cs%5~{5PJ_miV{Q1VErF$(9_ zKWz3k>kE{8@7@huo!d?SOW&mR%{q09E)Z||7TtEU_HNOvPOwkktRt5mV2FRSX5a48 zxs$8JXO6j3-jTbB`cgM}t&F+pR~d}bCwah>rhwtX<=5D+bHx18VC17&$foDa^X8{F z=!nlV=oo#e2`*yX3q_C(&P~o(@vGDMa4&Ck=#nfi&Oj657-r$sZ( zW-{H~5Y_}}AN8t5>laUXBr{KeM0z@|3JJr~#s`+56E zFpu13Q}H#rm}w-x;;R8)^EL`D zr~MmU(!UHdgAzgEu$i_$qYJRcDBGo5?s(hyyJY1Ktmz*VVB$2&ZM1dCJozOQ{kW3Z z-)L_L2aU%y3sQg97@F9VLAUV6;YwVOeQ7PGqep4!u$VdGGK_Tls2T=T%d6ZPlTMLj9+j+8S@ygqKaVv^DS4R@YkU z2;1{rwlnDA`QGdV3DkxSU7sA|$>lEM4QA7w-t;%awW@)@x?LJQ(Q@|TRrn!m0)}9D#flSkp+vLVpCic5;rB3F? zM98V#ibuZOGfAzQNsJpLAVRK)$TrZ`uhpvY>i7jX&xt7CVDcn?_DYX>U&8hcE-zc+ zFTKIj&E`OL&q7%N3sA=UxisJe;kW1d=gmcTx(m1ft5eYeu=WQ`JuKBkWm~|4+u^Bz zPK%P|rKZg9n-HmkxGN4a1$Zh$bvz|~eqZx>edBWdMiMeG zQruUUPK$?o!b897EFt%@hnT-g{JgNPsbhkP=s{E(t{|(zixkQWVR^O>TdsXdtYg9Sc`Wvm>g1mi} zLBI2yZhca$KJ=XMXWGA)K#a*xrlR-iE_H9z`lK(G1xH8WwceN~*FU?Wk zC(&%w;knu==IUq^&0NT+&0&V(7}kF?0%cnTi~B|0_n?k`q2I+5uH##J)sT2GF01H(q(XHvuP98buyN3&0A_ zG9BNdAJ);h<7xV4fN^3R6w;$68D~4Sf4^NX4z4W`PSq(E@KVkq10Y5^ZlA0S($fB@ zae10Wk;W-htGPADY3A5lk0I5ce1_CcZCUuYH`q;85DAQ_Lzv!du*2vRuI zQX?#{)KQan`~D-Wp6Roq_`JwJ7of=?o&*>ecU72%VCN$$G5oxk9Ax}F?$~rN33Rs~ zI;MRDTPf0W$SCH(A#%5WkPx*VngpixmqJ{13~_i{m`%DY1)KeazChPXc&pm6O}&xO znoB(%MbAbNro&$YBsXXStLNuH;beai;odz5%PS-wj33y_+juK5MP@FQPXpz&U4-c) zC|{=4>JxyiiBC#3l<9~KlsqQ?`kRt=b}HV_<*Jh=TJmwvnxnDlM_o;-WNtZ`JBBVN zxx>`cE2B5bh8Lg##;&cWZpWCyo2Hn(WTw+V zB)`vb3yOip5;3dG>a|qmXDR>wRO!Byy`LyT48s+;q&tZE99L#yvUaG8LB}ld9T(kU zB_miB>E+MjMf^TJQSfSVo*(H$Q=g6wWI_0II4vDk-Jfy06%yLe&v3d3VV(tN-HFiF zK-8@jDCd&i)vIoYzix@YKna;RlW^&)mu~!H6?9h5E&;ZUdV9e>?!&6 zJ{B`kFnM#_^gJu!4C%ovdW-9Vr6sn|oLz_I<{7KADZZ#OH`ujx~dZf5K z&2}25&;|1j9qu!TIzaj`*_tAquGwcA*c6fji8OU`5@~Aos}gVO3jL}#o>&8iysn#^ zDMa=Se4kj~d|iic=(g9j|AuZM{6OJ#J^u|IzphJ|N@VQo8jSvtUupMiHh0bW7@Z^Y zJN<%@lict0_*%k1?YJ+Wd4sT$XWGF`Q>JYW(x0_=JHv&Q{=1(4n&+<#=Q9n_k>FDA zoR0~P79B-%i53vc&P-Vx&!MH4!bh#Q(ONvnqp_!7ne$mb2Sbvg1b_VE#gbR_ezf7m#v9dgH@eKS(( z5cHa?>%)5)c46dgj4v%%DiwnHL=UhC-?DJTI82w~H??E3E-G-_?Tn$)sYCj-525Gjgr0YG z_|6u3n7T^|IchK(NvK)$UsJ`Kn-L}ac+i}Nc{qN7aJC4Sbfm;rjTiAU*xdpuvw`?-pvsuqi?mU-fVqIgAIlpTx z51|N*mZEb(wr52&s%8oZjYZ6Pm~6)-?{ACj-xulk7X{mXu;KjKLw87Dlc{=0wPeh8 zUMxNyUEp&NS4e%1m9}9W%rLu)9)2bI+HcT!uugN+1=-hH4HPhnxYm+l2wD4#zFc=) zraz6kS|EGCvSOY<38Um-s!I40(Fgi015A0`bUfwSLQdQc+GDRik-2mFZhYgBxd*e*+7@yYOG6$f&5#`l z4Jvnye1%ndmln9Iyd6ydZgrw)WZuP7%!Nk(_{|;8>psbWyW-x)+{}H0C(zj?>HmBb z8n(P4`Q^MaB+tW%v@b}NZKlr?(Gs(^W4lOkr z{!3b@U4m(T;Lnwpl)^}AtwctCLm&G6f6m3o)&J@^QodtKnU+uj3PP`;jjmCbx2;hs z&3tYt$s2TEVx_IFB-wOqFmp~ZxE5B_Rc){Xxh=&+ZHOLSr%d+-JLeP(WQbd8zNoHg z`(knjTCXj4L~~Awq76|+UB_jfD9kyf5N#+_)D6k+jyb1vL>oFP>L&R;e#6k5Q--1q zL%i|J>Xx=ICvWsv0j_;>{DxsY=agX`ab)$FJ9uaqGV#jhSW&muk|1pu+9Ve7ZM7t5 z8HO0Xpa~U<rf}V$KkGcgGe|AvXDx%V<*luxbh251uhEd+Ix^ZlJH`uk?TTN2w^&FmP~xdVmhM5jfm5JJ**) z>2a9rOKOE#C`-c)YYtwWreoeD_n3wa`e4?{@S0G!xP+b!IMAG8(i;r-{u*!5G`m{2 z446~%t`4O>je!?Sj^j62Zno(SAaI)(5l7PO+|4pS7`gc~BR5Cf9Hloz&FVI}k;e<9 z6w(_C&3N1@5>UyLLQt-}yI47Hm^5)+ynQ9{)tqv?(;N0$)x*l4<=%#kLvJu#Z@h;!5lc~6a| zJNg`fLgCY+>5fE4qY(M*Xu6})ktuXOH=14}G@(>T-Mr;eLTf^-Q2WA`O9{CNy+ZJd zTP`IOCnO8azmrR^pdxmx4#skHh8ntoMS3(runwj~(wpH4{7H{?-5%ycD%~UL&%(x% zbWxd08ozj@Zjw8MiMgxpNGf6vy_%Sw#)<(fN09v9&*lngSYN_~k}tw)Szq$&N(1iuM3NCj0_eg&&i*AMkc;ne!b*L5iLoMyl*nUpVZJ)AKDi)^Bl1_f(5jBcTre4LZKii=wHMj$sfp7GGxm=)B}0pOa@Ei&ykqd&3NE$`DUV7vmwLtR|H58=y;D0L-JbkDv35L-qp!|(`}5rX zVz4zz>c`)VBR z7Z$o@aw(I{5B?HKm`&tMrmiAI3ueH`{MOm53Qk?xqLvP8ghNe8DpBPx>4;}NA2j-21CtIl5m6rX#=Qi*RI@gOM|NHhI_B zlo5(Xu8bThrXOe38tLX9W7w9WNzS(XmV(<-Q~_kV;$n)x1vl2P&?)>?fcae3d?${R z#=Vf7WS{JkZ3NC*_TluBsgZ2TnB z65YiFbEJgaSEaP1dZk1}FCce_hC_ajHaaQqDK85vJ!4|^J{zi`l(>#C5TbIb-nkOevD!P8voN{9q34g zQ>k4XcBQ;(IYdsWNky)X0eYupI89qJy-uJhhp+U?Dd z6xVg8R#fj8;xgC1jZuhD>hu`$F3yi6^Kuoz6vGAi8oy~`)_xgnMN;&ayLXZ6n~mCJ zkE999x1Dl}qv$H6AaGtyVx^Th#R%9c(xJ?uaP}Gbj%wg|xEd<;nHhCv4#uT55r{ z*p5Amdzd||Y@KY`J*Ftz@tQ8as?8g^`noo+vE`?}T{VFjGT$j2?w?f$!k~~jdCdn8DlRQ`1xsp6t)&x2gOQ!{wV z&QYq~{Tx~dDd=78QlX}o*M4?q*10Om9IWiY+@(JzS!6Y+-hPa$L$l@n1&0CPgBWGm)Os_-9W=ZK zyVTnrml0mEyYsZ|RQQA{%T_b?`7)hVt-*yFl@)>Myf4VTJ3@j*k-QSCBEFv+I!6lu z_wXc}+Q#gxS;20w6TRJRpQ0FbCq{BCxS)U@W!fHtfdCsia9gK0oHIB;E~CrHM#?G*eXcbC2nDJFTF!!f5uC(woBpo#_fA~OBjEA?4`_x9aNjJwU7QjDuItm z;G+`ws02PLfsabyqZ0V21U@Q(k4oU968NYDJ}QBaO5p$15>P>`ZonG~h3MBj4Q2w0 zgxt_^f|iNO255*rMeG%|zDo>NWdXh|Ulq_EKbt9-HarqBPp!jq3v1I#-Q0?YIz)60 ztmSu$pW`+tU_iz({ay}JDyJ)Hz^5PGmkkx}Z1}dJa<-n*s9@_hd$)VfdwR2XjCP01 zlSA#-10VQRORRG@Ci@+q#}CcU#hf>V2Z_Z~Y#qlcChO0L6VI-yXV7?m@v+`IhC6zX z(uHqet?nNaq~7+Uzhvy6aOOmfag0q}q4lr5%ol-eBF+-dM1>xsp9-VLakjyl_>nNY zkGOli=73bM`2>h1K@gYOld>Lgl=Z-^#qH5h!Cs&{Ye}=~z4}sq_vnau;>ja^X$y6m zxyGOpT&E|1Bf(BiKF*fX%iOvAMse)aE5FjV+qC$5L_35F;+3iOnU(1Uxs}=eLIt%> zaY1Eec|qOE>WYSK>UsU3y$86Lxu|ZZvILUlg#dHoDTmJs2x{wyWmGMN#b+X*p?0OV zH-b8Zanwd#k&uY?&ADwx&k_k8<`m-=lg{f?h|#moIBm8af` z=^)O3Qs;NpX#KREY`|r~e=$fDNaM}F3HbEK(MqRqXaWx}+#BVeXe|dy>d0-CT987d4wThrNtka6>eJgo^1!fw;NsZE}~US70{`xV{xH$ra* zYYAgec3Cz_r}`-|zDIw%jqiDLy?HG5O*G@Oy>`quYe2N)!pW?+Z1$ss7V`mGZuF;5 zOt+!smSV|J6(mC~ zn1hFsItCNPF#zMDr9aeFR$$e}$f_Vx7e|r0DnjE)yRZY_k#<*LORL~VxC7(Z2L@p9 zH64DnGSlvEwzoT&!|dk>-ZyBL*rn#*?N`hJ_7ev9i4(P%XeY5S^N`Lyp$Tu|ohC?b zDLnJM;?DsmQs2`SB6Idynn#H>s8C}vg+IZ6x1|W;DeG|_NH;w}nr7ZHv0Zl*fjJ94 zuI|7Y)wV`$!JWo}ePKaBkS1ZUh$ReyA}9(W;!xVcCS^Gp{df*Y7_ygj8)(T7X@P<< zMWRmCGC4dJI(-j+Pjes`>lbNzu>?!BCuwu7#>c~~4%U#@z&xz|M}Sh#g*j>a(j2cB z(^|r0@%o{Wbz!T-ElC^0PD(Y@b?B2$DU;32?EAO&l(Td zMxCv8O-T`L`%&9AHJmZZ;O`pM^%F(MEe$+I#R=sxfsn`!XI&nhGi)O`k_0(k|4A0( zX6-#i1)%<&neKu+gY*{^g2i4L;#ruH263T`el&=M3>*Wv^aef`y1*FNS1;iu4k&Bf z>OK|Rjdi)aBq)Oj+OGk&8Id;_C!M^p3jAB&uMZl1WQ{J|HD`iH9;7fL1`@jNHFJ~! z73ek7+BX;2;6kxfdEC!F=bI;eTmk*_ zZT2amM8vp&)y*~C;2HNdIoK5foBhH1uh{lK+UOOUo%bhOe9f-?y{*1vi@&$omu%fp zVeS}~Z&UOgLTi9A!_l@xZQa>6zcm~AZPlnWG3{lCvX}YMHNG#dnZ5w50Uu%Pcm3cR zzkIb^0V(TRzu^Xd*%f~Cm45LGKYOL$`qMCX4{sOi!;!a#Kk>770u;~|b${R+xZywJ zr(d!);pVDzG6Dk;G!F&~CNThYjX)MRXA6aCW=j6wN(Y-oU|zW^jhUtiwyU+!F<|1( zd{+ym2l=)#uNnt~xK}(A&p?!%L`R*-!dx75Ne8cOuCtH%E$IQFtg^UEAg%J*vvtN# zw}T~<&K0w33)OtFlr7d(a^<&lT~uAx5Y(3&qWWrGLv>kGb7Qe3+uYigYu&0N+kPdU zu)yQ8PPZIUxLjK|43Hk)$N&?0s*MR5cdiZD|Js&b;M19?QqKFVtx2CeBw21-Yuh|h zh~B}N6=D>FKVrBG?Rr=|<;0F!_6xtdLdb6EYx-?oCH`N8(pgj-O1j9mjh<^l z=^~NWi$O=Tw-#&$T*EzX=mW<1XiR@|!{!0~53PsIGsz+6eynl(S#F}%XZoqkeOtvulHLz<{2Q zGC#24#eU`@KX&`@4*O|KP;&m(1f9e@%M50gEI%Nh&ZP3EA>c_69I(D=_PGCn48C13 z7q@aS@BAp!c4HjvUwI-01H^IH{k7!<_4{gn+zUWvM^E~7uV9Dkzu=|5M^yTZ%^hkk z)^tA5~N$Uz7jIQwnf^ld%jJOm{K|K{iAl}hP}E&g^Dh8w4~E|)J(Ktuh^(pc zwIgyxBVMeMG~IN^jj5g7uTtu4o$DZ05aV^5zEFE>Ql}VZ9ZSK-?9>C%p(#GlKwN?s z18{L4a2+fKsLZ$V^YK>@ATY`y!b{ZUaLz2V~8%l-9)gj4URs!rzK-}PUh7e5`0dcAC&;xE? z{xOIhBHJUNm&}m}rj6<@X1v9Fyn0jqiD&NdN_P`PZW?2Nm%2~DLF79CZZiuOV=B9| zq&3(#om4XkPEgWEVqgLeNZc_M;j9XPai!m_U|){u{Uo@o&;T7sbkWYi^Zx=0wzXLrLQB+quK zX1CzbNh;c&S~-kST_)UDYIT>_WxPv_cclqhVk81Dz&h3dXB1u{FdXT^6zVG`XuYjQ z@sD_x>395r>Gv%Jn>U&76VSW-Q{%sAW&@<`GWoEfCMhOluq!lz0?A$WHxyPcBSSB& z^#Baw;$*JtgQlJCrMK?`)ob>`xS`5cWIJp%P3an=PPC{r{%8VVx~}4j+P_WvSHK#& zyt+c^3_bTo(9~;9=)GDKT4I+mGy&kqcTeKGlMzP+mKEzTZ?&E4t>;@q2Qf@!*#rZ+ zy>`CWV!pWxHM^MYVO+(03h8w(dJ6y#G%3iG0deg99Qc2tMkuq*UdclY`a>;^W^KF| z9mXF(jD9X2eA}Dw)ChGT+_?sR5Mc*f?YFh0ci9JAxkS2^Qpfty8wd7-uhZcdqOw=z z7L(hop8$Yn8x?&QAbWp@>uqo=xJ`S# z=7NWYujVZK2F-j2O5#bHTHST#b$zYT*O|+b!*=e+k=Nqd89gbElfTDJEI26B3Tw)m zLPPXN(X^y*^$FVq1eb~0(R0+9X|~07-REa6^y{D2`6n@fi!SjCkN8I};gh00`Ki%8 z<~XCb6><*83A@W5LjGTi;bgtp$~5J<4@_qBrd8@ev9?TuUX+pW#u}^)Nsoa z!)74yu*xK?lCfPtbr=sktzZ_T=_Kq#)A@WUW2c&GF4LYb4KPOJgUmFPHo{%rVsZ(0 z>A^V4a-1S%&ZyIhDY5Tu9bBZ%Jg|~JZF*8XFbm|4WymLg2hHPPxEo`J&;~xdxBPrh zZ}fiTyTdMSUvc|iX?OU9+ZWybN|L6l=u&{<@b!DFI(IvuIW( zntVelN{ar*RCCly0KD!nhk9^40&fbw)@SN-rS@uAAzO61RHBcZc9gEx=*o;`h%tes z9t85J+Av79RD;swa#(k!H+Y7gb)&75B9{(v5Y=;&PYE2r!1V<^p5P!BR+CiL1;F%p z#{pw%Py($FOHq%R0k-hn;TO_fAK1H|bqQo-F(DSEedCSy@)#X&{0-!C2AQ!s-nX^)o;Gjl_&wje>&LJqFnn;NrN57a z44nZHBcj7CgvT=D!1Z>V^+Z?za}ji_67eP{zVA%s6-7r#~-$l zyf8X+@(|RbxQX4^{=*0`9205`XVWz#}#hidn#NH4e8P=<0 zKJ*{@s~}^aY*gJKa<7SEzaDIN8EJjf%@L*wS{w~l7}O)Rc7BLGM3TCwmluTK4f;Ps zgT6thP9dyq{FG6X2Cb>9AdiCX0UA5Hao}fh8f0q^@P)LC>DVrwt-SX%lN7@$dpq)T z^5UyR4!Q%*{9|xUVpO#|OhX#$LVX+=KsP`TgD}(Kfa`LERES##6C!^rL{eY-*kd#~ zbyO0oP=at@;-6yl2Gij7^`~Gb8($Hi7%vo!x4^3gy##$`CgU&g+ii2)VnL?I&mgF* z@VCk0{+=4}`@QLYFQHy+W7J&DO!tdrQ(u51_4}OTTcd*lGTk)ytAO=5%%QY>)Z%ye zb$-xHJZMoNAVr(#K)=P`4*PG@{F#{RM9iK-JgIDC3XK^03afd}PfCTTasTiD>6+?u zVbK27r(iz&z6gdt)Q6IVV=euAJl~3`V?1S%(y%|p;emNP$1pI22p}KUWa)k#?!1bZ z0Vso>NT5I%dnkrN9aKuDxP*^Lo&4BKzP{AnOxQ2|ZEec({VwoZA7c$E_u04gp^H>} zw^7fIe!K|Gee(KD?e$2?L|#iildWXCF-w-0zpr^YI@qQ59_^7PN+`5*B0|5AtdZ<} zzKG)jCAv}HMG}qlNz1a?pbQ7bFW`7lpGD`7a2*waRU^`Np=yYhw%F611;6Mw`OH{a zN|~@QPyzGD&->HMrl}h|(Lq03si#Kr6;ofNtUzK_y0!>6cf8O*$gP31ZKm?c;tYA?V$ z2{4Lt45+<<{j2f+W{Rn7>E(lq`$~Y~LIm)?c)R3h*9ZX?*%5N1#*7C=@ z>;H{{bD*SAmsmOKK($i@q>P|M@%lXo2tMq0%LJLSq+NS%rjta6HfDW7>|&~i=Gtbz zB=ii?St1f|*J9?+ zE6op*cKX$JTC zt^w4!Jw74}Rpv)TG2s!Y%Sooae7Iq0q47q~aRT2z?Vwlid1K1;hSv zy*JsoQ8=Awnb17cINjtL|C-8CI9+{>)0IuN!<~EzC!f}UZ7)BUN&>E`Hz-Gw!Ncd|C;c_U5yhJ@dpkWhCf zhuJE#*l!G4{R)w}CIlPx2bf*_AhcmYS6E#Iv`tVnnfm*FPkMGz_ZJJ3 z190K@nnh*OWGP`aOzuH?|Kb{x0}|Hbn+B2ecP!^oZfUpAJw&*p%-zD_y2fz0D1gKM zw;Yam*EJ3|E1?35j438k3U$XB8l3HA9v8aoA&6=Ecqln_EQdSaak!uBL$^~I#FCe6 zYd(g<5p&ydxJJj}0B>|0j>U9o;+urSk z2sKM%MIGanVBd8f8Y)I|nglTnQC0;2k|L>tJIzW-6cnH%ZwntUFguC}{6GZ2(I-r< zgFHs4KMPxJxek=ETZiPmjBRqg7!)Q`Xd+Nu5hNnb*NkEE6?i+FJ&E|Yzo6m)=x%Ni zcC$%8%(RCJyOhHsbzwM3oD|W)dQgnx+*!sy&orKE{EaxSXD`DmupW}@b$q2sU%{9v zzw+l9|9s=0Z6ZMJne@0c?SISoXG!M1Wuh!%yOjCgg*z}Fd{-DxuQ`cm8B*va^KEAJ zyYX-%gL^sH23YMGPW=U@yq-h8vU)jF4i_UB#m4x=We#1gb*rl^33h`}AEO>XQPTaQ zZupIkU)0UN5iQ8Jcu=7pSx*dhhF0WH5_xVZQ;q?7u8HRw-E+UwO~2Lg?{wpD<+<%8 zjAAz`fS7*CBe^x7U`o@udcv9pu;~bzBcEHY?5s=8;3X!$)HGjWY6Cp^>Nc&|1rYEZ ziF~4!=?@{Q-Pg%TZs40T<7w%iFwlyBo!y6b)p^@uV|2OM=Q0ytZt5;GwXU>Y)W1xE z#_`H7rLJVQ?JbjcKFd4jGT#G;nD`2)muB@>)zn>7TLn!C{(v&88xJQfqIqR%*=Qz! zLo15znfcD9F4Jkd!Ug_8{=xpb&MsyE^JlPGH3xQznT;)r4F_Unn?EmS%CoG|WuK^; zS^famEg>~1%e#Oe2Yizyex@ffi}E{J2lTTu3Vt58`c0#j=KGrlOurrQr`A3;5KZ-` zOe6a#wp}J>clD|BU2y67`{rNmbl%-dAGZjp2Frcnf7CANLG z$Is{@h7^2llpHV+Yviz+ot;+D`BX_4cd2BJUzO2lXeKJum5UqIibfWUd&_aD-YiiI zh`~|x8w#e{7#~@`ZekXnMrpPmrx+(vjI`WFbGUdq%EXjOCt(1W@V3uhEwhua9NMkc z^ek*yWER>*mMzmESx(RQTRNI^oqDf)d$BocY09Q^pOH^xCbdjNYg4qcv6c=HL%n1@ z%}QS$-r$YTRWy<9;|kvO6QijthXA}38BD6~;WL#urC_9-}Aw*tp5{silVP!q$ z2(db9utR1Q6Z;FOs2-H8Qc<`b6S_!BCyk1@gQym$TTH%KtVHFex^(q3*e0nyV(g*ei%ixQQW@f5G+|`p*Hus^_gJs$H&|1cSeMZBxTyW% zvFicq{esZ*D=1k{*)`M8moPBmTN!su$A)6pDtv5EVRxo0ezAL`0nbhvZ`CzkMglln zmB$Ama{VP5ZAgY~F{^p|q@Rd9W;AZn%=;_ZJ(aQlnNss9#2v*2mpJ&-TUoQgK#m zDd_3wj(R4zJN){o+}%SEiy~W7EiGIYE-#Ya?w-9;SJQQUYOe;{V>4CTlxd8bGU=dD zNh1x)Vg_SdHlNv}x5u9sv&2>^wsi#U@pSaqD9SMdvcaMHb0seu7N9vURBY4E!JZfe zNi&M7{+T+xeY^uvg1r3EIzCkgXX=t~Cq=v%7ye3+4^Gwos`?eh`*dp%9B;fCK|bC( zm_dNghjsLrZkSa#$Gyuxjfr#aEUmx8a$PBFF^jU#DniCc#_G*S^$1J}HFH%}Y?TV8;j<2+9$iYrjtWf(g@6ZA@a z71n1*~%n%8W9U)K1ms*tT*lp1Dg&qo!uYM4%;-6_i`=iWS z1x}Z|Q-biwyCnPam*hZ-!Dag-Pfbs56f77)`54K(l5ipYM$=V{rUkaov8CAR z@jtgr`|e<=?7#TlBPIg&nD3?f{Q;1%rFi&SrW=*DFoD0-jKXdZQL%vLmvs5^8qHiq zzRbMA5-S@^qyIsyY|*^!;Z$zNB>J~?=i_B=|89W8=%j%!F}>_}wR=?u5^{cOWTuPl zusy|iq_xs?o<)+d16Lbr9)ODHjk=H(I?_=VWNAMrSLs%1+H0DlfZWNk1#8W~bg*>= zX`3Y)D1V(9MT}7V`l)+XSYMI%P$d7S?|_=?g_`s~Z8?5VSN1Yb-4>P!wpyvCV(eUV z(kjs^6BR}1Okwks4Vuj)Xm4R7>ZF*h!0s|VSf>e{&CvO-5rMjFiDPjgCK~_G-Uh`# z)cwZwo_(N_A9?^Yi49oyd->*bbw_i%m046r+}^0xmI>|~7Kj>Syp}?_!D8Wn);ZP$ z1ZRpDF9T6#$Sm`B^*_$pE@n5=R~jttk#H%ZysS!X!&`T#Y+DS|=yN3dk!>9G&_9W_ zYrLZuH>|SD{N?`6aUn}Y5p|ofGBq#TH<+LtOV|j8EExr|!p+cy&SHsS+#*Y=o98I<}R#GowS*~pS@E*+H8qQq@Xr=xTJv+vknsv$VTl81k6k!h;v(81`>;F{Z5+3KP&87p>pCW`5 zFb0_Wdt+Y$Jl_xZ?@Q@-z0`XW zngkPNS{hTf6HR-$y^$&^+ZA*vBEq$QynQ|DR)i2N%kq9M6E{&4lcVlby4P#- zT3g~2=8ZYRE7OSD2-KCqmRU@$t3I{Czb~en>w9bL@Ok3>2>-bwvR9ad7ru;wg*9rc z&qciQMhcqQ$YU}aIl~@GMW9lA!#2cmi9p(&nJxj2G|kba$W|g_0UG2tvYLSf7R@%! z_5}WC=v{e#(4Up*@!RWzuz?w0-tY1|%P@ehAd|BavB_js`AZhWOu~ZvaoRgxmxIAc z{&HTfpu{tT^4LDJV=WI7SxxeAmO&)l-5g8flAJWyX{@>5ro9uGGTMRP zNLK-Ra$s?-n-puuIu)Jk0r`xd2feTqOc1RL<7p~xK!}+VwAj4uM+Y~}=DSP9{B(jm zWm$7M(Gzr>oIQnA96Rvb$lK@r>)RQ1Hxd@$pWe=5OJF8pmnLtIleg#d1GTpg*WP}t ztP#DYj}BgyB?%TIc2N<6=??z*U_1XJ4GYV$ty3?B9W3d2rrD<9TvWC9m<0ER6Od&HESEPe*~S*^`+FP5O*iubrt|cV zG$BOwZ=$~3>H6u&yDXKuJk|XBXi{*3ek|(xB`3$}4N+IBVY_Ht0-Pf=i-3s>vs3wm?m+~m;Uezd#&QQq?fv$^m{a;0`C zyG!iH6j_GKc>VpN={GkO_7*k-gK3HJ)rKG^_NO^Cj;XrA>NO_&XCW|FYQvNUY-aFoos{H?*Ri@AEzW3Stw7pMn z$w@z{qyizd(5pZ~l_Etz1VlrCAT^=)BytbL$d=3E|yEd1oUg1MbnK2#k3mU*Z8RQ0yHrggHD*J1eq~g z_mU=Y8bjVknOQ>*@d@vnW;Cbh#+xyQQu0!sO^R+Sw+GYHGn(x!v64_UbKky0y=aS< z>`BS*lOoyuTqe6G>i;!%KdS#XC%N=&{U7H=jIF8frEzK-=V0;KhF2~Ihhv;Kba1mE zxh2fkj%o*EPj+>@jhc@iWyH~3dyaHEXE;NoWy?5M2(?DUWEpe-E^?Ihw12odf(17A z9rqY@Y=>v}jD#bn)tqz1wAN!41*M#j3*KC{1uW$m()l*9g(&c0TTB|m)UQQ%YMFRN zRDUaK9FQydm!bv{c}BGUSadt*1N3bjv>y&(jX|u|Hr-sDOc9XHb5|8aD1e5Cp++LCGB@xubxx(E&a>5-m-C~)D ztA!f7Y}KhjpHyqPTbwV7`?vNn`6@UTl$PipsV|gRqVJW-t~dF8MI^iR^wyg0Qc zur61_CL?tL^hySgPSgbjtQs&3v2OBa+D&L5VY;U?KuzLnS+a|HIrCR?@O1!WO-|@_ z$rdO57dezVU;JM7;0{F|xPQui{(W2ad`Jwxv&B8KwG&NrA1yWJj%Ospd4xWDVI$oJ zTUzhVlN-G`r{0^`y%xz6R2dfAE|Q<`3E>yLK7AeC==D1EUhI`!N*xBDwWs{lfw|Iq zlE+EPL5R3BM8Bx*gMM~y4`vyt`0)we=1M>v;B5{`eqSer0sqvNqqa|d-$wQx4q6== zD}(D)n{(RLsx^pPBUbcrI@6^vQ5*f3bEmm>JJ+15>h|o+=#F~p9u$ogc>!%XYvVs# zh*m?h&NObkc%aQyb9EOeW|xPC^)jxU%o2SXj<_B>dw-&Ul3AW@owf^@j01&pLE$m2 z*6TEQgXWZ{i$BxO%P6Fc0tgeD6NPyA257$V(nS*5nlZE(Z?HKqQ;R+`8rVrzKrs88 zU~&Nu@et_stmiAT*Tbj4y`%}KZ}=Dkrt5@x6H^gem>W`t6NBmT_~vwq(2XQ!GfW!B zH{g}H6ObAdnhwKuGDLQ{5o!;yg1;zIUFIU=BM`NynyO+KC})d4!fQ|>KRQY=7CymZ}MFksF{FDkRAvxYz zBLAT3eReLa*xty?H%h$)oMg*< zB_h#4Tbg^VeXxjtg#Nj*N4gXc)&*3$w@XJsz zJU8wZ-aSUZ)rCt$X|-@cbgdR@v>M*L-aSdZ6?I1Z{RFxFv6rnx%8fkp@u_q5zH5LjimS#!I_|dp(SR zi)vF=)}+sO?@k|TMdx|eGxA944y+X=Ijcl#9{;tZ4SlL#_Mw`g4cU%xN@O@W?er;9 zDu+{2u^dqC0DyY9q7E5Tm5Z=ONf(_>AjuLh^ZaMl94xJ7uWoVF&5oZ9A9UOs9VZ`7 zQRGhzr#O@KlzrzMQg7?Qn3^te1jfk(;RiTt0~E#P>HxOfn^^#tQWC~^S0tdgb>i4Z zjdR!Cbsw+U$v-ob->HuRh>q3*-cmJ#cukt*(*0H2ha><;bJ~HmOr2JXl?BPjO$WW6H0Ne2H8$ei>f3kM*h=0BBPlj8I@_#&|ROAv?W=93!!nWSp`uLne2WKM;2iE^31Ls-sfp z0a?wQiz8Bn^kWh1R1M`D(@3_H%QUr{+%?{<#nEHb*fc|gMbVR6t9j*&KF$7SbwEud zu18=`sP8>5gO^0IsMza~OEQ56csYap*?y1=(SwYQ^Z+KKtnrANa8 zR+#9vj^38)*L0bFOJ?7|yTk^OVS5YdoV0Dzn?@s#S~^H)Y_}8DN&pF)lniUsIV?K6 zu+#w3&#GKNH(eo|crs{CgSY|nfg;)U@?rMihPda61I&#LFzBGn0fj@5YL=Zk1f$gg0ytD*i=RETUcujKvAAAA zzYZ(HPYoTMXVTKf{G(Fyh)R1H#_Ol z)XXWsvn%!jwWY+bi|``-KdIDu&aH^|bP43fVHCo>hs!z}#x zU6uGkok@u?vVdKTLPjDlGUwaKW_Ym&bh0DZ69Q;@ZCz9+jo+7gg8&RZ6`RCmj<`-J zZm8*Z@twqS`M>KhV?UT|%mX(m^Lw`V)+vuzFHF6!WrZN3*FMU3(jJX|&SROg=7 zQ2@#@0I?_iRMShY|Dqeb1nnX^4 z*9^|BFxmcvtDbb_Gp@ScRjXb5x32uX8+_ubzq*;HUD>NTFdv2a$tHHhgnD~_ud(+r zD}H4B(OwsFDYkh8@QS%!)?dL{mprq^B9s$*o6hEo{F&4u@TLke*XY3m_8A4k3~+G_ z8pIW1jY@VW8AN^gO53_0@`3+%()fx@HK{U;UnTfJ2C>y&7|pxMxhL3{Y3>B&pN|2eOCjjq_uxHO-Gzbnywm6N3*HN zzORuJzHF7DA1`5W102-s=2ZsglMyFRzhiqev@DBSzz_08Rl?{9b83%P;}Me#qsr*T zo{~`=D9KTqw>wb1U{4t_kjWUWD=_zij&Ybxb5z5&t{6nDC4Q*NZXVcIZUf%4%VLLp$?3 zzrN5eGS-9N2z!v|0FO)OWcvx&XEXGA^>2l|U5e@QLCF1ysMul0(S2qVYfQ<$3whZl zl`(_Gc*U7PgA&)v;RR_V8sn=Mupwb--%SO1A2y14>9FP4T<-V%U6_qK-K#)Gd@L5u zx61#rtvBs9EVx1`JYddI>Rc5hzk7dyolzHJhY&m19PqAaPD56jWGY*m!UVx7*re;2 z%UH*9=Ehl4lxJ0h6Dd(N^s7?gIQokD4fNJBbTpyPTo>ms6^)x;r!ZG3*ef(tC4wf+ zHA~-zLOu&#PUB{hm087Y$cXYSu5>aBfC8~)Va7K7+85TRhf>BzS`&UpjJ?n(CZ=2E zPn5OR!Fr5JA=r}nrsZ~Sl%)me-CCQ7-9e!APK zW4_Nq-vE6NA44{>RoQHV2 zm(+lLr%(?vmCSG}AkH+i?AIO_>Umxl$(+X^R={&j0a!o8J6sqV3knD%EK`Z~+ewOpdT!p6O ze_zF!R+7QAMOpNgMkjubEA}#Tiq*PP&QeXzc|sm1Kag@#$Q{EB<^iC>2sQ=~WrBh1 zZnf`7mzk&^%Y^l{PWW8_L+5+?3=qd);m$?TmOmRw1dCC;TYXI3D&VN;mo354cj)no z(``_$2-)aXM$~5I8R6)8kqAd?>bvjNchA=C<{!up@iK1znZr1L-6a@6A7r9gwIIgl zcg#$8vvSAO4xVvd%X?+8w`F-gt7`r+VL$D-;KtEb!oK$7FI17EIhqO~$N}Gv=a#3d zl0#fIC~(P<6VemZbcJmxO*ooN&J%aJgqgX+^`bTuH~1UDx!3r@toZ2;%FH5oxpd0J z`~-JAEBe@IcvPkjZi_Kwyt7Q4htYg#NNS!D&sl?7F=xk`v*^+6b5UXHlReQ>Y z7t?+U)sS7^2%f-uDlImyOlG+HEF>US&t=5t?l3>$P)ks<A$;R9OHLlonoPD*HesJe1-g05HEGMUS)!3TwUMYRu7obmz?`y z{oGmgb90h&bc0*SC*TYugHrUZIVOw;WfQFI0xh?8sd(5b|E{UvboniQ- zCJZl--?N?8^Bw;@$G+I{Css!Xm2|7)WKq3c>XcSFZL5L(cFIA2{`HQ!!Le1gH|()* z6XQ?K{?HMRIHhNuw&xrtIc`agLl{3Px5_ZHSy^nkwH$*`}og8Ss-nOGLoN^7cqjb<@mJ*^OI9YmQZ(r<)vDjn>SSlRkXvEdn5plUcs*Pq<3m!}G(`>T4t0r-N8yJM=&xf? zVStOhU};PEH(q9RDu<(=DFto56N#`T)fPWyI6*!d4COL2i4AJepcSv%_|KmF^Njh& z#JwGFwZlY%AJT5OivS{odyKu5B@FDuL2?*-95}ovOpn7Gk3YouK<+=&aUI9F+MF&3 zF_pHXv&|~mAdYy2b>~$fyhz}*P&z2=Fi&DMHD1d{OmlD#I!1miI!b(DWlapP7;16r9Y&vX4Bd(M8X+*hT0kCu*I2Zk9X1}*bc=OVm3PI$QyA-QB61% zNaNVs#hBOv^5w$54KrLvuwK;ocdzoE!+W*wJQDI2Lk7)c9EIJ$P=DB|s@xha*F3Uh zambT6aL=W<*%u}`wl>BQ1^|=*;O0W%U4?rYjvs3GB*ECCtBftRa6rK_)O49B&-G^M z*?fw5YD+vA&5E)W$}IF65Q`ar$>#$HF%`L|0TlTXK`x83W>6yKB+(Y(ym-p6!<~5j zwSz7JvSI+KCidt}qR<_65UNV59@X1;L6_f6!2^`A3j>QC_=inJ_(>7>i$X5KMUm(D zMvdpPevapw3IqZnvpO4G@1G?sZ~B-4D>zAYIKDUuxSEea>on`nqA!bTEEgI+4Eo4G z*twGO=KEizCu<=hhB2W^Nn|OLblVpYxbY+1@OD6Uc7O7J@bceitHOIzcE zEo7CWw-ZThdz>k!Iw|`c7#E^9LShHyEgaWhfZ)js7*ZeBht#NzL+UE?In0>a*SbOX zJ;ti)u7}6jG^$Qln?A;KoZmFAWTzQf#$tK48CmCJ3fE@{cNu#VMJdw<*)%ijOjW11 z{~lAj5kRws+g;V=md(e~1)?#S_GOaov>O~%dSR0lj6<6~&w3TJ2jq(oovA-z4~yPG zG2LQkTxf-61wR~p5)@>Lo~$@C&Tt}X9>px$i_VS@=(Yl*eJ0EyG1dM7^c(i&pUVCW zrXsos&24-pbEROX+^%|YN7k+PTk9cXw~UbYiYrVLu9T zEcj3)BYpuRo>!20QURXKA`>(EcSNndEyK%%07)ZO?q^+YpX}HV5w=p@k8Ys_5^WRy zArpx+^rl{a9&mp5_hd2$G_els2ccp!eyA1kZ!VJA_1e}zpS{5%+FW!EW8cHAkXWxX z&PL@c7N>r%w|P;@i)8S8a-(h*x3Wa&+hqEBY2P3_wrfDyW{Zg?qE46mCKF-`OV11@ z$tiU>+f0-z-FkZh*ad2gQ)6xn`aa(Mhl@GNO_6CpPP040?m};#!ce!Um3)eC((FZz zxiK-B8xnuknVFMb}h7}agGH1iadC;UPW5fV1)q5V~jD5 z*o^{b8Z{k?a~p~D1!0}(js)pDfr-1{wQKaO&FZUuYZoDe-d&D;r{h2ly|p$yLnXz% zSU=-6PMb2g7rYk!sMM#55&S1bCSND`NZB7M`H|ZH9EyiDo@wK1;*`D27Vzgr4%`bh z)4rHbjCCR>M(Cne+yv{Z(H8PZ3jPWnx!?E2U- z0?rYW*lsLd+f$vi7zbODgs$EO-9sR^sp~xk)M+N{Z@o02lky4is1)l62L32%R+(E` zJSDAH-Ch~~(b4plT1tc;#A!Lvk3cR>@-ui!`f`qwVQETw;Y&%hiZbF7)CZqn!%ZEk z_c!u^Gg@}Y0l(X{y-O_>biisz&^W9mo_ItuA7{@6QInsQvjUW_$QVA5guf!;Gn)xN z>w4!S9=m^c{C}WJOM8WMwmu*CXAZS5T{dr_@2{XxJ;P+VTBkB9(> zVMg8QG^zP|yj#P=yANQ5bTC)Pg7_(Y+$-IQI4+nsPq(+ml!US|Yxt~;-6Koc2t#Fa zaHrvq3~BvPv+U9N`^d|*sMTlQpRwy1Of3QCx3q3og%q}N1Ny8qI%0IaBf6<9@(Zb1 z>5bWo_$J%1`Lo(A=S_jmzRYCub+!h~dSbJN*LIapxb_a!oiLaoFzI?70MsF=k$Tol z3ca67G>&=ItgkYw%^LAHO#5&Hsk^CQY8n&31oZkfd74=j3e6NR?S8w5zCx$ai?G$p zH?^G|>jBjqNjRe?I~^ia%?#l>t1nj-iVO5{4h6wH*bri&$WNff`kB)ih||IA|f< z{y4prtk@%FO-;izBtFyM7Y7ur4C>+~vW?suE(8&!G%_)0l0wD=+=ErgBl-Vlz`}kCcidFZuiGX+(Q!m79xX$HhYP2wEm1SV*-@ckC|s8f|YJmm!gem zF<9n=tzHKHL;b}3B*Z*WXhf}3pcA7|>fD5d$OeNQ)TSr%jcz!~x=`^T6dp6}rN%)z z*12NRW+`{!Rm|H8iV0jl5^k9G?rK>$fe>lR5c*H+deK>l`ft)Is8VJhzbCj_GkkYr z{)ls62cyqHQrH@=C)b9-IvBlQFEfzEgO8X&u-SG0;JA^3r-pkPRO(DgcUKvlNO%c} z+D)?#?j&2?Zf_UE-%o-idL8P#56tcgV{L;!%4~0aUv1CF$UG|3p_L&f-K!?zEVo7s zI3SU%=Q7A4=@=U?Y#WrgB|2LAW3YvrIXMxm>;M{gj~?x!1|9(pfC(~1G9%V)fZ?)$ zl2{$h&>Y}AG%+=HrJ?#8{o2AY16GdEb2l(Vl_V!jRoBq_BTL~7;Y{*qOgg{{0o*Pg zsK4}BY#?(OvdqKhj2(#6ov5))v|%kCH-l>l6Vcd=)8;4ht%8+XE3LN$hD3(HSnM85 zus10V1Gfn#SGA`#ZdJIoVGc0HV^AV=x`~bgPnjOd6fzx+G5w-}IgY7!@HIjsi6*O( z(e~k%ss2%a_r;0RTk`JEy!$0de8a}OZxt?)+%x(PL3~Knn%1?*m+6@33dGUN5C~ot zFlxK_R??$^Q<p9g&@A|+y|QGNS$b(f;PNR3jAA540QqxhQY@EB4lPV753B}=vPyO*?|BpdFx{^U7 zQPd}WFpegVgGAE4deI!~LCmyH+@O=fBA37QL&8sFlS`nT8`ak>-V6wVGC2pHscj;Y0#V>~O^gW0o3{rxOC^qnD^ z77o^Mg2{lwK8TS;vn7>0u)d5XvM-Udl;EeQsGt z!;rtwbrYY{NzzWDy7LiJ2%JC=acjiFFXk@t6;? zHsA0yq0ghCdHpk}nl_5I`pR*@W`#SJLwLY{P&hRaIDJz%#V3U$ZP=qXD?CJvGMd68 zQ}{zdf76tGi=mi1&1P7RT_`bez!iQ+;KhwB0=X(1ED^s^zQF?mG)s8ES$apssWLVV z^ZfCRp>0eg`GrK8eP39=NXqD!lj*&rjF8D|H_E|>D=FuAy>Go77(A&L4Z{juUDut+ zB=}5ZIsX*aZ5W9h9C##QR3h3pDD$0k-)J=`JMa%Ewd;H)H6{YI!i+GjB0N9(fNo0b zV`6`fRmj8_VZj3qLFC^u$R$XGe&lpP~<7BGxa!4N3m~aGp_4R%&^-@+l95v;Bv#F8!&5{7!Qdy)**1j zfF8m8qOEhW$85$y!&~ z8T)ZdSL^0ia$M=^3wvWfwUM2C%%qHO$j; zltcxLsr0XPduTn6z))fVjaI=6>8li0fhCfk*{oe7;1x|GtP$i~V8C#524(s%REO8YrE0ievJh{bWN&Q-kIqtthZ(32}f)8W622JbLL zvy;Ww3^qD%zyOKFdx(TTKSQXmI=2dYJkA*0Y;<>z(zefyUJ9-UL31|MIZkYgihVXM zSt0*k$35l~++(zyY-IXo!{?(xPjtUK!^V71TF*-WBG_U;O6bb!VQ~Hc z>{Te9T7Yc<==IKE7}U4!V}xz>oft>_ZIfC_&Kc52QAlPh3-y% z?-R)`oBS4%-`>rB`;y~X$?p-%wOpa=_p~Qxu9utdUgp11mL8yA{swSPd<9l|;BDXC z;HNMhgoW;~C#P-~6+A9)7w&h24Oersux}B)*r{?@--u~j(K)x6@6*Ic>+^Ps7YuDX z$N~tU4vR$IDf;QrncKxo0{P_)Ppl6vr zIuU%dadNYrF}CgXy0V|-~B)-)Kzs-Wx1fq<$v#L5!ZaoF9c79PyTOowLCiwDday?nj`3 z$t2DlSybhoI2cpKKMd>KqAdgm-HGJrDq(qPB4gW|ct>f?hpAzr;p(O#1Ji>dZ< zKw7YygVr^HcXtqjEcbNexA7eKuut7QNcK;3kCA^7Tef;%+io*8vvGZ3a+-I%;Chd_ z-ba2&phg!4HvGhwpZOlx@&2m<`%Tw=)NO6|ZgB1EUAxUhtwlX9b9dV~b;3C3^z7R} zSG1Qr`Hr~3^{#iP3!7BtQFb#`fDp08@JNXNGk>QcQp=)N$B2nqo*lyky|gX*KfEJxBoz}qlrzd7h` zx;m+G6*c?WL)g&GfS!U+^xvd-OvvXYFg8>hUEs9M(M(QH5xNQ8 zO=JqsKRC+cBE3Syhmio;!>ffXhG+>4EV&;Ccst#V@^g>Ud7`)+y?g$2QJ%7^bYgrO7rL{ z^XP3nDl6;kkL07aSZ9Bxlim6C|L(8vmWkx#_v^b2^<5!3_fY+gd+X=kWfh{3>}J0Q zCdbR`*Uz()|LTu!e%D3y>#H{}x|ZDg*yg8xxcNV?*I!*P?3MbP>;IfdBX+W)UFgx7 z1f+`iJZMVHL{1!RD-aHnaHJ5jjgl)zmlK1Qi^d%jWd3I7QByR|Hz^dwz;*}&P`?2X zIOJz1XhemZN|X-qS2)qD*=(l3jsF*UYg^-5kx80q9Gm;HJXd62Kj&~Hc zsw&4ju(hyKc2n8?2yHVCJFiKBzJGEbHpjy`Fg0z4beb4{=YUQ?e;`#a+PGo%UHVC- zj)6)eYpPM4G*zqUlXzXg*2#^ycT!{*D!}5jc#<>HG--hv&)FW0kvP&H3))YoP1P3) zdSsFTz0tM>&pGJRXtKN0Fot#`7fU{79JR;QO8F=b`Hb6r1{xoi9F-}YtR?enhb z_b%`E?(XvraYnqi`do80eQkg0w|%v--XZpgHz~!|By$rNL}D=2r*Eo=8!OJ1x$lPd z9i(`~!F7TBMW6TcKD*Uh+vokLPsRVM`*5*bAeZ%dXZ6`9co+A2fA2L4)bQcH_+Elv zW!Cov5A+!g)OgtwRB^7;e=dtZl?nZEd!Js_7o4xc%T#s+nZ7iApZ<%;FDn3BA!AW| zSwUXRF?jl`3f{H&x<=O(Y>i{6{bQfA-3cImgi#z4p>R5OQbq(H{OkyHB3m$6H#&IsN$y`&k11^Eq$R zbMn8QbCT!I>nknE;}`r%PJRlA2j%f)h45iqr5U)Gi!$=kOhD=mabGsO zmQV}L8_!&p8MR8-ua=0SXP}zDD>^S1#T%v4TP0&O2%gF4r!$hoAa2%4j!mws^oPap zm7=-!Bp@R5ob$V)#^h7{pJM91l5;h1(9KG)pU&uwC2&meFDG+fNvWlSbk zrQJJAzH_!%Q}X^^^8SGv48;`xyCS69s#l6)f_qEyT2qXvNXg^BTfhf{O7fh0OU0EX z`CS=&r!1GT_Qf|y?|OWb-28vn&9p8yg>J0dB_;WpX`M}>x5@BkQvg+5DZT4V0q2$c z+sk=lK3`RqHpBg}9}ZGS&Zo?8p2YCHJXK)dyIS`miit zq6M4Y<+*Q^{Ex~c;+FcovV6acGvx2epe51EM$Xnt`-*?>4VLs3zv%5;3aT)Dx{}LO z@hs&mLCwT}Y5sdu$7_Z21JSfrWZa~R>wD81dQ)#QIMa{y$n`z3E<>x-X*0;mzKhdO7h~8x~MeS zT>Z58zWA^dF0FW{SG=W_^68bbyf}HT$$KJu!sA)*rova36^?%|cl`Cm{)+_ZQw#@i zT^U*Dhbf>9FAMbAS9xHmS^RDmfT#zY{l&rRJn0=Od+h0IYBU($7o?_Q$GlKvzbo}h zkr|UdOJwHR=vL)bB72-ZEK|yl(S2$P5wYi%0eNDKyiPO^xOTQn_vXep-Js3Cp{F$u zSLUc8_TwwlQ(%U7khzY5!Ytq|@mHJ2R_3KXQCVuZK;Ma`b{AB3Ga;;a?!iM4?UAj7 zS+D{d@~#CPKo>D#V{bG0h`=QR^gmuq>i-D_*oI^}0`xgdMK=uCC! znjoC9*QQm_9qKH}&2W$F$q!ZrWP3_!a_fxhbUCAiGg(pFLe6a2 zV%*$rEK#^8iVShl^K32i!Yu>#UGs*vNzHe*O|H$ew=A-i7szdcdCrz*9Ss(&5IY)q zhQ7nkIx}By)5Mmx)qJ^Qz!9EB91(;gP&*fQ1C6u0+^q=19_XaVo$XyJY-KDp0ehms z?JM^pRjB>kMFB^^Z=KXZauF_1DiH2| z{-G3pkUZ4JS>z-g9qb<#e7Sg7=MlY!%Oi@1J4baLnLes0RUP=7UP}Z(_V6~)i1i@C3mGrcC{DX30AZ(>$XxGGaHWM*tqi> zC};{$DsdiJ+mQ{>ZlpL)X<{-wrxwWE3!}vnqUKb7GDZD#O8Q?x=1;?jkL!crfxvrk zSl>I0H@)=V8Q$!!RB{(W-TEN?$&gvoAxoyri1HD@%;tt~qXeRVNScP{1YVj&CXL(xPckpyFHDfM5PLG#E z{#-MyHZaHc<->Kte?&yH%n(7fk*byP(up4%f;#5kdd9$1y1f(?iTDD$Z<9WzxtwZ> z*pj#uOM=hz7rs~$bbaB^urkN{Apwn2ei*!@t@UCK#rEG7h99(~F6c|$5QeMZbeeEJ zL=G669{4`iZk+8pY>z085%}1hqlz9kl+Gr?sAuN_hJcY=4pIi+xLfNWzPy!LXip`V zO5S<~aPTw?Y4&MT&qPQKfL8>Uk@dk!iSNPue^+R8tj+O4d}F$0-darnMNm7F<-~Y` z{;r?;jt?|oKn&&(Q*r+r512Zu7(X6YgN6q&=eJ)CssY9Uu?& z&J$EaKT4Dd>;}gGF52{hO%?r8cE51PBHFFDYy?o51; zkeMS~y`|bdLDtO0Z1_t7KX1(1>jiMhW@6JB^Uo9vN23lXS7RBI5UsYKE-+@0^N3=@IlBjuwX#R2vV?Kh_v-l+(o_6q2?Ht*|Q@(+<#!@RHHj8YQJ>NZu+mhJC0uU4OTX?=+YVA|%jJ1=YfA_4Mqe%4x@B7fD-rM>YzH%M}e=*!7#BlTJ- z|0V3tg(Qa9xl%qU^;2|_G#&L5sedX7c}6&7Ug*ewO8YaiLZ%1lrWlsQ&mzZ7`({WgJCz7y+ zGX;IH5wblKB`mdQHcyXXGo_eqh;8J6g5^9btuxbQNy-u$VbpYlgnFtLJy`=KMW{P> zT`hXF22fn&rn;f}!)uKCVc|B6c1vv7K22SV;0gyVesG+>ITEPZn zAo1Ox0@`ujYhx(Y$X;zgsxRSni5ve*YVwOHupKZbccpjzp^Vqz@Ozp)+1UKeknBhG zHH?<94Nb!2x~BF}{e59B_v(vz$F68Haqy+7#~mOSZF2x+k%;+!Ow;h6UZR|@LV9&v z&uj0W=)YQxepRi0EjV?8DZ}XKKp-a?U`XIxbI#P-0f9-2g%3D5a;uCxyw-w6GwHnv zruT5u{hUZ^MD+C#$~^sCHF~z1=aVFsMq>?6l=}<#B%CSeZ`3~t@dMO8)`g@PL6PsR z=E?eJTxrhSt-Ljx&fI0rJgU5Po6gX}ZFv1mUjImj*1f3oOUjvvxHVbM%x)3S^yf{g zzaHe@CalU#bE@7VkN3ne(nx*=OeO=aY^((f|C2br$0MCRY57ae&~qZ#uF_Rp!gkOZ`)z>(ffFj4D; z0c1`6)Y1P8+$mD`-MzdcX@=56BR$eOzl{Sar(|_Kx-r{*HDgvwJAY zt)7_GuH1G54k;Cp$J6OJ8>WkuC_k}2Hi!u`+E|Pql=@zw28q+n1(SIEa~8nVPQR3x z=L>i)I#(*|r}=3N(+rLy_Fr3~Pg-EBnb(AadM`>H?R*Y0N-vL`6$Dag*Cqs0AvaM1 zdD%D&$?zoC$@);d8ks@vA}13?!10s*T}UV#4PSCBe8gztl9}{fj{B?`_)BoXNR-&A z;#hom?QA~Xj?#0iMkA$QTOt0H?f z5s>f#BaC1QcQllMM9di+%5*ip$Q%9KH3<~eHF0)jyvJp6@$xu(SsY&;m%hlPmJ+oMpEj9|h{9m@ zy47p%ib3NOPrtqBBDBWKHO!<2GyBWL6m2toa_4S3NhC?tnr zsUkaVY$~JlWD_aaSQnqE2R=O|u`bqsCnU$&OO0h!nV87+Ok+N=R?j=Zscqq<168q6mQ&XoV&M&${mp$Yv zN9e^*BhB?2u6z<)GPAW1y0drxz-QJmc zkqE97``BL8{-c6-bm5&mK16_>dC<PZPzUq5;R2uL)_MAI2QKRSJzup05O@w zZwuzIi56p%+F~?Ecn7$9$W}7E8*mk$&YdQ!LB&59|H?L5bZ-p7c;$D4-dc?us@fG;Fu~^1^^?*q{V^SXY;d3fk{?C@l^8XkM8T9jCj&*74 zh~b8DDos;Bj*=n9M=I*Cy>1_satQBTT2Cn-j zMtJ3;)br}Yl=vw1g`4ay6(6RCEax=?H(cvk%f{|1^%Y(Im0h3*uj|UL>>{^Fs)DQk z9dNJS4!LrO3&Mtu%=;Zg5g^-K>*#PeWRs)AW}jF)C+Vp=|9Fr6L{I3Pj8U!|QsK!7 z_U^$g6d=-lL08(HY)?{vV2udaPa|#-xCM-cr!r#TSP1Pf0rw6EB7TJwJ2I~FoXpEZ zfkkhA6L#_*!=3}g{kxQe=4b;Cj=cCY!I0>Yx4=6W4$t$N0ezhMI3NnWW$nqA1f;57 zGl6o}0=swrX+!>Ny;aY0rdThJEz`4*c|-As_&%_6^)m+Ajw859dwEpy`zvpinN4?w z*2;0c$e`tb+yxn@jR+i>T*>YVMmaYPS)=t6}LI!MGdpZdOyy;pWS+ITwNb^V%{qNuGp!RZo%`PLka@@<*mKrBPyf zIx|WV^DUFYTf2jJEB5GrTL|YuMZ%UGdiS75I=L5d!k9#=@4pubDx<8@|a>=#IJ zi1E0Dj*lm_f)cTQitwAg$t2HNMVLD89HcM5^+tDZHEtu{`u7IIw->PZ8G5!kT_#w- zWP~|m-fx4wj76)UEE9?KGMz+PZApGp8+2rO)6p3QW9{_ORT#3jiPC`^-%FzSV-dU{ z>}%8(%y0W8R5}vl5%%RFjmJ0&n!MLqN#SOl%#kCQ7C?Pj#+uQ_^+Vz6pMZIjI9iVd z;P87PS7S{PJTe`fpmAO~TJg$PaQ;E3>I7=8y@=|6rc8h!4?9tywzOxv2XYPw_B`0e zGBJd_3k?LlodJzQ6CWk-mks9D%!ftwk3Ou2fs~t`UDONby!ZefdW1zCy$o`(bD>~u zx8;|#pNSGooRMz_% zLpKq%UQkXL5M!~K+}d`oJj0)a7nYpm=54foPb&KzHKV8Tve%8vBO`MQ24vZu=MjuN zdD#a{m5Hq+tHL?GbhHTqt$VcKfm7ukj61Zh+%Ui(s9tHi{ji&C21|-kOZfAR& zT+;DaqxRPN7bJ2akJ=TP-}h_8*hMIR zI?cXF>Ib+F@tRD%C7Z)7-Fz6>=$zbw$yQ)K0ho_ABM_rTv#e9~;V5TzBz{|G7)0BW zLpD6*?T_fgIX%GXv1%dA@b$v_YibYKEhiLi5vc!A zqV+pF=ZG`ph#$zpBiIcP1=e=zA9PCKR?`pFIp=ZdJ%#qzTS7_#vfMr@OXfBbc{9d0 z-inLfDY++QWUl0-ySCFd1!Q&V8-R(Ptv`X6W~1Pu&am1bq&8hI3w81Ms-5%1Ml{VHzeSL-+8TI@lDvngE65{Iyyp7Tyj{#MuP-wwz4@Vu0_ zI+f0r0IYadiu5%ioSJ@Bc)t>v+4kTzvZ>RLnywPw)xz!%9buYf(j^C7rC81!?~QI@ z-4$KsexiY)u#IIcmpM;NlUvFbypJ4Bq+hyqTb*~C?W&*m^8+K$AMa3izW~k4q!ZQG zLbd=vdFexh;VR--`zx$1fZtBUkHI_KJJLHUld@0tzAfy(crgXVeNmx~}{@9rIJ=i^oN zBJc6?V}fe_cX3IDewZp5Bn=RmdvQzSg&@7*Pr4fRF2YTw>v4}+rE5}d>_f@nP$2>VmG z%z+8Wa;`tj1rZi0+wX9DN+mJGxjtv4LS$Nk%2F5?AGXdc5@m%QLT{9Nq+wwJt}v44|| z-X*+azLvizXRpak-mgKwuWf{^I1rl#!ENW%srPpg+Q&ec+7YxS!LJ-ZaGQof1OLG& zo+pO;mA6)&SRxOVFjldKaex^-xYdoFfSi)YT@msqa;1-^TsuYL`xARWAfFCF2aHWb`<3Os$Y@80GI zHx%`C&FXWlep?9M=XvLk1^2J!GJ=nLVNqPytaT)_C<`pMwS5@hJboH1Oiv$VDlJhl4@!iwpbMvE|o2`VH_$*Twc*eb0 zBMZ(}VsCSyQ{Tv1z8{Rk+rsj))-BEG8!d})K}L-;nqDoL%6!4 z;$2CoYSKgle00vJ1e;(t>hm)BeI4g)bIz+nan#aE4wp8ZbBlI!lk6rD-sEd4eV>*| z>|qAcQUyE5AUYBjxf{l+mCzE3Yn}Rvq}x4VRC^c>6_H<539boO5w4& zG2zqMM6g(3c|?q~S&41Dn_c-Sc`ll#{h%rHa1(CE&6(d;+;=MseV34`Kia(RPgPQS zI+{1{wMxFxBCw3FRC2h+1J?ec;x1`UJ)Ux(BFs#9Msx6wO6E6}-j8|BmmX|dP;bn? zRKg?eY8v#gAol-|Jrk?OBEu@V+|#Mw#ocTgjDD4|Gz_JnVfLN?I>~|Ok4?F8D&wY8 zq-Dzlc|z$dra1;<{$rKk%1>SepvfqFS#qa3smll4}dL7W++Ne2-U$Rj?%pQ})g z`&yl~t*IZhGBfXKO&&4^{kl}agEMjbHNp{Bpm7bEA|($JrZkck*OM2|VLy&7VmsEz zYkM*ux(TDZm~Zw&VO`n5oBmk!KC0?+8mkA{49}=RkNl1FsKyM?@sFzR!_{C&m!qPI z(C(qxOAq^f&L66qecgAfaesVCEq`TgWO9B(weUiWmvt10Q--Z)qIaff=QgLD@rIRqYpSzU1mX5P^dac(k*h@dXv90D=T>Fs5Q zoaw@oP10{c@WD1G@bolJu>!TffvOjfLVlhsQwOs;Ek1_Tco`vdyGBX(=Bjr~)xNRn zO|svt212}6O}$w~UAdtO#rs9Iv09>>FyC*68Itp8UI%fIj9i$o1A%;%uV}o^>)yyA zP^MTfW>q!Z*YgR>b@I0m5U*C&EnTyvdtcSNziQuG^&YI+f2`UcR|}-osD}ST%2Dhx zcK$=&z4+Z~qs6xigu1PfD_e+U#{2iA)seFuajj~EEogGNtrM)_JG6a%y$(tHi=a`z ztPfRNTMwIe{;29bU$vjDdM{M%Givs^HQsr8Ej+WhCobSNH39O z@7!*B>8hG{b@8(`1uC%&dDqZ!k}$ z)Aj;6o^+TkaVg!b!(g8jungXOi+S_(g_EoodU)#_9p0NA_G=yHt#@??cXs=?bYp-5 zh1b9(SYgfAe1LB` zmDSfofSCq(kvBBxc9sel{n|vfI^AYzGIYBK3VA3MS`XbGG<3V)`>0=+61rUwXAEpk zw+9lsofSXmcOUMDa+g9N%0y33Wu5X^XTW){e>2McPJcWYUow!ta$sa?{*C^^3;pnv zQ0wt(rgNapaSs$>Bb_c$i$(uMrwx0#L>^o>+@d~(N`VJkIn>W!t&xf_P&B(ih&~f_ zvb%`k+wRolY*{smr+z&sO~8=S3iXk*T!|IxE6aJr!^rUFsI8H0hP?ZS+SDLq!ueZ& zT6z}`cwP1-1NKV;UJ6(FH-_x>Lt@ncYry^H%FQ|Z?cByIPYsDDhoa|(V%e4Qp51gM zZ{Ip#-#!3hxCE_Mn44^I??Bd+&?fyJA2n+%`v&}dh*KQo`+RtB@mj8VZO-2sKxwWY z*F*!mPU8?E)8f5c^OF3DvqqXG+qB2d^O}$4j!E$Up`Uk`q1(g3)!iCNv+|klR zo3^$77@1@NoxBk3IPvnK%C>8k9THOc$uS^~DIB*U8`h#qxC-vvKRVSMlkAUSv(%XJ zPc)?VL1mqfRU&}9X=jzrl9KCq6NCbDn)$126i3&Y;3?NP$m)pP7rsXxY3OPh63fy| zp=TN@Y9bqV6P?1F#Y{0u|I>wa*Elm1@=`qA?Jwz8+mb0o`Y(3dk93ozN)sum$ZBrF zOqjT1<3LGr*a_S%CyubJSx|ZMF4L2g#9I#I1tS0uy!lMGZ&+_rHpX-e5#FipHzl^N zKsUL0m*_zoaRxUuEWoI2ar?*R$*Gt)9-XKpw-s~D^5qIrhLqOGKZ?7hSi|a(>=q=y zOZjIf%R~4`oAu-B@q54u*3)j7ED$MgOsaNXS^Tpco;%K2-t4bvCYg%vU?7lf$IjtV z*r|I~jf*}V+w@RR`jH+*D8aFr+r}*w{}+329wkMU^^3+iabnEKjL0c6v*wASs;JB= zD5xqBfdVBp#hF$VO|cx>_S06|q1*1ZMMXem5&;#J8BsxS!Vv`(K|uv)!2z6SacW1D z``Zy&P)L9Gy}Q<3?~k{>sudX-Cn6(uoME4R_VC*s5FV)2x0C7PI?9lPL4N_l{F;qa^4xSk%9VMIGD~ zeFvYzz0YFrbF}vv@;?9G^&OJvwTg6KOYdt^Y)VSLs!w22AFN9e_-k# znnhgw!Zf}#4ewL;KFu%8$Zw|hgK7V0MiUm8Wne-eGCQDM7cgf8qVW>7Hxz`HYFFz! zOyet4@jkUrO#4%$ZLFj-#Rb_BrV&qeJO`){)oMSbMEwJU$`og-#170Dy`iU*A)}O1 znkU$+Do~HWyoTWi#vm+34NU{+STpihXiz#VU?>JCJWy8bz$K`abI-zj?G(0Q-M$~t z?Ry`5KLpz@0?+KanD*mowx=)ObbSfzzM?|XYcc7@(W_6vb`myH-85nw3Pn>5hEi{A z3XTcme6;u7;1JU^fMH{>RbU%OUoMoU^{e7yex1AkOj1Rt3R_&K-Bt%|2*?Cs;PZz8 zK33rLNGI5>?72E^Gp;is;&|6J0VjoLRnFe2)84Ox6UQ(Vs7va#JL;2!JHx}h%w2WC z%j;_{t5@!?S6UE;4d!iL=^d@C*JjmM&Gf#PALH*=)*JKc4~F9=erts7u!xtNpVet! z*3}*a&vG8duhj$0EbI;#Zm1lV}pSQXr0dFym%yW4-l!JXip~T!o_8S;a3q=O%2=y zyv&r}GhtDLSP{o6_Y_YVsA-*eW+SvwLqow}4WbKsV*{9|4Y@2lnjq8QFL?))5Yg)y ze4Q(h{%{;a=79^*VVZAaO)Zi>jhg8w>E+f&80Ziv45<;KB+x10F^us^oBmV1_FH{L zsvyGN*~M$I9{GEh#E%si6vyCKq*Q9YhBft*^z(7&kdM1(R^qg9~q`k3}|Yuy{I%A#1?{ax!C zbPaEAI$Ip#R}DO>3(rTqDD=T(NrOUGse=!8p+crmg?Ntye%rM6#^u#&GVbdZl*d#$K!Ti(?{UM-LV&!|EN z`D!;g|9uDP)zv|sruyiQCRo(o_yxJ+$Up7XK|T)g52%B@AL5_+9b|imzeOG5%@E&0 z``1JK723ZXs{6WC`=+&aQ>g#*p+ff^Ul1RjX5t{fjpku_^1toA)JKpSk~(pJuM?lU zl_tUcuyvd>7lWMDYV((D75iz+`f((g6F@2dFMXhH+MW@1~zgf?qj zTkREXNHeu4Ht_ALuI^h%wsQzPDUVX&Mvrn*RP6B9PY%dX7?Me0B}ZKeF$uyJn%01| zV=b~*DQqD6Jm&eaL|g|g%qMYaZF}Q8J=ps_{cIb^vE~ipWNQ~OQpOx zPK-vy>YvL$SMp!ci_mD_S8Crx4qldvt||A4sii7SX_n^?`#woV=|=qpb>sVI*Wk15ZE{|AdmTAvQ&`Z znS^Jc6=0I~$KAQ#QZ;!r!x3?Nd*c#YzNU^i5l{g^(XBRLXoJ!PcHnlKf@#GZo8N>I zdA6-xPy1OmzmE3PZTC)FxdVoE>+Uw?{x)-En|6O&>B=^9L0#L`cA;7!k$bG+F@`Yh z-Ly|8Q1rctH-RAoTNa3iFP^uj7jXA|fr;!K%rP%PhuRM1%j!11Ox9-f6j^O5rg*lA$>@0Mjv1}&0bf~0%fN%}m zSAL-lItTGeEq}dM`^Mp4IQo}P;+ZyULt6{2K#1+mW-y-9st%e(TR|b+{UO}FFGb0t zt0EK(Et7zQ;02f+&%FqAkME!6$(P!!m)mMzYBOJK15N2J;tm8UwP?VB(zO1d;Dc@y zj1Tk6!usXm#9M9F+a3kvLb}8E;v9z^y5Krln%y53d(62-JKDlzGg;e^%UEyk81P6dmxOIPq=k`8msa*rJNfnL!bAabmq z%lMV;ASa3F5tu@LE(=06312Jtd#0zBgQ%TlV}2-eegsj&e4_4^p-V*_pN8(9!qTdb z5wwV|OaK=UU8_OYSx8fX{tvoJMUcP}iL5d33p>bb*jpLgc6InVKHtBQaEN6ft%?AY zy$XD%6&;x(NTgoTuHDrhUeRvOZpSNA`z|f?o*~E<02orLiAF&J4?GJg*%7rA2L$pe zzJef-gDY^X&wvWMe-#W;HWX)+u(=0VK?o=p9M&{(%z~EA8g@?trb81!jD6ff>(W z5YDbB@M3i9Zj(h5x^*?{k8Vw}{{TvV7V_NX-ymaq0NXi(hf7uy*4i`>TI5!Yg>rl! zh`nbW20F+&Vz_h!Sl99LFtH}ZR;LWoURjXq4^aFU0K2DPc)Wn|P=YT=K;p&=Kmflx zA?73y@@@Io!M`$w^#rcdyz3yBFGSj6WbgB?jSB1G#5r3M1xfN&*_R{%Fm(p$s~QD- zeWfPo{VAxp1&ZI^SY?(Yzz7bqtO??I2%D{y>#eLmBu^4nH$Yeo0$@axVM*6o*y?0U z8k(FU%65j8U&3YM!^w-33(ICH$+<$AC+co5f*&6Bs@||yl@>PA^P+Q?^SiLNL4O9r zYeoNT#n|dA@%UKf3bsqIu`riikfB@*_=kr=VGrBjKL0h66u^=c`K{3;8@;S5F!%~= z-m{@3_8f$B&`JT!6|1L4c_K_UxO&V*5I@wDVq=mLPa}^bZ#P>~@EwT zxML%r5?YJ6Tt#szLviJhHgp+`I=+|yiOD$<`j!q+@72kYKIg8=lVc7 zf?BCZv;uq`dWtO0SJafps8WxX#L+(a^?rqw!>87(Frb(hqSvZ7Q*|unlECKi`F^mA zRlu>Xl#SppEuIMd0J89)vcEyE3Ho#eKey!1ERQbatt3!v&;|T6@<1188AHS*9`Tgv zxQM!30?Rk4zi5&8XbGuC@De$I&3mnRIQSNxJrvsDT8ZbWmEb7{c=}fIv_5w<*jNHS zm+gzaUds7jeSOf8=$xJ@c&v=BnTFw1d>~5$l9+cfP5`e4g#vRi6%{O}7h(~l0O9Be zMy@pk-0YcOXUYI5z$HoX9CV&=$(<&9&bU`7+X%GmNRAl|*H^>mi^CW&0AeOq``G@# zkd60@!?^r;Py4f;{F|Q2*FCF;y52Ms_DTfNVyf5QulMNiR|5WfG=sRkm zNv+~d*ki%niFmdBMPJMdxWVcCpX?Ap0C&7JjGy-x^K^{DuD4KKgeY+`SnC0VU0c}x zpy54uY97*#&J}E)aJ|p4_jxVvcHp15f8V0Vn0M7I|BUS&%=gRu+xWlqPh2Ow^Ar5@ ze%bncFFtjj2m3d9rTeANbw8Me8xNPnKOs_Cm|t}?7I5D1-DRDS9AQy}MjQbcP!U7A zV?)p-InHUQN;qm_8-k6>x{ed1z0~9=&Ndx>~dvKbu7~_4c_0=Dx3__$>b%9h{9D4T1s|8S=z*6MZ#YzQY*^0P!57Z*o zy>Wg&_JIfD{NeaMpgg;;53Y#w|8#xufw%&5V;o3+iHThxJHPf6W1-&&Tvo?_?&*Q^ zTv^9S<6&M^r%s|Xlk51jx&k;)VmCO?uRZyH`#W&jJ--W0uG{_8u>{GpEvmd5-3z2= zTU7T-W=2FRK$Xr!+<1V&ktg^F<7*i5OU8a9^qyZF{#zG%Pk_*Sc9*QQ@zXmQqPCEk z?rsKuyx>YgOba~343wn;OT4iiHxLx#iGr{vTKB?vBa&7Awx2o}3fe-=7*5}Iwd&^{ zfuDLp%TwZ*&RoH$5OBIAS6T zIQR7^*;X6zplBYb<*RCwkJPF_?+OB!z1C~8RBz?f{r8Z0c48I;C3wa=KoQlyOX%Mw zl7*@1}j5G4jgX#o#^r zC+IJgc72p~FH-HPRmi~b4>1bBkfDYk5EU)C&g`ew%JIM%09vWhPK8a?4qPhEh*XE8 za!zz&AC`Mt6GQ+HIan+#mn5GVKv;vDR8lJjzq0^kp(~v*w_*|C0iMICgDkj&@Y0jg z02o7@gv}k-)|?3TVQdAI7o>VlV2fZ2d*2Uq695+r$GIEF<^ZM8`wkf+!4k+IAI28P z<`ljs69<;K#Y#y5h~hjY?h>#1^QG)s^?;b%gs8VCBG=DW+@E@I{x+ zG|vRF1=4V9XMq;pj^DKq<^=C+wQS)70{yK4Mt@_Vig+jo3j?qlh}9w4*sssa+v z&q73766e#vSPF9d+_*l8Ah4W03l__l<8O-daeJ=24qOUQ1i!`h$owW`eyl!7=3gA= zQ^;jW_vHOsaIGtcZ;LNvcg7DU`9tL^1v`Lx;6fQ8CI~Et%ujhix^!O||8-RKYS!Y( z{L|XLi@?wD|-E#pR43}^M z5wyq{OZHaiI!MRRNgfNoF#5FM=!58aX^MjU5||DYpa>|uNUui>8uaus97hc#9;a`n zEHV%z1b5-2W>N2_*V@7TfptA2 zl&)pwlaLm*C)mJiS!Ej0UIOaGK$z43blYJNg--Jqqx*|dNa=MJ$*(E?2Bb5}o#!H$ zx>EitB)73_KYEearI17Kgq;;2oq#2U6}KRij>J5PYHtHcC`m)D0GhsH>!7!Qy|c>u zTfUyCLC+v9%wYa!itFEzu^;F$A)SFNv z0l9&&F&LELvkAZ`V9@}|6X8sNBLNO<7-oMLzvW2!!Htj`Y%-c)n5EZTrTEs{6JZcx z{ScOWI)d3R;s--g!xa?KwT`6IBMyb}I(2woX}N|}vGCgkxCc^}plbw+`=U_*IiPOU9FS)psC?LsR4`>UO`Bkyyq^e)#Yh@MWOQ?g&S4C zNfceDRMg;R9!kbA+-NX1*SjH*V4=`>5bBd8OvMmEh|yz1Q;I~;BF(}1xJ?|AAikE0 zmzlIxwN3TbU!C9od-+@O*)U0@KVYUX4i(cL&$U;uOi+kX#1z)gt9x)W(G1*ZgmVMQAe*5u&8dy`gFS2BQKY|z8K#@k9oa6|dznA(HLVjamqXeqI`);-dOle^G&}2tuXxV;^1Izj~ww6_A zYRZZmOUlBHk+Nx8W~x>;U2D8nD{E;D!U9Uq?@G5yDOVd=1vc96{hf3UXwa@ytdx#b zLu97E-}^fjuw7|d8`UzUQ7_XnW*O|NWr4;}Suo?2*&ro6MB@LFD6s_9@`SC!uR}%i5xg>^Pmn5`GO>j4tV$pXfI!e zI)cWkEn+2dG15bUk43=GDgeucV740>;06#=5&^QkUaSQ)0*FEi9f}2_rn8dSCaH6|^!HNWj1aah zkTSrgPloS;qO{5Z9oh#EZ-LYR=a1lfBP` z_gS=>1LvaETT}+w$&fSPb;e$mc@Y@S9juiCR#LnoSPFU0s^fKVna~0}60{XHA}0~` z7SiL$B+>+FL+69|NG0Vc@aIR`MiFaDmK0Tj$&dygAaL-kfz6*V0ooy%9p1%`4o4*F zF^IJV4*p@<`DQ$TUl1g~3UGqmbm5p|N$@JXV;Lec@KW0W?7oe&?MQ;@?GoN+U>n7` zcO-3yy`jX%A{j{3NjniiC!deG?JxYlLVq^Y5(uY?2~P_sJc;Z9{2d10G{v!a9q&t& zmnP2%oQakq%AaB$pFdN2TquvLbhnJ=CB!D0y#Uxz% z67XNf$r^(sw8~IH^@zx~!2ndMtr#TObE(V(2EK(FrK&r` ztFtA31rG2IN~dCy4^;p$74UrOEcz&u$^Zwl2!lpj%=j`E08l>$4YVzKi8nF{&H$-# zq18pURK&;(Gt4;*OYOpJzqtT6R0^E5dVZ9|E<`eIg!y7ZuLe{SXu1$2UBJ(doa@sQgDgc{5wS-Y`%Ov=)4chQ zz*$h=QUy<-bc5(^rGVP22={_QlKNk*3pWt8gzI;>jRM7v1~n)I^o!b7cS@J zV4!ZG@LB^fC_4S=q8VO;#a(g?bf6?7FZ6u^ABSL4Dd{^|ozhdSGkYp^mDplE9ULol z2DZM1?|tySq-Wf_rnYBqX=I)MR0u)EM!8vmF;aYjGFm;s9IcE(wAyIpgxF{YCCUlL zamoo{V(HLQ#!hkIma3d8kB*<9jt-rmo~)c+^2hiY=4s0DwSNdlp=_th7y{~-P`*Bo zeLx*@DjS6AK_F5>t$=pk6L~(z8fz!1YN6{vy;fq2A!?QQJXizfNC)aF_%LHyKs+86 z=n580z<7dbu~z9#9W-}%t)%~5`b!GnDPho<{@3h|#6)GQVRhOm>%9 z?R}o%eI{0zG3iHE4}Yg15;SIjI%6QjOX2;)HAQvsISE!mLL&X`AkYI&??qw3IQS2C z2KWxn)dT(K8HVijGpJeppoNn#>L_DY{BZbRZsSOlSVi?9Y7rHd27hs2m3W}K-e+J3YnJq>Dwse8n#NuXv_EZ`%ooeS+W=jIz%dNhfVV+i$h0%% zld;y8wNvF|!QRtwk;cC=Q0S;(EE53lS)<{b#Wgc7j3bqC%;+s5cuRN%_J$8)FKo#Y z6RK&=F2n35MCGLkt$e;5n1dvR-g~~HP!3|)=>Z=pZ)I3nR%td;W!QRet&gac3D+H$ zRv<#^SAi)5uiWlU13~sDk&!k3P;4A^4UUx?iU{#lD@8z>dKm%iakaX+k^W>E?o7*2!z6d02u z0q-u99Mw|>G=L(Mq{MlWM3!M#M-ZubKifo+nnCZ=+C)t-0DaT}Gb~RU2?x__CG^M5 z(oXpDhnHZIf$l0|+{&G$LM#(SWy*W1@uBK$QSGg2RD`y0>n>dFS0D4MZ;%*@DXBzH zYf!mpIGIFWCagaHA~KxrDblI% zAJYAnhS8(p1W=lRpn-683sK$}>QGxijR$kTB>sW=KjJ#_$}h$?1lx(&LKK3zi%Xwc zn6?1H;Ilm;iFPK`bkgEqnA zQfdAP17N~XXpL}|B2?bR>f3B?E7bYZzIFSQbytGk^a>U0OdeQ85s0edtF4X`+xDAMN%tZ>D3=#(%4Wf7_3f+Z=wh} zt~|N03RbWqe2Py4mqlqUB_EvryKD79(jwrFVvh5PEk(P5+507Ut3k*!sTU!8NV#+u zATiauk&hz!d?;C|`PUCa@5A+t5RXt&1obW^1%$g?hd`G@CH+e{ngXm7+APlv*fLAQ zSea6l-oRLvy4}fGCDtk^Oo~_i8T>wf25;~cXh}b-W>_^`W52Qy=7j&MA40=^ z48%;ijGZLMWZkq_TepIdJNdE)6)Z??STiGqO_+~Hp=gyyBPDL+y5jwF?09y_$*G< zg3pr6%xQRJ7<{%T`0TOZucXP_%x?8re|QsIXDT{UiJ}TTw0|mGG+6o>iO=22!n;*e zEau`?Fih|5+QON^eiuOidMn3b{y=d69$JEj1~i;XVs*X^HQC|6Cwwo2(jTok*z3y$ z08WcSwp(#AH6>mBmNJpi-M@QkILsCz{d**qhp-S_&k=p$7fw{(|nkM5;)mwRI459tbLt9#*h)KDp4^W8hLHJ|t)OD-~s; z623w)#wpGZBKji{^jGW8B|bsx3kgkoizc{=^npSEa{$B1B>4FYsF!r1{ef1Dz^T0n zDgi;$piK29TWcz&sEXdHO0SOo4w7o64N3(MpU1)&#S!D&_`l&siq03jUQuQ%shNr~ zOL1fnXkU$NQSqyo^)GKK1h^A%5O9xvVn2W^4%TZl0H7H-nZ%I(0aPKP1}x5CR80v` zl|nVeAps!eD|u)@v44bbp$JPAJyNkE1+|m{Nnz1>|RHg879eh|!q#Z+<3j4pAFA4v1)ln*$vm z2Af5=x$>lf>ONSwG1>IFHKbU=k+T91Xa0O zb+1&7@v8Ha68)JP?k8q_gW}s^R;S! zqk^cfx%Dxx^oe?gktL3l(*3&iESyXV0(Q%QsG>rrrXk(Ee^q)Ne2Le=olCtAUR?B- zl!MN_7UWo;ft;>c>nnJ;WA%HjrcBoy4{*r2OtUXXsFZV=?EFaHVK75W= zpJOrTc2N>TOh1Q76-T4{0I9X;RvL7N!7jExcW(h!jMsl|md*K!u>g~_3TUu(TKsX% zctS(xUZL6dYlY6eQnv0OjXzO^Me%_&EsPYW!?LrV-rx;AoJ@)y{Au)~qYM2ATu|vi zWyK5pt_(x(Ft5oTEAXTusiF}K!9i911*8>8??NkNT_p4(3hG;9~LN#I~7_!V#Ub&?ir!IaYqZWNTD75 zac9Xz(sw|w3*UsNd+c_$Q0A&)o{IjkT34RXokw-!G2OXax9`!>PitHydc1s|dX$@ zQv7a%lSx5RRQE1TlVqe@rzw-(#oL6hLV$(GT_!5ZWKB!~ik)(&q1EdhpC6rHZq?QE3$2!XW!0h|e5`UZDt0bsxu_y}`LgF`v?m zby|xM9~sK0hVy}8d`NHgl3{Nxyp_8}39nN|`mOW;XNOZO{Ta4<17YaR7z_aoCo_L2mum;P+oy2VJ3#WU4$NBNFST1v#DyK&Zel!b-I`VC<^6X zQ@P)C?lz5kOlPra-)f@H7OU3HD)G~4Y}IZ~R*>3)h2dEu{b-gzWWX)G>3WVDT&Rmh zx+TO@rt-8IdD1l20zOc=+q55q6NT3W9#E}iYC(Q`Zjbzi%IfL@1^ErO=iTxf@~|Lj z&fcAX-Mh)!BOeyXdJj$8oh-XR7OBBVPV~vT8)Wfm45E3GMAf7x zT>KSeC8f{Nz~Spame;`3HRXCk++YC6it|S(ZGrPZz<7{qZE?U}hJ<_6^TJCtYo3<$ z$$OHfb&Qb)SVv9tJYQVINfKXaCMB7vDNTV!$y$l~dE*Bi^<0L?@9)W!Dyj z-MA+V?vQrh+$~Qw`-{UO^vH`qRkJkDD(A)PL6xWRT&ERnG{mz8KykkaC|?C4p9PH1 ziLfmJdwUmQ+cfKCQgBk!e^JnW?uWptJ)^py{hSCc)usI`LLJi*p*w4DmL3kGPTtY? z)X9ftQm7Mx%GJU6l|f^CkOqTg|7;Z)%1^rWrH?f zJ2%?KY}=V^+f!_G&dC95Tws9TU|0qK?1DU~NL}5vmcvO}*CUt{h$6mZK@CQ8ad(+} zfY+P0@9s@Gsp4?dEv-(dZgbL)c12-YEnX5Ryf@x>X;3T+!j`(xR-U(=XKZ7G?L2DR zj}dW?27tSt^NIVK^d18obZi~G23w_JJBf))vINVvkKiJxLZU=LHBM!oxZzn#GlH#bR(s{ZiLngL_n#u z-GOdof>mhP@s@c_NK6WW>nwGYZ#l|#$9cms-gKNzj=h!{pW{pO z;oZ_a&E4}zW;{k(78%aVUh1Oe#bD$$TfA-$=E@IY<>#>T@38TG*!d)Ee~Np$p9I6( zg9T|Ga^jKHG-rrE?v~~QT0xrMj&9v0&C|4fK(}sP4mlBST3BT~>1RK{Dg(0YDNyB< zfUaR^oRQM1$bP);J?~Y~>)#EQd}ND{?H2BQ8??R(7DQEGmwBS#1fI5Pj2H-;zRF01`xwGWa6f-^&>58kb_J* zp}>A<{kR{hqDv1!bMj%xsRW(aPa$enyz7r4zn}uPpju@BQu?b-@G3*dPn@HSfho;${HBlwE7|)#8 zU$jFrSpxH^N^ZwVu@2QmsuBy;1#DlX9Z+iIqH!0bKB%(pV$KSfn%~`&1mGcsPTH#*%*yJ8$~;Aw5=!XF@8Hf&Dm(`(&vgZ z(T**JcEm}vqxc2wcvhhuX&Rv}P4m8^M?KkUj7Qsy-L#>9oe0{>(Z8f*vqCReZpeJ0YB)u6!VT!kG*LmZ z<;gE?7-7Did_BexjMDIAFRT$rcsk!(z`AkfCHWptWGoFq)kHn&@=*f>b);&&a_tc2Fs!M8Y zEtn2)a$l*Dx~Q+co)X8KuIzf#`<&oI5%IA9rfBuuO;G zCi!AKwLS)0<%Sr4GG?rckwb;OF&0`AE8k;$CyPE=XuE4Uy*BaJXrz^nN$KNZ7*OWM?L~1IP!@)*8^Wl6T9G-*{spT^p+UM< zWMow8TFQ{MBql9#QF|Nl6tDI+gw0J+u{ny`+Ywj3i927!jW6TQJ8}D6s=ar@*6ZO0 zX{`%+>NEVt<8q&d^&L_1RTO{%Q(a}c>r8fyDXw#wYhUi-HUO`+b z2y~=wBij;b$MaF4=Grp7xh)IIi@v3(u!tyr*NF{v0-UMa9?{us$Y7 ztcej9Jy7&2C~eiib5;2VY zDzK*g3v80?ntSWKEqITAMU{Ge*K=n@^qXSh<`^pV5m$N4bsln!hh67R*IrJ~y)$Ah ziuh9R3+z&afLNDSNfphhs-mRFR;;2bX>6i~TT5_5EY#t56G<+OiDfaQI^cYht88|i zjjr*mi#hTk*Iwfm*7&O<)_svG|Ak-?fg?4+feeQ7x82j^s0=5m=MZ>QGhQf(x%x3k}Txxwg?9s-hn7nkm_>%~AGQfuKZadapZPjxvc4}jtCJgDgV_$s7! z@d}eoSa9HeGeUaIhSz6mUi6pgY;H6lsr5ygSzKLLq@^N7mRa>5zu}s~*|h&H)xpcE z{`0l}=}ry1f4}FfUsjwtq$rIolgeUGTke0p|G%tF9b{yFrdzFIzou)G$-lX33G6velE$T?e2dIdYwB)zi6aWo^0~ zfq6~Xcr$+KV3@#j4I8SOvixlgG4W1jtpjz8qt4`}~B&%Ho_mYR-{jdh=y)s7ZlV3_Jog%vzsj?((DBPW`x5P6;rUsKhLhD{e3)lFO}cJvv|8pY!?U;0{$`%LiOOg5?2UAM1J7Ph`&m3U zlgelC>~(ZJooBD5{WPANO65~{b}}7L;@N9xe>KltMdcHDb^;xb=h-W1KaS_Fpz_Ok z_A)vi%d@+{#_iu&?pG))?42z83myN=vOm%ON0$46%D-pXf79`IEc-3(zhSwrsr)OJ z-9g7+vg{YM|D5GMqw-H#_7gh(m}Ng=W$!8$qAD%Grdk>>BJ2-Y_5=8V+3&N1-=nMF zWh369tGBa5w$bt1Ec+H6zsa(1(0(h+ZK3klS@tzLewAfkq5aD&_Y#%A$g(fc@n)9Y zMEmDi?l~%dmSs26@dlQChW1ah+3AN?!up8bz;d@x`OPeQ6CKZH*&Atp1Iq!&6up6E zXVUQumc5Sl(^>9XDxb!(h>JjPVA;vEpTu(4Q2Es?dlel|WZ4O{AJ1}EQu#QRy@HM} zXW7eWKbGY#Me)C~m*C)^*?-{k@41Un^0(|?@%^Igh4{Q6cRuiT|I%?Dq#&T+m2vCO z9cSb7td9S}=b6L*gtKRK{1InQ?>G%5r*@oz&(4mM@i}JrNjRJDII;JQ9EvgW(mRy( zN1V66wPC*>HVe*}Q4rKs-nDNpTu1wIgzV5Y#fWH(;$@0=A9t1a`k!*Ie*UK({C@I( zryfRn{fzScHhBH3Vt2p$pMLm%v!09Lf%*T%xK4V!rV`5|pXcnm@9EL;e|jBKzR;3v z7|@-Hc5lbvJ2Ec;i)2q(*ZE@$*BuMjxK3DPPXVld-f*pazzuZ{^a!c~XZdtz6t>`RwtMZj@O}^T#?d;*!<$Jmf`FgjpvzMF6r`_g!liR1W zx7#=0;<~k2{N8}H2 z56d6wB9Dc8RQ^bJWd3OPn9e`Aqw>eP$LEi8Pv{)&=JO}IWAZ1tot-DUr{+&_PtTv` zp3(V7_ssmC+_Uok<^H+zZ1>#!IqqNb=eZYjp6_0iztH_#{;%%eJ1=(sng56TulyzM zSU^^|m$Uq3%pJ$_S1@-x>%5Y=6Ip%&bFXIktC%~9bzZ~VDJ(ykxzkvFDs!i^&TE-F zgXOPd?ktv{$=n-QCxEtRv;2+By_w~2V(uK)c?)yrvHV=-E@1ij@ED z7c=)ZcFGdw-oZ|}ow>_cekpU8v;3XRy^D3OVD3FEe>ZdQWBGfTdq3-3$=nB7{sHDb z%<>O0cNOb=gdvA#{!!+xVfod}eS&p9&fK*u|0HwQvHVlaeVTQyXYK};e}=iwviwHo zKF>OzWA0{_-^AP(S^fp)zRWsbV(zOf{|a+oXZhEdyOnirVeXqO{|0m4X8E_6yPb7z zWA3{w{|9jZ{>t33Jim*%m-GB(+#Sa|ui)-@p1+d2 z6M23DcdzE1S8;a|&tJpcDLg-!Y$TmixjUWbujTFxp1+Q}vv}uB9=(B&zMe;C^HDeQ z=*@i8O*}e>kGh3N=kfep9$mmk&*#xaeAGf7y_Jtz%%ivQQA>FA4xYcAN0;%@OF5j@ zD64RttceKH3RUqs;O<8>XbyNC#K=g%3RUrX4^_uP1VS1K$|6zA?TD8paYagl$B9*f zZ%APoDYYu_tx~IsR9ZFo)^xSEgGqQh7 zpPBtr`mEf4W&WH!I}LxR^j~u4WiH5`pN6QF{#)*^nZIW*PD2n&|0{P%W-QBIn)XDs z^f;Egf@Q|D?3FC-33chKS?(&9nZ&Z!u(T)srKhpnRF;{}ve&Y-Cn%<8vD{3Sxq)S` zXK7EQOyA6MH?hndmc50gJ>fIGfaT`1%p#Uu$kLven!b(YmaxnnEPFdkdjf5GIm_M2 zGIz1;3YPXn-}HSfcQ4D_&$267+7pt~53}4uEVGJbA7N=voKCM{xz#N51j|0o(w^X* zUdM7zvCPvfyPl;z5k37Z%WY(t=UMhSmiC4D7n$_}(_UuQOH6x}S>E`-BA{t2J9rDr zyvatq!P0NDL*8PU?JT>ErQc=QcUby;mV1w7KBQ$v`eRyxq(5c3Pgv%2mi>&Szof-V z`YV>(!7|^l?AI*qEo;)>v)sQ~=0}$Ofu+3#Pehrf=oB#XNHx&o1F{C4LEs@h3csj8hk*A;M9nbNG&Aek1Z+MY+yuce?=EGm&y*0!;&vt=zetE6d>LtYAGrv8@y*=Et_eSo07+*1!Ea%BKSA{wM&SHi)o) zTSSzP<3L@K4)e5`4=@JM4&nUC2LY{6hbdK(s947<^y=q0bgF;$F+k5Hx5E_X@@mqc z3g_Ui>#M!%pXdJ7hxu0@L04BpC5!4gsH=Joh5I+O&4YlvH_J$eswG<#JMzzD;eTeU=kvXN`sw(sMfyF;ocSaL0J)CcLgr+ zK1Zww#3iv=)`iv!5y0zZBz77DxL88P9f;UXwMMPftK>?hDpCqe53W?)LFS71yr{S? zYNljF!MMw#l}nM?T~8=#ANV0B)vK6(p{$f1R0<0SEeOX_P|0?3jb9{ukMuF<9sEFk zB0mBtcxwWNHCo%nU=cyk?h07bHv>!p!eS)@Jsjc3v;Ba$JN;eN4vIxaTpT`&b^tC` z9|Ao!0!(Fu0tJ9OJB9Udl0msIs;VC!X!l3hI5J^c0@xW^sw@(Pivs|Nk&<4Eses^8 zs+HcdnF;KFkY9!O%WRk@=!tXqFa&L14X6D8&Q-t*cB72QIM`%L!uyPSpOIa#p6gS9DG%icvJoM>E*_l_MMX+nsWjYJB!ymapqTIFtf>%RGE%cw z&6ej@v3XTd?=$6n{>HprrT1Aqw+grIFQRzshzxjiOSsYk*Tx;g_ zkwzGKfJGvk2o%M{TY;p`#f`wogLT6g4O`h5eq7`P1=nPp_+X_~2^49uo<#>(yl==# zxXEB53fL(`k*SIvQ1l?&#c-dX2DCA?DrlacsssJh#xqnH^dKD%6lVdVqc1y2%q3v4 zD*0SxAocv-;ucks`a|$05Y6r+n=lxGb+}{2Rcx2c$BN`GnT-|y@;+1EXX!3r9Ox~G zyd#j2S=7p9(pC=0kLw|m>o+q%=>%_Jcn!S{C{o2}WjBcG#t`YP6akC@7=eK)1Pehv z8>3j1e@{#aSd;=ttqX|VJBglKD1x70ZS?R)tfDIjBqTF|iKTL8?L;zF*L+S`< zH4Xy?%K%=z903TP>3W5nxPuwDqb?`}uJi`knopqy^w@U*aYv6l8Mv_yV$#WUjZ?J+ z3l$mi$yi3l^CMuy!GnMk!y*_7e@478Lb@=1+$ngFXR4kmN3Le5G5FffWXcW9xsD;G z3Kpfy7?eTP=%B3`a>sQt)J4^602YQ7% zf@!D2ZisY*8)6;N26uS8SF$6~57R^QHVOx)WUk$}V{zOM8||C1olw}*ce*b2yFJBB z(>eN0_xp5xKOW`#70&m@p5od+f;G4KI?S+lR7l?-@-fDZ3qt3Mx0y4{**Cj=0Ft;Fs#Eh{$c? zZEAHJmFmrgUKLgnVii;Ssr=vxjK1MVIkgRs8F8`78$&&Va;Qg*$`81fDRWp__5b@_ zD)U2uFV~{?;4PvzqTCUsEqa&rK0B?(9c+5$FkqUiy^&(FrM2r<=?m*+8CY;Fifp#f zuWMx9goNJ#7N`y|7uZeM{^kO-kN%5WQ2t*obEDV}a}6A60ah$0S^N%gePB;7N7~Q; z58P=GvVZai2B>PjnTOusa)dw6quaO~>pRZ~JY)oVb=?%8U@MEnYqEST6O$puM8);M zCAm_Ah7y^m6Y|VBMo|sG-4%FOw5b8*@6;boMynjx#G4ICY+wim1h^j8DtSY%dT<7W zPy-YT2<&0Ez8oH*NpOf>i28&R)>?PTFJXp_oS87} z8UXt%YzY$)87bM}F*#}?6kJ2qAYnEx2UJ~3FCwXnV6BnEE2*bY2AKrj2S`URs{>3O zsE&MpF%%*o{s89<1SlD=8`hPB<(v%Gg%&~TP;2l&pAXK~fV+kB&&iw>2a5#Y56pyJq8my|sX^5Rb-1GH$Q}X=VIB$_5u_@U*KFR91zPH0Tkdtsjgx zi*Y8>02L)zE!nX#R>QmkGne6iK9c>|bTn>kTeyw29!t2G*xDNLcU(D_Rf|7F+)79E>XA z{dt+ZQ&u~GjgaF*SwDF!BWSMPV!0(rTNs2anP1307b?C0l02s2g@8NS`>x_;G(}OWoUjQgEUaj$m`BIi{J5 zTBe$8nz`JWY923%u^f)$|E9Je4@e9OY}MF`u%+ZB22LO#uTnO^Ph_C{0DRNiD_BlZ z8B&GmC|Ju7)J0z|!M;U)F)l{PH*%oT>*6^1b%uOHqj3`*eNh*;GI;Fua(ltyUs4ry3GNx;KPfV)CdOak=Xp|tC7V*?VjL~Yai*tl-IJfcSE!>#H zlh^V{t6rkVl+z&namZZy-OS0zWpas})2A{d%+moy+sC`)xZ?513nfRk%J|f_GkF^` z@%a|3ew)c}Fl5@ijpIclT>FsIuSUtOft#2-1;U^1=r;n}sC$89gU$=}!*rsw(i*7l zrA3vR|OPT&pC8J)fU&fT*Sn~vvM%t}%X!O3rCN<42le14uYFoU;D5xw2y~p701$q+R`&1Sq*w%mjf90G^rh4Vl6nWaKu#^u z0V#)S*yk4sMMO{Cw>YW8reqtpKb9UaQh=QB>6#xi1BB_>kaH(WA9dDyCRjbqDQxiKS@K5&ISk zKVa9sTa`LBve zDJ!eP-Ot~~j1GM$eiiRtx{MhI>cbrqzxpr4P|nBD0ETYOKI9sWXqbw9ip^%FI2bZ` zym6mXdJSf*x_yi56q{zeqTErGpRmzw7vJr1ea7qkfzW z1~yv%hr3!a7pMZ$m_t&`jZDW96>=0Nf`zI)PgO+Zc2$2KIdg-&v-bC6xcCL8JO{nS zh?~_tRnpfPtPi4YfbMP1gWMbg^PGey_;<(3koPLwJG@C9@u{MZp&wW2B~DMhP93E0 zzyF`9U=WyLK(8|f=}mgD7g*;h`Wj-caxn6S65Om>{q*C!`+{#^7zcT;)8x+-8Q57O z_?jB{)T8<2_TST-e2*!gC;@%M29IXqgjG&jZ&U~9ZJ>GE|HG|A&k-U9X%n^%^XJ<0 z#C@D!LyCk+j9(CVOb%_<<#kL=#t<9IdqN7u3`eG9|ml)ah5(pIZb_uDc3L) zfbAQYdT{Uzl%1ho&BC~OZ-@x5KoS^B+136num*;#ij8E}YHUT=Qf!Ig2_17);7kIu z(+om}Rty<_y&>Sw$yN;jWFrA6kb*`i5uC{o`zbpo1Js|#638#Cu$nN;eR0`6k~b!l zWP~U1110rhJUJq9BTt&V6th7a9+hBv;&m1oiM+BVPek>Yimd}DTx~>P3Adnc2|A$w z#MJ$Rn214cAn-ENkJUz#D#mckfT5fFgEE;%4IqI4b@fVh8)w`3QW;)YSS1+JqF^gl zB7oipgtFW$H>H{*P33O9NNG}=gH1?Df*_}Z^dJHn;-=CBWglKEXjxouQm|Zg`XU;l zSr^M0Qj{xdCDKzXfO{~2$Cp6A2H;06p)@Lxq4St0aa^Uq%~gkzb0G81S3wO!lYwqD zDYXGRM&MB-pgm~#Dwsn!LS<)imK7uhwulq8H@TiNa8)hhK332|XuCW|-X^o{@C0e-2cXb1MG>}QZ!1w6c|ZJ*(EBromiF|NJ1JmbX#rpH0A9m;;Qv#G91-<; z+`vV^SdrhCr8xlPmg6dhlo~Ryhd>;|DhBX{2~jPYY^(_taUaBd9fGNWHNbd?_-|to zj_pGvSSAsSglJR699d%kpCA#nL$;};qbyVgXI`i?f{2GwfifGRvDjgv z%7eE#_j3lX>)<)9l0Z)G?RKLmMoxFEw}2S0BVVPBJs<&it=?M+Y5jbu6lz8w%t$~{ zx&v8#WRz0Mfa%aFr^d#AXxSBGW8+_NZ@0X!}l z&fM;ob)E8$F8A;8kh&{|OaxmpSjzb#?!hwF?DFjlA1~{u*_bErj)cI2m7GY+FUX>g z{2&uY%MB2RV#qQ3x|cB2u;G-14p4^?@Xtb7e9zQ>npeqCIz|5%bMFBy zM_K>>&(mgRXLo1&-o0(_-rh?pspJOI6OvF9Adt`!Kzda~I!Ff*=@3MEks=_SPz6+o zQtYCDf(imQiiO|nncW)$`u&~r{h$9i|NpsXX6{aX=9#B_%KP*F@FDXLO6K>h&xH1f zaG|N(D1wUwgb8Gn7=F`D|3&#d(Fw-|*NXIb_Z%;MitDdrs(Tp{1V6#D*(tAJ3_-+7 z!v#w#d070%txLu&Fv)rEi%qxXnmc(QJ3so=&YRdd9(9ldr^?OGzA`#s=SuG@pE`h* z1^Lmt^iw;}U}t~zHrIXXz?TdSn0ws$slA69-LXYw%LZnQ28_}SA#PoyXcW1JRjR0( zN8R}5Z*7*S@%~C8<^3m(IWFuAZb}4qBsBAbcjCWmkJoH9_ayu~5`Iv?;5P72_un=5 zk}OlPaeIR$YO#5MQ1##%mHfJDIPX(;$YgI)-jM6&Ca}hAq)*nh4*;ii)<4eh6v~nC zPjR`;w|I5VIphC!&TR}q_37k7Z;q?`FXhb5zPP>HIbQW%w$gj9{GX3sDoiRRXI)NS z8%i9N<|SF=YTHKctG?C^!p!sziXZ5$B9+%VNU^b78eyohc@r1|9V--bV();kG84b!Gx2(LPza+?9RMa@PaS}?;!3hdta!&dUQ(Q zKWAV5-(U3b?4jOC!VPlcqjI1dY*vsDsM~^{V6b+vO&KM9kB6EE$4=VQq@%08Gq&Tn zfa3pb(^YcwtA4cUB=f?if9?4XDs!&&GQBfa#Wa{6f2Zn4rc+bN+b4AJ=l?j|Huen` zQHqD(x3Owfs{wd#7DNReQHqXN$(UafzUO59!4tw3(WhC zb%xK8lf6Irzg5|O@Z-zg*Ec(*?BDz8TKy@>cylkS*hb}HyJ2?4QWXy}e-wptq&imy z?+EorvG7gXw8&XcXO}70OUbu{x;*CJ>#IXMU9*Ln7ED#saZ-RI_a!4#SFAIbJTmCd@D8?!knuFNJk z9ZBDu?P%J1n+3AzS?-)?nDqVd$!t^%0w{^neHK^8PS1+JXa0Sye|omV z7dQEBxBA2Z+9z&y?80nc`^=|w`303$_FZg^48;E;$dULWJNly?!|{*AGpeE+E+m<3 z@)w&`-JituUL~G(``3H+`r+E?H_EHM$}MAKUypyQ9UyB>t2Rh(O?=PE*pA(kuz03$ zWpr5^+pY;rx+T6i)=Inh?y1Nh$j)1kg$Ap=a?J_K`vh+o&EW(Uek4mDOKclacT~p( zORA$r_5p1^lJRFuT=e4p$oV4-tN)(p=roN{_deftn^#2Ii|676vUk^wn^%?8A03ZZ znpEFJ)%8dsdm&k@{dh$1kEP+aM;=tH#*W-#a~0bo84TTad!MN7NRXS+?ts;ydWQXx z;HGEGO*^V**aJUtMMNw4cd3tnBurivBR{|dd5=UFNHMD1>3KW*9|qoG*^fo+Vdb5n z@>7^h{v_(^^HYd`;^pe|(}ON~wQTvm$WIA-fQNrI&}K~6w~XsoPh`OOqm%NuAegJJC@Ry2sjps4sV}Z_obQlnPK+Yl=CNT|NyZl+_~aq>u`2q4eA{L&D*Y<{-x3km z7fpWB!<}Q#>q5lz)fSum|2h6oBmekn(x(4*<E`>`CLxr zw-H{(kdjj7RCX{E!^6{82uVuw9Z|SKjC6=_aR2e?ahMIq#m1M%B`4-+YEtJ#UicIG zrnOJa&%luz{Z3E)uGp%bp5lve*8DmC*1;SIv*tC<6${2r@#l8VY1=xv1b_F~O%|Uj zw#!5X98iA|+g4Tz*-vSQ)kk7QCEJi`kYZKeuJ(*S39;*%j2w=R-Y8eE-BeQzYlD3r z7W>wry7}w8ef@RezNK{&vHqHUY-0 zVy<3>|ul2a7d(3(zu2#3o^$<-Y?v_B4l$y*-)Ugd%TCFON0a|6?z;wFSGE+975tf;z z@xACWsRYypKlP~3x?VQl@291Dz^}XCR}cBYgLYkziHCjjkZ&GDL$sc;q`k5;=tG^8 zBOi+pd+pD7r9cj4RV~H|AG3Uk{)9OtGPM>dhY!hWnZNY5J64s|-+O=xsQa~g zp}bU?`Tp;v$Dtuu8{PsIgDu25MJ9t^sAFqw7OhsZ7MBPV*n$spYTY^gt$b;3QJ zX;6#UBxlTeDhOk-SPgZwI6@scbtENXPnKjTQ@C=ZgBDgdoN>Yx&K2nIo|~sfazYFK z2Fpcp$hXD81t)}!9dc7y^iu{aHs(OGEU5zev~5Fk!27g7-%_cfeZU~eV`Lt- za2{g4+4Z*)1I>@m+s?5RUJ=*s&!g^i2@qq!A=}c((gzPZ z;iba4T3QxH)Eh?3v?7JGMX0T%MNoyq_M`B{UAw;wcjq8!>>x-#T`X&HLQ;M`Bk}MN zKxd0T=$Vk>XKD>@u>dGj?FG$pEpAcvLvs$2%?Xcke#M;$(r4HtT-`o#9#5nnfloJk(*B&~dvgV(|N8>4OAdaxLE z*9y|Rq*Cr3LS4u2@OmNd6zXmfeoG|p7D*59@gy8jv<2xZW4d$_@tT!P1jz~Te-G*eNgaiv`qrK)Md(FRu{K#H&rc|HUYxsSJ zRA)+ahD@GGL;A0ewrYdt)ls>lKNYijoh!Ur8^G6fx72jLg{j|W}PgM#H9%X*xDc?7!S zA?>by;$HHJ(kL4-t+1zF)0BeI!zj-+3=$@?3ARQ3u|639X5x&!?cM9KOVawHBMYL` zH=`FsZ}BWt?xehk2aUj@tDe|`^fGCCt*w%aYgN*$PZ9P;&H7f`UgUm)jtW?Cy|5U; zXOvyPt6_`vKaM$P2BkDDBJeVatOvXYK@h8mhhvIX7+C*3-rQExL zcN?_^^Kp)s&8iICG06g2rfhmL-JmV{-xZ~A$AZ?e?c836A5e3K2+O1$E%Y> z@I`fO;};dULE3#>Au6aa+|&Nb?WfkthXvR0Bk9gI$>q_td#E)WK3E+V9H+P1Sg2)F_b z!tAWbQKMF6(ux!W_KCUZE$qG12O~kBAb>|vUVA8b%-(Yvpeh#6q9bL#5^-G2DdbB-I(y!4m$lZe7m+?kXB|UCEHI}Dq zSdfIRy+$+DZ}Mz*l)XW|D?ptJ<`6|nvL^iRiJ$~1qdOMIpqup5UXt`tA(9J89*}9O zL;Y$IV02Z;V)4Y{xSNQ_lVqS_Og-4~4|d*4Fdgy%nERXKR+qx*ACGyhfB@Y@_5VhO z9dgN+sONTk(rvV)kxS+97LNZ*cma|Fwkf_Dgl~~@Y-|^p3&hIf5_YB)VBK!@kNmP z2GHdQ4eLNVIFX;w@%MF3N!d6_z|?jEvMCCw=rTrB_SEZT7LN2L(&)%BHJP#G_~&Tn z+!SppYK;ItWstA~CEI{JskL9UG@ajCE^>e9`ag2jkKF~|K`_H=jqs=%Wx770h81xY zkcTrH_!_z!WX<%faB>h29p_`*5RMb-PY@R0va+p`3&>qgxzmf0N;*<$=bITTlYk(S z3BN;k=2F#HI1-vB`c;+@jzpos$jV{9!db$(B-{RI3cPV5d3Orqx*ZGc8}C;A5<8#| zv!`9R!XjzO{5Fu3Edq4hAs@Bh5yi4a{zW=h<+?#hUL=53U{bplC{d|m>I0xQdB5~< zwq--MaXh)J8ug#k_;CK1mcL7z-!o~$bq_q#PUvHQ>by++f=o3v27Oa1D_Xdj6;Z)l zd8w|JZ1*TA>4^}7@ZTTn{3}<{F}ys%Il0#Jb9vv+`)&xR3u8{51wb)!rDV2QRnV5)Hu4?1b>zw6 z!-=nFM8aE9XGM`@+bd}^N=C+ac!R=w8SnK>_y!y$-YpqC3_{fG9mx2}#v3z<+y7&4 z{Wmk=k89(t5S9yf zs+sNfm~BYz;vvm*S+l-C$%`dqB{rR4t2h;u0qvuXFWRP3qzm+51_}tE^t0XONs@0A(cKuO%GTyw(Zg76%2li zaFyC z#05mQSk`grUFE7P!Ta(kRJPzMH$bn=9vRzP?G@Z$)Qx80=YfSZfF${eQQtKFM4-X! z$dPyst2LTLQkPtFp6lHd;-;jx9CCB(7?Z)--J8$POt$CMuGO(+ zLkvf%>o`w%AYm^i*}Oea((kzPS}BgTgjr0w(X6)u>6ED%;(8^z6&_(v1bf9qVqILg z2Qz^Un$|GJylyA0g~>Ybc2{B!Vh}(b=2<}>+Gqnya;tkC5>oK+fQLV#oS%vkQ)m#(%$=0Q=#G#c!$&@B(XceG7$#0`1&!43K&G}dK<(Z(I|CEb+8(Wew@mX z1#+b1g0=UuQ6ndJ?laN_20JS!VhgnWGJ`oD{jsn+Jy*k}K7?6u5H4 zQNl13<*FuDVhHdXlB6kQA~Sh|%ed7G{QBnlRAR@Py7MPp({=P|0v$&@FLb}x%UD%Y zd;SUTPLJ%#$LwQ?v$V0ePC$mj@1dgU$s}$Y?7&kVHpJ;R$so}TOapE|>Lw&Q$L6?w zEJC@4`hNb;QgQ4f(!qQ~tT*CnEQ`_RQZL%fiPj_0y7hlp$JdiuEqKfq>u9fo@+-=@ zM$e|dxJ~AC0a65oC?wmJo?h=~O&D6)FAdx|Pn8kI;=5a_uJq^PekO=b^d|tv_b221 z-J8xwYSDB>8AGjw@sVxpQb_3?O)4jqnl>&xTniuk5({c7Cn@e3|^ z*%^&~W#(|$(>}c|*4ENC*tTVSdxkoTYybiojfb;!EBcpQAE+oxCe}K62e`+_e7TMe zIVgA`+VVVF@vXK!7g)Yx|LI|AWXZ1XaDwZ!^D9%K-vvH1d6R4{wk?j-%$><3+S)R} zJd=VG(?y8tb?rLW+FotWA6hF9xO-$_q9?WjFH81G#^Nk(w5T@naM%`a6j7S3_hqyx zMeBcU{$tW+2X5p5P4u;AR`En!&2k(@~C{6X%4`J<9Yf_l-#-BY{OuQjI%e-X@M$Im|@szF90zI$=( zi*KVw^Rwg(>TIsuDYYXr0h2^v<|izf=@GzA0J-U7y!kyLi3=2FYXIf8^?+3gY5cWz zbF{aAem}WZ1?>kD-jF&zL})OH!gi@`3-Q=mxySsqO4-ks(`K$&!gv)LlqpRNMecKQ z_lDhojs~rJ$s|xLEQ-@>-tO)ulA&P9iX|%v?F&pNnZ{8RC2cO9xBJ8;{wgEl9?m5Wy^F{YDT69H6{vmuxf`2*w2%LL;<)for~~t!nGp zwI6Ho>I@dra6{7nPEtLS3?5CY4atQMC;devKsh(5&PpngXx7hp@--7XC#lX&2GM#U z4$qrB2>>~1q8<8YX8i458nX2hlN~1|b0;R%Ny+AjGJNQhgzP6}2s3)Z3$C|p_~&^x zQ+%ke!oGVZ9&yTL#nOeM9XwGEd*PS?VIj$+vFPw=v=~pmQRQ_IeWLtkPy0h239TdX z_hxK|h`;AzA!3t^){X0l{Cqst&CuB*E7l&2+EB-sMIU7BkkV3R5Zqy^dwd)InJ6Od zhV~o=aQlUb#^KCz5GGTFL~der7J1W7y%fA#A1c?%bA;Gd7h*)25)t{5{=|kvj^AuO z`4b^ekgVC?Hn!f@DPJZMsrYrSGjSE=0xITrWm2US{K@f#psrYUO^_j%IaHi2>41F1 zjA*6>Ew<5R@|vJ0#3sb1m@OLT86tA6I{g<{EVi9v4~^JWaB%Mh;u$M$Vp7jA*Ba1tf?9X8aNrJkv zI7iOvOZI}~?r3ksxMkl0KWk+5n#FrgKvbUUeLh$%=8~=KXgOaFTIN%WqI;gAV==BH zT>FwFOOLgSZsPK~=ydvG+BikT0r2z_MLY7A6!^g$i3!>@1XuW#_k| zE!+b7R{ADdQ)s7sG!ElK)9$`z!u5G|bv}3^ub#{=rvE)0$|pk$H~5(udJ2Km_Gmp1 z%kzA>#4PT7C@j4h)`VSxdn5POT-x_sb)Ix{Hm6UC(cvMC7S}K!(m|?Nw#CA_x^O>= zA<~FdBDKAfuEMNIY|n@8dK(h@-735CwDlz2D&MFJbezIa@hRh6BD?U#`w8Q2uai23 zMK9Z>I{hxyo+>wJOelDqbh?npV|w-66f~N#x{12(l~CM<)jQZ)<{~RwGSQ0{Et79x z-osZxn9#x;GPaH2S zdBi&nCOhNxwXfU8_u2|0Ll>(1GMqMavrPjC9NkPJ_qL>Ap9|T!di$47<^&|$+8?_Yt*+64#eIlW#1lza1R_#aipUAjV-YA?ODx0h|i;o?3h)64> z9oxv-uo^T|ls;Q>n-6#nNSlJq=o_xtsE~Mzs{<#%vh)^Z+(G6EV8$>=eNWj;aci@R zTgyyFizHt(UWs>dcRMIdK~p=Vrn$9>R_2Q?l#u92-SYGDUUV~Clab&xK&@>QWF=7) zDIS$zgE%pYpVd*cC>F#4mUEO&iLxFD&ybmNadKVYydq2A)ZVFX=`?rfRJZ&_eBkwX z`L*J}0fB5Iki4Vz*Cz*3J>T$BH>Jy`#|C~AYq*Gnk6)AJ-OFnxf4)}W>D2!K^>3H^ zB_5{f{Bx@iyG47fN=zl$Fjo(IizoMzk4f=Ip^qRqZ)oUB>uh z6})%S0mUF$jtSmMBi&qv!fb;#Z92de4A5H6rBVYiS0G z7|V3{;69#_@sZuxUyX1AGmRHLLCz%vi^Zm)AIW3nO^K5)40ad&h|9vvIp z{MdyewM-Am!A;9#(-G{fcPZU25=WRrJEi|kVQ%NTemQWfNcNine~+ltR|`2)%`stc z3$uOVo7U?N4QSdFZ?S^%B_jK6k+@F;_aMy0?iC1g2&%I0Q@0=v?j}L-Wh@>>>%&yh ze1Uh0`QfHD)+rI<;FpQ3guGPbFB2&ugA^fwFa(t;s64rK_^ajQieMwTf#Q{%VkxL`F=^1i1;X`8)^CZR4ScLjRWClrKR%;@i zN6L9x4&k`K$%{&pOf<@p$-DhX1yWW_GQjCep^RP?%cfJ-Y|)A(xZ1^A5KBs^B$MRL z79`ll=b*(OshidQ?ukMY>k{MKA+)S1y!MMsD8a}a=8_ng6aR4Mc~yU@5LbYTwz8c_ zHN>tE*~>-jlCk{n+f_TpC?XTclX^|iP`wnGnDUTwWU0qSd&j-W3QyklCi38x8`m_g zo>lEtv!V$GM>|*nxyV|mtLMn@4soiw-6m9-db`Lvr$d*N)`N)KNrqZ5EJy~l2<*H3 z6`5$_<6-3=JJyaMoF*G%QY8yvJX@VfpHPI2@#bsgo02;+V{7$ZFd{my}bS8-wP&RJK47*vJ^HgEz$pj z)R2{FtOSD|w%)>LtjJPykeC_4hjdwOg%FVLuCgyRAw^Ui-Smj^9#*h0FxNUxK@T}j z^$1RZ{ua`ew`3}{qEDvicpzOnigU zA!<6$TL28A@N_*6jbbc62nU;~ZJUB|EDzu2xemutFf!kT8^x8IGRRMHnx-QdG*GPR z6l;pJL3YaGB@_xDN;Y;WbFd~6QaJO~+Uj6MGpSxhy!xv!JvMw$MGj9n|!7h6Jb z-u<^C@h(?HiDmx%zFoY?2C`>IdNT<#hMXo?6Bz!qIE*I@VKD+kO8E7oY5RoxMB*{7h+YhMb+3J~nR;GSyWJ5P5eG}SN8qk-rt)fb zytCOQY~GS;evoQzwV|kXf3>N0Dbx(yfQ=OD3sIpiQ~fdn`n#H<lJ^nuu{MgKhwnnOtO{*@a2}{hTX5Y#rL#oX)d2Ezw^DJS$ppT)^U#!e! zD*ZJTyGW(aP^mK^dPpCU_)@F$OMCt?wbQ?7h-W2QRhk==xml&JQ?ct+`cjp;%$~n@ z;=tB_zvcc>J9`gbQl_rC-8A?rdpe2YwY80iL+v( zey8mP9e0Yo1T4W1&TtKjm2Ug5|MmWtqgA%6e_zok=Q9B;U|GzZX8*U#qW{PL_c4_X z)cCV3pVnu&v_8wPHEaUsG}Zep>DAf96Q5$%`gE#^o=>Hk=-rfRqM3XUpUyGS_dn#A z(5bW4{IkHB(()FZVYjEN#b1VpD|MQhf2#d`ike@`C9&xLi(C?kH{{l@W7tZ(CTIT| zlx^ZymVgqTuwTmAzp%d}a!R%lRVCXW%Xv1JL?WWGgm3I6IosxvNJJEuY$L);w$ICX z-_Iq$`{r#ucVNNn`F)FKFYI43dvV{=+1vCjpS`SayLsF8?=XA&!JTIB z*tc@_ioRWD@7%X)-mX&}Kk1B5I=*ryD`$#wj^TgTIo5TKbD3n9?}12mG)sP2-U-i_ zgk%uJfgyr`WC%P(n5>p!2rErB=dESl3NnPJL`K{%;Bs)S z&9#Y5Rf&Tk~NQQdD-jbdp-?Psg-5`)w>o7q+ zjkV4`tCgVp2*vOP3Wn3HBrO1L$R}Q zGWlU@h!C0^6}VrxqwvzkT>ZSjga>@@d+f;S@Fybw!zz$h$}dzaWT_r!Sx58wc*iM5 zK@|Wlk$j>^h4Da_!lhPYv|ttuuG$tu!ciCjl`7ysKmypS4RQB>+Wa)8^XM2#({U89 zFx>9s+lw0aMy`-c#ZZk?>BY`c1p5&^&P>jY<5sP)j&xnBlta167{6yQ_~!c5SntaS&j^(Rxe8?h>Xj zJOrWK$8m7bP#v!Du>2386Sz!$TZ-;Y1sF#GX3rXM@~bGos#rOoyw{8sVymbSv*oCE z-DTcF3ehIrh3Td4Hs!%`Pkxs{nO}_}Z)@QjvZ~|{LTz_|K0vX%R*doTz_DTkQ89X= zVw5p@=b3#6tb*IIdc?`^?wkoUsyK$2?PZcj+#oKbikO{?B3nItRc$LlZrq?=wV7A9 zh}QMddgN8YNb>XC0X*n=(+7u!!Wb*vZuc2s#*W?YHI$I`_i6bpZMF#C*5(PF zcv7o3scrD0#oTt@4b^V!!ew=t*6F|xc4Nf*ZD8}6k zkzG_7x9chq-8Y2(oVtK8c+8qsEnY6Mst`EQ$xV!+Jy|rL=mQwk1GJn(iD+`&-ZLT? z7n|YampBhetJj{7MdCc09CO!bJzyaQZNs@%!uHyEt)BeCM$FdA$y{-2WO{p8^2;KG_M>yes^;dcU1Kl?iL<9vW&-ns=%wGb7r zM=V6iz%JOK_SzihtjdIK6D%fDF`ku5CWE$dXYGow#)7*7-G4LtpAmJrg+tjJD35T z!+LRhTF^3BjjFrK$`EY;i_4L1gCWqSVVxg2iZ+V-s*2I=>IES-igdI-AX?XLwx_y3 z6YZH0t+#!Fs!x1i9s0LPZhRV}83fN+3Tbt5jE+8;*29Dkb8wgm0jTPxOtI81V{?Me z{S!G2CR>$R8iLr%#EU0>NLNV8qT2=EQf6TS4C!RzrAj)}o5^G!6yR^+W}4_6G{J z|2B#3hGJW5@~^#5tegLUXq}7JM~?kJ!AYDM6LaP6&b@f!D?Si%tcw=)kWcJ`KgEqO zA50Ax#4JzZJa356e4g*MRC>a0HRPAF4gP9>iHm0H7jOVAR!b80e}Jgaux;xvk1bO> zg+UI`Zk861DaSJ-pVJ3qxucI+7~{PsWs}8{Q9;CL^9NOi?$1@JC2##w zcI^4U!SYZzDkzQ^ex}{+Ab3Z0 zrmJ@n1Aeb}8Ie||WI+`P8?{8|PyYpV8{dKseH*7jxO#I5!yJZ%&tZuhu~nQ?7YfaP z0~npS0Ybsq)*Cl{88@9vXA$rsF2FxA&-sTTl`LT&;d#bfWW?7@!u2mOpp7y2;3mDn z$Q#X&y?YCejWn3%dbNXnf>Ab^`dk{BRrwb%O3cGzyFotZJ}SiqIT)?m9|Z)F*bALH z#l$1sve*qotyiO`SzQbY2g7&tb%9eOV2VReztJ7;@^N>kJM(|wMP<^+KgiT?r2MTc zzs=_y(8UILhAuX_%ZzuaF_#&0mNDmAt1omez4&&eY`o45uEz>ovC4HiNM=KGzw18$ zd4%jUy@Zsxswp-J2`CVE!X{Doo>uP?BX1*z>fYAs4?26Z@pR%TH~Eqqyy)g$aYKFR zw%gfHYi-GoM_7HRD#1`i-*$g&zIO-IwKZU`CY0x3TGfOAH+|5{l8xmE+73YIP#1|M&XevE=MEOjX8u+Au7JAyZWV2g zjn-H4W1^Gz$Q?-y_m6ZB_YQ@4Fd7E4L$SeNC^2Y;(t~#h=UmUaVQ9t>c8C5vvS`HQ zA|j=Id~#5I?I%-dvWfEFUL~0WdjJmzrX3(3bm*8ng=UVOGEtAiux++iuU3J&lG#bw z(a8izX`6^1=@Pqa0&8P^e3GSrB|P$EFLfH914Mk)*f^a)2*RuY(&M6<7V)T*VH+& z+TFf@6fln2{$m?W^sMH)Q0=?Pdjv4{L*+>f5e7m+ERb6muBc%6Ad_%fp6ol$M=p>a zB7jt{8xlIyU?6yakr1MHf~lxGOCz<>jcBCyh}ILL^~_h*OebM^n1DC%{+;5`sA&^! z5qL3Rq&@E5#m2&=647RcbD6*5WV87!c(tc4^){OaW6}KGdAfK4ap+2&G z&$@}%d0SrPG2Pqdd#hg+1b!*?3VDO|d`yV##Do>!Dlro0oKa+a`4uCW!teo&&9iAb zIIl><^x)8?&3Zo;K~HRNMqqeFw}jFbdvgCQe>CGHmO794OYL`&AW4uhZ753$aNXTx zguR|c7T=RMt9PY%PySd(o4ulS|GRRM9W9cz(V`;eZyGIv*!`Y!VKB^a;TO||{I}fX zLm*P+x7^ej3W!PNZkL*qvA_Dc4}D84`=M`s=Lc{5mQZc>PI{ZB%+M-=xVKSTso62a zBbilosjbWeMsi-Vgd6~KQJpHqWow8AlQs++nR;*nJ*FE*0+;y_Ag{P32Jr6ZK9Sn$ zPriEJ_a2I=Z^!J=k^Ql+e&qYt5;cau?Z^^)s1?pkjtqyhQU>U1nS|+uq~1GJLlA(_;;V`nm^WF_&48h}8OfWAw@E zVl8*EC3YMS7opcQRxKMIi>YT~{+)o0Hf^6qIb161EAh~8g)F#&pR=_=d%U8H6Eqtb z9g3}C*{d^MjoEZ7O}mxq%oEvRQt(|gCkoV(6{n`*o4P|#o7ZRrt3Rk}y+Rb$h0gPV zFxLuy4pp1>SL%OCntDfy3&-iST!omwfhvAq$z7T0T99UuqxopjLY1H;t|FKW@T_xR zSf-Iw@Z}}kbUcdKvM#3z!dw*Cw;e7c_LlXbjMH~OGjY3h*kz;jwA+d4OZ;9s&xPGY z1jOY;;4U4gg$7G)#m(h_Qd(42W?pq5yG&Mt`u5em66le~?q+moOPfGQ%5od+7(bpq zcC_L)Or8F#pT8h77=zA48Se_I0-WCM6<{OAzUNC7k#2Lj<_e#*T- z#J?hP*NWJWL;*qFHu$S*RDCDg0HSsJ>q2g4_VQoS9>*s^5ONwHp!VEoZsfTq*^JS^ z)#OK_S-6wW4ojE$Y%df zjQ;cKW71)*sRCV+#->*>o+>{Gf zx1Wre(2g@E=xZZHVnTgekJpnNm+SE+9Yc6ZH&z*Z=U~`l9t=`Ye(02|00a{567UYo=qOP!iv>v)$OmI4e3#}kHI~Z8Hiwm1`<)H#O>70h)e|$<+T&>n-|Kt1p zovAKT74JsoPu-IoS~}tn)6xcP2eI5E#^zAVPwkT3etX<+*l-D&*7v%{KnSOBA8Cl^RlZVhB(-C$7 z+n4G6TOXfw604m@==c! zc79J#(nNdG)asFN7>KQ}-r^M}lgqtQ>hUI*CJjw44-O2K{mJ|M7r5bn zfD8WvP&jH`@PK-Cx)OQmozALPzT0VN+`DP7S+tflD{;7&S67_VF!)$wo=QxL2d2eF zBUrua*s8ACqSskVUU8#(PraZZ(|RQyZT5`Tb6-%s&cH){I45~@=qK;+oTe?^dOa$$ zS=Hqa`YFGZuY*r32u0JP$}$tPlt&;{XH8U|KhU^!ILDo@7O43?z}T(@!F;ozZZ2?k zhMRio1rFQ}zuhdD+HFLVP^IZyJhhX39c}&ofZs~w`vM#Cj;zL?C0=&7AC}X$QA_Yz zeptO|Pl$2C88w27eQ=S>ze-8O(>cQPgHxrv%hG=^s;0n|gVrvo_tTE^kT2)p)$;{4 zJ3uT-mv%0&$i*gxMU+ax?76=)Z6ffFz6mgljuo83%9r6MDE76U?TCWHf4OSH}UWg8K}C;{SQ3lx#7h1|yD(12bfFOPFA4e)SBy3O(z#j?1w{B7Y73ChiRr2M?iosz0`)H!_lB1)3=P1QPT z31xnr7-x;v%ugRzaeNm7-D`1{KjeXzCeIl$Ik^V1xPY3qvK-O;nK)#(s7Bppo+|-{ z^vGdC>bC1{aVx2*!8Cs=HPH$h22Kt|3^Zm7R3wm1JJf9tk(Oudrrq#5W7Fih@qv*NN+N!AMpIg@0+3r51Qkg3LB&}t!qOU+_q~?LW zQN4TGpjia#QLhdQxx(NN=TB7egubW*53u2uG+jQsMCOYaJ8Za|Rqdsz&MencsTF7W zOVW8jR=};(VNS4hN~3W7L_;dC;+DVI zwmRadBLB`780qT8cv=F69SD+!^3GwlRa`AjQ|oO&P-Z>omm&KFIzeCx6tBNaVl66C z{Z_cYK|3)}4gq@sDRBXCToWJqwK8vk#glAbQz@6MeEK5sj>@9LZ&7{t?bg>5qe+WW}=Dv&Z>Zg z0dbZss%It;;Qu4R$k<6V+69Uj6UzI%@JI-c86M zkObc1bW`~kp}NM=51F85$C8=Z?c zB!n_3s{Y-bTXA%&tA)Fs)`GKcOdZ*|DyJ=HB4-LH>;3G#U29JS@4D8KlMKzHBaU|- z$I;#MxN3b&MT|psc>G-T+Syn|B7PERQ{)%%2}I}HR`B4aRxqJjjJ~K91m-5?{MeS~ z2>0-c2>vR(e+ltV5u8A*G;vpcK8RVi^S8iFxBX0-*N8EfFU$BV#8Fop#G9PRJ~!Qx z9W$K%e5?*FI|(YBkpb##u`vh5a&gM zc+!sKnd5o&Mq2Juil}o7Vnx-L=5%SkEW6#@-$dJ=g*kze@sa;5{Ew*%+f+Y6FbgwT zTbZ_}JUCXW$04pJcFoD^?}`fEY3CO=-Ro~F;9dcBqN$J*hO zV%5`7DAmJI`-!X7->RE!*CRd-J?J`52WzDGwTZo9bB&nan@O0$vEU>;DE!0zU8eFlGq1HjD={(?zw`7K7R{l5vwwu>sBY3ee?o(qm;|!f#z&s zr#f2z)f6;FLo2vp1J68DIM>7n?5ItH&Hpn9Pk;qB z_$2U8ATGP!EfQscZNRq8$7(!46X9bUkqfIPgB0SQwcmwID8ArkGN^R4h)P{c)|t4{ z8L+t1qOw+ksK#ekC8Q?ZUzLyM*e^AcFV(zyf-`YhOR|CulZLCtd*e_QwMXK_i$q{$ zloixFn|kXDx7gYNRFN6Z&GzIruQfXPa*@0uI{5*+m%xx{@7G20nrN?W?!TeA&xBS^ zIV%TbI1rHhEJZ`~d&;dCNZd?Yx~>@@T1>Y_AsB?Dk_IO=uIAi)O%P?Wv})Jf7I7~F zyUvj?VASKYWYkD8YwqQqfei&)?h7We-%gCytY6on3hbNshAe8rM@&=2x_hC z78|QPQ*=UgP;F*IdJ@wnC7Vi5S}uPo=s4nRN(H{)B{X4mJe3-a- z$gW15=a>hKJVw>|snbL%8aaqIcoy;9{hm-y*zMCIjmq&7LxFlxxNnOf*Om`*74l$6 z?;>03_yyKqV{NmHkOux0GzC9E=u^bMz?OpT@iq}ZE*d3V40t{A8C=!Tn76z-WDL;k zN#y`Mjx1FWBXFvP-NM-aQ*@K3NOrc_u#{$4g0fzG=1r`3`y_Rq^={XlCkl@LuyRgN z)`3D;rWN&q=R~tgcq$RNIlRL*(L%=Nrn1s0EU7Ieiw&_ob2?Gx$XHb|XJu8^+EVT> zHwwTl5gMVWUYC}wW;&OCNc#-eoGxIWA!yLK%Yr*G@QV*b;$!gb4LZowW}~@)xjL#7 z(G1L&?6t^_Yv}M(8F9%fh|%Tcs?p_DdAl`6CdbxTORN9KZ?_>j-3vxNmX{8Q1|aaCfp2`!kG9ztw3I4Ai^L0Rn%sKA+KRYLrJD_4?Z`); zFBe`Y;$dUT3%@1fux(ar<0#s!ou0lTDZc$@QMLWH$!VyY^ww_3uNqBDK!}B#Zowl{ES;5GZWC2gQCcYYQeIZF@*xAOl20EQcCU8;* za#y`?Vn6TD`dw4US_F~>Q2fqLk63uX)bz6JUhu5+(vXTs$VSub@Gs#X63s4hLo zG0~ezrx{v`6WgU$)nuHmv9{Ae53>WEZ7eS{&FPW51<C5Rd-QOp)8}C7` z%s^XUkVN2&5kcuVj|!c&p`MR$VK}l6*TsirL{$`nEqM)jTXv#DFjbE=-|izDoh(=sgK9L0c`|IrwSS}yu__iGmGc+ z&5?8$K&BNaXoSry9Fb`T(IT-|BevIk$Ht<>Rs%hVwqng2c88^pJ5{W4wRs zWLs)hupk!Nl$!MWa!{Acw9F@D|+$*btz5?M{A223Sd{ zWlRMM65uA|6-f-sNTIv&+7s(aj8gI=8Nw+KaYWoJK*kf>qxNmjHr0>1TrQE*)U6Ws znQmgmIogb^<1|Zy_b58kg*LphhnHN$OOlr*^wv6i3TME|I3qKt;XGW#dmi8%2mY=E z{!Rvk{1}7rj#W9Q%mkWocIj-bv~@Zq3`#eO%5@^Js5~owE~Fe(W*PB0W%qUB{ONT1 zHa`#fc|3|)ivL*iLFrn`$dHU#p>ASot7r_6+F|024= zS)kkXk_mQim9UU|!j8+neMc|1dXDwH9mTNYGXtY_fH>nHYe>A%Mx5J!(8x=2yV{TQ z4L)lG-=m2y05l7+p`cFVF9z&iGgTcA#wQC@Pk=hcM9#~3KVjm!e|7D1Bp_z23&aO z3RZ?cJMv!G@nk=Y0$g5IoNRVo%GrmVu*gWWEfz^Hnp{)z66GAw<7Bf{^~QeVM($&0 z>=VTM;&{}PHCBZ0wX5{;p>xpTm;t*77Y^04tZ^DjB&Dz-L=5_daIIP0oCtPUxNZG* z3wJ9ST&zh@WVSdD*`kcHY-d#jT96!vQ`RCzc4awKwOhE^;Y=9a4B_=O)HTjg@y$%F z?f)xN>$8$R^B;CrV|QLHPnMDI?H?lAJjABgnf4Fk>_SXb)Oc>d=EZOk!>)*RiDYM& zil7a*@9^gBhX13#f-a}$Q9GOGMt5d(m2EY;T_B+-s- zZr3irqmLP9S_->e%9*zJf0&a2t9;g&3^*FYnEg;$G1-yl3TK+?Z3a)Ef)y1IF%seq za5k5vk=ia#t1Hr>hWO2f>w8H?Ry2*9bm_qqwrDPOz^P$6RT$+;wt8w~Da>lr$@x}1 zY$IwBN1E=7ZUG*EIN>m65NxUz8kg|FBF>f;0B<=ti+8r~ov*(0j(R&eDo>0Wn+;SO zG!WqOkeA%m)*Cb9w?yHKfjY0#?~a9i0qeWlYu`9qs%_zDn8F(b^U(pCSiNmgVH+{cG0Z{}zEc7LjSAFehzV z+M=k;vB*qX?5UPqzZZ*rbs1tnvP2V+FX&&0z$@!tOoQZzudkYCGL;&wf5)ruaK&vqWd3XGCZ3 zg5k|mefI1b>PwcFA{ae-R)-_6i%yi0KZ%!~k1gD@nBF`A&J#8NOlFX(#lk~G6UD+; zrnh7(L@o|vkI;FO8zCz6TA@MI-X+YPs7le;KgtwCtmzimf!H$~`RL&lu#?lI;oJy@ z+HTVI+3N=#-F-I`xxPo~hm?6x4OZ_kojWjXjN=aMX$GW+2uvylx;-I^I^A0hac%As zot~;Vy7^pKQ@ukgcEX9GTzPIY5mELaLDcGQbDk3CtE)+WNCNPW#4gP{-!Jpib5|N? zXeTTT9z#qqk@UK-ZMck<=zq;WfuGY)n^b>l9j!JAS_9R7bb0}PRoUF04J}kHloQ+{ z*2=ypi0uG3nKA*EOHoLlKyM@k8rcgwYpA2wtb`iFpSUk!sV#K(pGri*)o5*5)Y-18 z>b?_1Z);KAi0GXd^Ap=M4#P6Ilu>~GYceVBHKcpw4-g(dLSYd1OLD;R7RST^sS{Kz z;*Lx^I?dRhrd^yMK91}v6RLK=vg5ujIgw%5#e$(pX^z#)AZNETfbp`t3X%#O_XWC$ zYz;cJ@Lk*`u}phSLb*uNc^j)u>kw*foH`714F^jUqVJZv@dh!Eq0_ zX#62N=w&U5(+uZc^q>OX`35F76Z#CBq8`jmlDu*Sg#cF ze?Ay6o#igz9}1sEs~j~D&tZ^8dL^bM{;ZVG%i#Oc{h>_$K+0ES-OG|@n?x%4rA+=J z%8PCZd}GXqG1LbfRvHxuN+ly1;jj;=I4&~T1X7t8Vti;W=5FZd+2>({wiLqf%(1S} z34?eX$4ojF=Pv-;1s#4rid!TUScS>OogjCXr)klq_b?o>3eOYlJz1i&qK)%Kpa3Bl z#R^Pz;q@a^28I<(87Gq>j?JAIHkLZ>g>k|M+mQgRoK7G}0@VVWS+Wj~TOl|_n047L z%?ezXR|vgZ&`8Galt;Q}jR1)X!s}9COkaAI+=@MUxVjSVpc(=y*W|YPZ5SwVoxzDg zE>j|hVC*;h+h83R`wN)?x{%6{gQyUg>g$SRJAqdjPFn7qU!ixAO#GZRLck~hRU%lZ zV1Bo$t>qlmXsgejnR-!3$S+w#w3DR5fl=A&juM^8q-Epcm-Ur4+0v>sEGzuQY&FMK z$!6|XCH7Av{_*#7chN;t=SU6@t&n`HKodp8t`myz0#dRziZ<9`+XpZ_v-Sp77C zSZL)mi+C4<`b@2kLA$?2RlOB$avl@k_hNj9HCv))U1;^K%&ucQ63PyYC=s)OvVUh+Zz3f&;TNbuJy zc$dhQx&c^D&b=sN3 znn^s{8KMicWH&o6kL^_gd(O};b!lg{OL^z`TBFjQn@u;ve@vOUPdwgW>gCRAC%L0q zE|;k_Xrf4sd?j~XjAtI;X43JX4A)N4!b#igXVF2jNcx4im&}BVcd1tLO+ItqK|qsf zIbbc`#tg|^zneT=3NR37)0;PpuTS0MpZzmI*>`~};qktiU4*U5j_gmACxj^FC0Pju@kaE1h# znKJl*VV|bK6@O-aw@G>NbpXwvXn1gbClbFO1B5-Nsv_%7wD%UvwP>1H8#9E9CQXN3 zLU>lBG64}cHY1F=jYb1?B@M;GtRa3!=4&DbWF4`yK5`=bCEOg}&c4gq9Jd!UjUBta zd?q*Bx!TJUk%Ti;Kme`ow%j_&2cTfY-JH3Xc_PTPI?htYIuN~zf05pBWKSh!8iS1; z0|BIq*;L%}3&pZ_$DLekDHMuLg;~x6UbFT>pS~sU*DX)#!t1)}EyTK@(B?SHX}_MT zV{L5nx5m{Qd5g&iE(L}lp>Z!JOfOA|L~n3dtHnGKw1;Azq-vIx;T-w@=0yy_cc`bP!@3k7=2}Yg&9oF zzz`LfnS}2UoDyTK2IzfEBjQQh?OyHm%xCvVM~EiE&~cs8i%Dsv?sBWK5<* z>F(@ux#LALCyb&p#G@pl%m1QNDgKI~UL>AT4@Z2--2a;{tuYf6xpV^lsX#3;r; z`Mih^xUF%n?b7w~v@{k)WW(<(f?$&16Yao7bgNnl6=Twc&6b)+79Sc89DgffrM9XL zQxoVT$QX@iD0aLa-4E+ddX_y0O{UwqgED0E}DN0O7;+Io9yZi8k-)CO$i z|A({pfU}~y`~T;hIn(FPom=&G&4=T5t4&YbcspYP}E@~Knz4Wf^5 zV^EE0?O7Jb(CkJAC9)Pn!5|!1T&5XX^;>vYR482gC2>#GXuZP$vH_T{ z>WOhVZqUTZh?)3x6Mh){a&&kqH?Q4<`UZ$dqjgme1$*5g>ve==36I(J`tmj6JZ49- zZUKGy4B$~BMq1iJ-7Ak_T|*-EqvuiS$1VYGIv52ea055fUm5-idh-*(jT-G+OUFjfID@oAa*F?`qo6Uki4 z|EP@7EnGcF*68s#Ptzg9?#=)4CmDNZ%%O3#q2e(fQO~RNB>qiad|R?lR`%Cf^%V?T zDHZFOwR-rRJxE{KY(vRRD9){UTG5n$g&0*XlgBNUBXADr6b4w68HXeBB>bD!M8L^v zsY;)!(x<4+zG(+?@kM)dzOv3!{+I2kcbeq~&C&bK=}U=`yF!Tz)Rc==CQ#==@uSb# z{z51k`BgnaoG2I}KG0cO+VO!L!Bmi`wAdv=?J2jBW8`?Uu}`!H+5OfOP0QlSujt*g zn1j-|n|z2yb;WD3F#?`MOrCJ3I0Zi@^k;i-N@4)J+`n2j8}1VLcQWnSK_s3HVKq!; zpjE3i?`6OQ?X1m{uGpXmqZ^6XBUY#>mnr8`)pny2jBo8{Dfes@o~7h6m0GF>U#7%0 zYSv1uk*T$@e|~kiwA#KW4sTQUi#wFKNzGcNvbQLA6%&qHl{If6{?vV>IeNHRKH2O( z(VV?UtrP2%xLwV-OO@|b?p=tuV!b-*5hd+sFb}}x~VAw`L&@Y zCr^`%DP3&fmaIat&n5J&wD^6cMhGrM(0Bkiy_{r~k*w`8Vj`i3J5sd}OXIKO-tDxc zs~Fq1kW)}`+F&>v#E4#T&?=)QK zv>w0%sYTf~bQ$04sGPkMPs=m)GkURy0g+r+z~k1Lhm17b@4*4tV3wNgCbL`SvIWKy z;&U-pWY{O;^x&|o0ky?(Q_xk&cBiWd+E;5ah|!^HgW1o^wTI*~9yy}YTbcBeaGp8p zGifFr_0J~1xA;D>Xf!OOr3B=JkHjQhIvQ8W14@Eq3v`#siNGOtBkU8!>ZPmlelv{VN>}HbOwF%>-Fmgut%;L2y4+Iv9t6;0treOfyA7pN1H8) zwOC*SZre_$@YD?I;}K;vl+Y)Yz;337S}lW^c_}$o+^G;bjidF{ z20ijQ`H}+R{~R$b$;Wqmn{DWzz6SXRB^S{M(M{>uo$PquGQM-BN^>Fw8Ht@y`qg+ zhq64YLEuB#h$>3#o;Z2-wYI<KMw<( zN3>*!KqqKhF=1J}Lih-ybSHxPmL<1pR4E5Qcx+X5$pb5&sSxw%n~dC_JBiPtc(vTz0DB2|6r{&0Z5z?NPpd8CckWbWUgwxA9rbcX zyp(AqS9TQo-K8$GJMJ>uN#V!ZmaT1`%%-iZILVoLremGqFi%x|+~9oKko}?|eU5Xt zSmubO&Vutnh=~iFMZa?VrH%{8_yTACiH^d2P^Ab_B7+K(=jM#g+QFq?%%l1pB)Nem zBROuvGL0SQi;AP{ETQ&h=bpF)#>fdlt-B>w`|X?-ccvh#H{c`gl2o~?z31A{A;j;6 zJrg|?hJK=uvQ8SpQMg?e1VN;G?7WnZC@0cv35T<=AU_h}!zEz3VX3fBIwEQ_; zTlb+lq=_nl8zz>AWrs8K*%?1;C9~fpP?USS$m-8Ja&gk~M}O~^KJOuN?jhgbwB@@W z^tfLY5h0wf9sd)uZ6I1G^V`Ul;S)~$q+>ndZ2dd<&{Q`!Sr;SIjlNFR=O4PoA?~3$!`|6+@)*Z96W9^!IV?7^`z8n$kvc9xSSo2En-4LH%S)<)ih&QYl*To zGRj5MpopEGwTm+6bZwTC-sV}KL?}Vr!**}fPMW3;ZNb2f0rn}M&K9}0Dm{#&!?QE$ zJ`BzGLht&(xh`OWwtku35XAQcZAAaq6AvBRxt*d>k#t5|yXV)mCFLLYyk+P(Zsdv)THR}qx9LF88wH(?{+3MhZwb(?=F zA*I*QukL}88%T8(5@h9gx|+8ptJgToN3LJC~4(MKmxKuKOrDMes!!k+mS~hkp2+ttGsogd0!ZQ<2(QK?PWpf zoS+FA*VR@>8P_{?*nofp#dbp)n>!0VjFb!IjG4{6=bPV^m?lym_@t3_U-r$cHjIn) z{yOoP_C`MLpCo?ghwnM&M^3mBR{`?0G*|fQTDF-~Zt~?SpU>64y@pToc3eGYxw4m$s0G_emiJE*vfV&)Gcsx$0r0i3Pfz@V0EK)Co z<>$iq>%e`qG~wmYeJQkG4&#?X|K+ezX8ewfwU^GUV9M&#%h{94^2~B{Mmfe1mA%>x zuXp9!VciQMEbz~Vg*U>MA2GiNKe*OEUF#b+`jPOf+&8ZEm0S4QbsODxHEWLT-dE#X z7`hjPWW9U6Ci`lQe7h!kt0sL-_>QL6SdSZf&_Tm>QPR^^%6GbhFU!Gz}n_xC{u8G!E& z+~))H_vAO2_GI94-MxXdOKZzDcb0>7<-&dC1yVc_wEi}T9}g}R?(|1ETzDc__)K6O zzJ)XVp3r=`WL^|jRf_7Qt|0l9x-yj4hS8;A!@%C)o-n*O#D#HRICI0mx$(xw@*fD1 z?jH{4|0=YKW1N6A&W)=>^VZP46+5gViv6z8y(M%ruJ5i6U8*i2c+d_JaeFxG`p~^D z*?V`GSsRw_4u`G_**}xJIg1%aA}fa`*YsproY5Ja3s5fU0lzQH7fJA7zEqaal-VcE zSIhqE?2&Jjt+(}&cgp^s^yi<;*hxd{qw?4{YTI*Fv^DUkNHjSqmIkBF4B|MZSzZOc z+`TktJ2NoP2+U;dvW}fg1IwLxap2}S@4O&l%XH5R{IjXXp$N&rqKkue+=$}xV9sR_ z3W%$NZTU3aH*3fKH9PKOA6ZIE34pR%+l)PMLV>jK0-BVD__vG^rk{x@q@tG#c>SF^{H>Xo)YF_RfXsrsJ$;I)JA=o`fN`o&Nj}1OdVi$sw42D<~es! zeui^YdXU=JPJ5k-3~aqva2v?^HxdHQ2{n_wEz>16&FrxI#WKlt$CxelcnrkmF!eLD z(cZP#n>i?dg2-)KJVi7NYrb4Gbv9os#HFI4kuao2dz|`($4eSZjN;>45UZ%?Lrg)o zU9vs|Lx}|eV?GHvs>5}HM?XoVLdN_so6aaGRdA$|mdi_YiF`htLy1ltJ}&JHLu|60 z!9arI{Ki5<*!-qw60N(ni1wq}#&u>pB;;P{?mset5|)r7 z0vjhs&zK=G3`m*29eOjvMh&eRRy{Nx)-`mg7-f&_8dDw}k8st5(e4;~bUel%eUjKL zJ63KMjh#L&++2>Y+oEY=VM5E~{3L6#H7V+EonrMDro_`qQ=Ki{>Dg)7sd8F0H9g}U zu~jrPwY52W=UMSwX8d_-n?du!ZGw3r-@JJ>+szEz>1i%;w~MxQw@YnnZSTx4?wH*{ z?ilTmUidZ!ft@;bp0iWK&fZS$&f!ikid`q{;_lk9i@B@IBIUG2E>PW?-D`FWb}#I< zaL?8~;ysz3r|(s@@4|hK+TUz4r&n?N0ukzR%V>H7+qwP2{j&Sd+)wY1$sXwL@9$?H zIRAhn4>k{S=h}1RTz5|CVE3T*gGU|Y^64I&IjD5-(1XOGGY@$|98UI1kv>cw?j?(V zxOPEH1cYOV0dR=P}XG;$!@ujrhf)pO5_I zod2+o+xFO0eykXm>BmYmcbz#$%neEZ)U}l9NQD(b7~!*3ike z@&n)XIa-p^i%Et$h)>9AjpiXcfh8!hs@bY2qHT$Qod~G^O%Yw+EN)M!yHeI~1MzrZ zf9VWJ5nnm-8^`*mBfmpRP~SUp32Lf&f-6sT%~S9V%D~A7&k%ZnS6Z6S*2w4K9#t>Y z$X9CAA8M@E_-6jGM!u;(->Q*+sxjZGak2^vsF~3K5%bqx{y`7yR#+MyZUprl&Im+6 zVd7zV)&w@5xK};|u(&rCvL0qHV7MEVM>sR_l!YR&A^*h1%0h%p?6H{X>MZH3=ups< zqFCxqr56)HIGTh{zTfXAKycv;nfQcbvvd@GKt|kpk_;nAH z6}60A!BUT6f9pYL9R&szQ8$SbpEw$~*d8p+Ea8M{hI=*CHt9x`-Yj%tj)YMhJs^}- znNUotSoSb8P12h5&(!t|61EOot0UI;2(b-KV~uzluS%Wa?#3f%D|_WJQki=}vZkA) zIxC9Lj;ynyj?0w7u6}MLU}@Bbb?a>9ZL|nLf1U6*L{SkS0W|@sD zqIFKnFcUjd6Doc^yxr~E$myAI^B8SRo0jZAU9T9lH_Gu{RE1W=7ZO3K%lay1C2Hp1 z%X$Z~3c9S9MDed8>ynLSy(|(x{tsn6I}(>CW!)C?8K1Dpm)@0dCf>Gf-UZGk zUN6lJk}%1N>I)2NowV-6v#%p`$w7|fNQ|wUyFbc55XJXLSBSf!_|7QHx*0FUGHy{= zE$y4q@!B+(v{yATy8*T()sd{zH)*rl$67IQ!Eue53+A}{0&;j=xSv9YXy>A>+!;89 zu@C|Jz;KN2NE`$*CZvA4ST7M6mM0d#^+#&m;GT5;j7d$fBU;KEqq=6d-}1|&M2_%@yY zByD}19`Z?SeH>5v2p%@~g4jJbHg`0qhlpgBy(|pR2(8OVa8Yd|pIsTde~I0Bo=-k5 zVx4Qh1v2Q~61giee4CrO6C&HbC7!l28rU0IDGoP?aMr)R zd&8}sA__t##@P9{xG{OSst;mbx@El|Pxv4<-;d?Bk$FuNux$^mjmtx|u=#mB>XR5w z3)}rR&LmfLe-fJ?$L@DLE64vc-kjqf4;-8DT^xUC4%j~aW=7w}FN+^y@l`zgA92-> zvHM9}lSSV9K3;fY#wrK*(9&8kXlNK521Z^x&=hjBC4?#L^8;UI-vz0FRvnFsn zO|zw~6A9nfeL|ckKmrr>1-f!LGY+`{ksv!6FSMlBNxmNxn0*MSCSH>RZHS`!K&v=a zAE*Xv(uJa2lucq5S8tEwbw1HbjO=Mpl>x(^&PvfLjzULkXNcJ>xw={WGWqNfdubOY zSq+gW+lf}t?zmQL3p$GMRP81A27a$W9Lv>UQpL7N!O38Hlf*xBvCw8S0xFB{F3whN zqchsQRyd~$w}_-N+!^7XC7fQeypC}vIL$7p=bGGmgtL|Z3-4wTo&ZH$-4oQR02+h)VS8j+`DS7@tnR!oAwYZXydD1tpK zW353rN3uw|9!C8oGRy=19l|mxi1h(-n*lF@#Kv`YWod?lQtv0!6?Bh}#}saBk!@u7 zugcVACtw(mEJ5b@{HPp+N z$Q=S8Dr9K4tX7S~GyUgHE3xT0FPJ%B^Jf7jO`y_9dW_3tbd>76%#1TLDZT%qOmt?( zIwRwsPfkIp_6=WRBR| zoJnQFbePz-EmPA1sGBnBl^K6UX4J||%Jo-gyp<^HlcYmIISF2R|+#0tzeiv-)eR@(}CS}2n~92JW1!g z^>OWBwPlv{0b9)mNbZ(MuUcV=8kGu-m9q4Ma#q--m3GexyZ%Od)Q>8p$P+IX6L1^r z3V?a2TB8~ux$(f{YedHTATo&H$zLsM4Yjy7fj*SZHt3g?9V6%Cjh4<0@}z=_{&B3$o z#nQB>)A0W(i2rNW#RhtbQyKJr1{f%~ZQo%!^-~2atiWJwZ8bj_60vSV(*u1UcE2)&VQ5CQvN^zU@Y{ zGo7lZ9;8)svw+Jkw7VEPTqF_T#CYlwg zYPxos$JKMv{!9frDCld!l!I*pcoS8wS#94LsGvmvN>3ElBo{}ke2O?l084Tg?{VR9 zi+1%YFK`iTE_Z8y+v0;3^%&7GrYE?vaN%#z)72z5>4&|gN zWD@aR|(56k<_IPh)hRfDAL@zdvPN31~&APwkd6`N9l(I zfC-8>3#((lnrybIVQM!}`|r>p{I`TR!{lc=@s*!o0`j_!>Sv^Ww-N}gHTN!cM^&5=;)LkUyAj< zd7CBHSbewAp`urnahZa7KsC~^Eq@GZedzZiX9tYbs?F`03@)=CNvIA;rr(8$L4-Q4 zQk(fs*6|}9w9UP#Zw7*-!%k%MrRQL}>a+WFm+j)+!nqj%Uwj*UeLYQ%!6JbyY74(M z=z&Z8XwyRjkivSa&jwP6-*B5lh8sVCm)oq8Q&^IfCYgdq5+9JL<}K<#UfdFX37R5jI=hl~%L^Q^*(%mDWO0NlwPSmiL&*a5Fw=C62{(vYwf&N8BbS7!fh@ z*IKhBE@LWWi&Eb1(P1Y2euq_s+yD_sqt^7PE3-)4v;*V_*@nnf^er55^~fMwxZ|zS zxVXT&!vruP7-5xjxMP*@Z2}~8|8wDZApkiVgwkYjhi;4tmcGt~B|G+F$bwpV8P%5C zgmE?nP3K0W?H}w4zIHwjvmOFAdfPR^9V!=i)5C=oNNuP22j+zNa=JLf=24fJk7@Rw zC7{BSj}Q3hHlhXI*8Vb3w zatTqHhnC$JVoR@Kv*$jAFp)w`a4!~3_bTfiwFIzSe1By(ceq&etW*Ads$H1Klekcb zjV1@RL!=FqW%fg~)}j)RZ*qRqD&^mz4n0K#&se#q;T|6Qq*eS;<+jS5%=IiQ~+G=}IoxJHtX`OgC6k4WGCgVPNQ zJ_M4E2Q>(u?N&1UT2VK@)PfAmSiv||k5JoTHCqsKHlPcbFn6Hb0#_qDGQkt5uq^x$ z#EzR2#g{LXE$=YR4oSgBf*=wjo?-5SR1S@Dpu7=EQ;06sBzBhn7$CNMM5v=6SyJ1{ zJu3m-S@Uu&wk;R$s6+r=OVepE@^@=9B$hStk!kD>>>o)#Z>BLDi~+Z2F=`>vMS0yd zg;htOVvk9v3aWWxH0k)#vcA%F=~^FI@fXaBJV#2WmjFDNY>k37iuh<;_BLsq$EXer z2-R{#hQ41cR#iKJ6Ac}R`RW%Iksw=$k*4 z8bt)g;wlFZ^;Oe%rMZCctsYs|Y+sy;>u~I)DZ; zRe7x*z~^?)=`)IZ8b{ZIzZi%u>g6IdlzN&0d+Ldl)$ep>@=EKHHC{jl^e|bk(oUu2 z;x`qYqjF^Tt5K(llhONTf$B{|#W#Z@{=+1gv>A~jiP>8&y(=XMFW@m54{9QnNu^2} z|L)eM+nK3xzf+B_u1cCNT2qGM$Zw-14Yq<1u%YGWB3e9%amD0Io7MqMSO!zXd{vWp z3->+o<-U$kl+E;7jrCCupZZ+(r3rzGU}{Q&*G}f-Jls4RsY5>_Dp=1*d#dG90GH^Z z1@vf>a^kW=zDvxnW-X8R<1VhtHIP300RjTZmzvDU;yzj0R}WBg+g9wBn+e7>>%i! z6LhHBKG<5$MlG3!v^axWzgQ0@Z;OR*>1ePxS+5Xp3AyphQ5z5Nrv7Fc7t1#K7~u^v zIybN`4=_x^U__Lz)zG7X5E^_jgtvqF2=OZOov)*7u`QYAIZ)iQd2NusCID+?XF3L? zAKZLN9WF#27u$;aC|nziIk@)pWhYxCUfEKn&LP zxfj9ffK4p?ffz#}?9!4fMv39pGGXt9TTlnbTY@ADBSbIHuh|LLh?@wCz?>97DFpS1W6!HPQ2AUK%uM z_6$Zn*YZVX(6mZx`m>}Zjm4oov|{+0CmAlFN}OZkmTkneO*`)fxZWZ!0CY`ei3Oh$ zz%Fyi`f)e;Sp2CRXB2N0nR2!{bCJjvGAX=~({Y>}lO2_rlO3HInr+BDCIF-FmCa=q zXU7?@*rRw4xQXBcM8z{{>dYzxE4^Tetuiyc-$J2YcPHi{Q7&whME+vY56-btXY%Qs zV=>IYsIH}v_OmVjEbEwatx@M#bI!H$Dr+*ClVd}lfnc(n;M=Nm;Ia|yNrWBtoMFv4 zMU=0wbC=ucV2c^~d$mrl#f#r4u^0h)f&9U&M5`>9P>L?F4gi$Mi~Ebl;SxZSPYusb z&tMkKaNQ_%w~(t{)Hd=sV+7ZkaGPbDI+R>0DZruvF|-}2?HF%VG$%EhPSlrfpyYV2 zdNXb`!!GA?dBh7*W#+s*LF`%(yrm)tJ}whM@Q@!R)64VNZL#{JBjfM}a5nIn^3s_; zoK^ajYs~-FAR*H%-PuxRy~ysyfh$C28+<@xvelfC%QSOlo~1oI(zwbQALWseUFHH8 zJqaph0wkGvQ^gnrB4^3_WblyoUic46wo~h*yjxbSmGX9(xB56`esC%j++ahpmaV(~35g*xjv#oBj$J_{@JAaK+UghL& zf&Mvns$-qv9~t`iA;eve!ifq`B{-!EohEY>2vvP9q-=Dbn)K$SjHr8+vRgR;|jM&;XXBiges>D zp%P2vrd#zpH*4&)c6z2?a>Q1_Oz$$sD*Jm|Z#cRWYIT4yQg(dlAaf~espFrkq1n7M zpLa&zx&W+pdSt#FoB8|fsmmPy95;V1E+@uY+p*OOH@(vJuF)5yBkY~my4G3FpkuA8 zTQF6Rch8O6&SOw!dTn)-basmQo)7#B%mP^VgR)NnP&*}@&= z+$S*1w-8hBab}Nt$~BC;bQcWhf_b{&K~@?;Szy?xri{+?a4MjQe5ww2uZM=*NzH?p z#05OW4Jw^5TQSHPrwPp^a zt_f)d(XAcEL+FQo=5)c%Hf-(f*$(4EZx{+S5^F4-x-reYZdKfvy~Gt;#oG+pRO?y; zT9x^xG*FrME^N%M9?-KDR_ELadnqqTs(5dsR&fA zYk%w5|A02c{mOB_bJVwvb*c;RxUBiOa;tPQgns1se{&8vMbv%m=Du>XLGA}P_}*>* z%=L!CzoFm22Lstgj)1Tbm-QS6rpB>yn_x$KckAaUUA^g%YGH*F^KkQBf&bzpjL~=K zcM-!{dW3bdehH{sU@=XpH(LRBG-4*T3J@HTRg8d(@-mp7DaGz4i^Bt~r#$2efji*%VVKhsATHaedeU zU%SJs-^T*0{VdU};jpxI9aHnlr0+0alTPi|6 zs9UQ||He6DQMXY9pYWzGY0V}jEtg>bO4L?jDO$7_eG%6~3#>yn2=mboOdE{@ELBLCt@cl5M$E|2`>5lY#LDAu2~JW{ZcYyv{EL^9qLjxHbK zSOjMDf3l}(YzT2x%rrcjZX`m-*iGCMT*x6TT`av57=vDu#)fnwvnvnl=gi@0vsnic zLq#8$ZcpA~fZr^Kfny`Z&K&~@KlfCxB)pDw3bsU@$>`2XwxTb{WCUhpjhlRsZc}b& z6i*|qeD+ZCQ??}%#+8C8rU`H2?CeYq9M5t%%Y;lL(@hgY-Y=Pt`Vd2Q%GPG4@%_+& zDX2Z$&h)gMaaY{KEZ!}vFhIG_M(!&Sk?_?T|BMFj622BWp((Prrx_Q2NVnad_U=eq zx1{w5S==ZMKBm)30@iikkD6YK8effOe-yc;OjTn{y5+q4ZRCE(%of$c_seT&qic}Y zAWzVIxpH(#n(yc^X2J1?;y4NZ>yiAh6VgA87qRtY)U+h+{}}!9#I!i6asa90hcv&w z)9LBjGyZk1Xg@vepO)T>DQ#JtTN*Q!T^75S#_i{m1CZk0pUz*H-fln$N#Tp4xgUWkV@-#<+m#%UTweki>+w%QVrW3W2R z(LT$upmApMc|6PEEE5nt8Uo92Liqe85HAt-rd;}JEhBA1GScp)ewy|oj9Y+5^Ca(( z(FSqgdO`SM|9T-ei03twbAt$yFX?2vHCcP>vG*3wvy5e#R?K3Gx(>;pLIP=&tU9c_ zk|ZzMw*WhcSqp+lo1UP5Ghrf@#SB~rvZKmsRV|oG8qF4~l|TbX<6AQM;Z|8z>GW89j2Y~)=;;fTyeK&t>0xyK2l>ol`TJ? z^<=|5e;Xj|z-2N6cdrj}RycHIW$^x;HcSxtYHCI7}1k{3uF@No|eIa)2AZZZZF>vJ7Gv%iuG7JC=wi$@h!^Uu**H&!mQ%wcmX zF5LW_QO29O!B|2FjfSu1+?3)P{a2OeefzZ6F*CcB2OWq0gmrkA=+_rbk1uB&S$c_8B7uRuNU}@T9JKvi#enAR*-=^m&Z1hE^h<=r9n?GDU}Zd5L2{|0vBELo`2W7W4Xu z+T;inK9wV3t|i|D51%g3^_nCAEv{CcPpFM9kTOY{K`{E0g4dcm1b)X}>ft(J!0`>f zr#cF^9HQU>V`OstE!qa^_Pv3+odd@l>9~x6Ykq(T^+prE637=$mP;jo?y9BOI@Bi; z27XqFU_2hja*a3+H(Nq(aSeRI;5X1kHt3o4GxKrzsVP1)M(K^D{(=qeSjQPEd7{*HJ zr+7ViIA|G`nu$jO-{^Z222Aj;YZNjPVIBX(H`9wWlQ0rU4;bv*35&tuF(&nd00AqTeCMAHV-CsNfDNTE3Jm|9&ROJ8Q zF0nS&Qnjeyp0|-#a<`4~@m;tLZ5a3Q)mKC6Fjn7X!6tV(6G{Z`fOAp{7KKgk@w3W3 zrmEh5-J?M0G51h?d(#0lHe_oS-C-i*3XEUm<^jEtccR9ymV9NX%X9+nTMJk*@BsNE z-~*Y$fS5C(&oYcZ=y1wDg)M^YiZn3Qw;wl~V<;kz|DzAEVCN%9HhAL z4#7p7zJSyF;7uUF&8EM^;3Scifd+~o;IxyH(~4`%v&3ztSYux7Cm+OlnyrS~dtxx* z!w_2XcIn=y)H;-LyCdj?eKM9ouGS4*opY_)+!vN@@FG=qVP|Vr+!=IWrfz8K%sN&> zFx#5S6T*|4@^r*MumpH7_pLVOQ7YlZcUDRf+hCC@B z@Sc?LrOOdO%Wx8CxCG{}4lB%=(6+*?8DcePx4cvp$|P|=HWnStpM#F-6ulrQR#|m{ zXsvX-Dxv8c`dE&p(Go#0LR_y0$lU=xz_s5ku$B!6-WZF$h`3>THjFofx?ISIb@zl$ z+I>Sv8vNEIX4xU&rtRu(WIP?3GXj->>ekX2d{`(R>MTW`-_bOP{nZ{Sn+mf?2E=@~ zQR99UqmCXGA004U&Q^`GmxSVay$>&-7azzpJxDf~FX}<^Gcog1&2#n#k$g0KiYBMi zCqD1OKnz2#C0jgj&DlmAlOcEvKsipMhOX%!d13%zKU40Bbj?p#X<%<@?foy2`S=l` z5mD$BpZjmg@rHUdFwXb(#LHGolg}{vW|BWGPB<;b&tvY@W(XvTlO-_CUu%l!u_(XeShfRSGD>6L4oH51+>Af{LMOp{UrAUQ z5-CH?0G^|DkJp58aUc47ua^fzboy zKf?Hs;A!!&mw(9f@ATYtN%6;8++atwm2A@+|2p@RB$4rQ^~dOHC6=q!WSzg7F+%;G z0hP{JNL)P+ri_os-z5?09(Ls;F6+W0u6wuZ-srhwlMb)YtxDv59PjRe5sKMo;ei|p z$U0ovyOTZM&AD9=2ZHo7?GfGXrAw7s;|k zkV^LLxXHfh1N(O0WM5rg$6+u%m~yeKLN7*w%3^agc|cp(V6&@|O~m>#nwE6XT2LHipv;*}c2(@?Al-KREV84n{NB25!7hbKPAR4b%JUVv_2 z+sTG9i@(Q|HIzo@Nr;=4Gau5spRkhNU3?3NnYzn1J_tK*5H4mRY2PjaSh?|aP!SI0 zZlm1TPAKC4K58=>A zp_$_v!ha6C5;=`yBmpIx!JNbm9hKI)2f7ZH1U!v7F#gn%9)Akvq1e0&1kZpr>!rOt zfcY||sQ}*=w^l~us<&`_Dd^tUrC24y?ctgqqNyTRKRh5;*Qpx?c>WcX4$h*F#Iu^S zXuo9LldSW}IM&^qo@8MhB}%)0b#z`p`WO8E2dvwaCd=NdHQ>a451Q3N;*TMN!L72tZ;IRB&tek(n3@9VVPn;S{TIk7x&Bd8UKITyWV|g?3Y^l- z;l}<&Q|=FvYYv(6luV9(C`hE+KBd^7o02n5jV3YbWpN;d)7%LGzEofeeq@$4vR0Pk z+Al(JY~uP{NnlUZe@DdHd@{10h*FP5foEq+W*4x`208d5)%Yun2!oxb8zL-Vv39Rr zEFNVfC_j+S-Jgzw_IFb=Rp^?nYDlciZdHdXE^LfK8-{;kP}S`zacpo|B+tU26kh?i zrJJ&@N%g-Srsm@6Qy9T+NTpV#8qY{AIx|(ZT@AMMxhcmz*xPR=LK0NHdckdkH;v(+ zwgz5ZGe^b6jy;lFH0sgJoni9|<3>0*I2Wc^ql-kOj+JJg-xe!?f1`3E zWfXNbwGmCFq6XOrd8KGg4?$lTJn#pgmOuTSrK;(zRAT<);dz2nQinVknh(Lw4N-c| zzDAs-t0q{PmY1ZH>iMm>G4iUcYtrr1W+u2Z$~~X*ng)h%*z&iM57}A{%!_@1lwB$0 z_ZEiTKUp~5zta(zw3tcc8Dq5B$DJ*A0U8T6(Q)t_j?4`&ek0Qti|mCaYQB6#%Gq)O zxK4P$D`nkNPe!}KV%v4x;2CmW!;Atydn+@z?8SxD&rqOciWImU7&;Hc1v8A7smeHB zVvT1rUqpqJ0n%0rS#kPP-BBvlm|c{)KY;I|H|J&#$vnjvB!enhY8Jm0g{Xu>CRdDe z=^VXxgSbJh2iv7yL@BNL(^{6)!q~g| zw=qm^o!As_=B`*CF)AW>EvBNiBzmzl9*f6<)x+)QiWTYNRcU`|+PyXnUdbG!M_Wr*tUE5axEc|8NX0v?Gr1ik4i znL0TcmVk<4Z|i8Dq>;3%UeSWV2t~t5SL|9A;a$2W#UWZ0o^m`Uf=n$M$q4?GoMQL?T`+PVG^MwH_>>Z(vfJ;nRL<&2&N|ba zvWM~a%y1M#Gj2#TDwAm0%n!;9YR|V7J9m;pyGC|m5L9VWi8MPM@)sDK;wpH=atQO#vh)eyKA`745((4SonsScB^ zEXt$aldaP0c+W-=!*=oy_$1?ETAM|-gioOE*x=Vh>&1^{7VgN#W&=$h&6V=?IYXZixqrs!$WG>)Sbh~}zm5wZ$JtL}`PVr6VJ!a~7ylCf zQGClOrjz+0mj8^i-^B6farW=AOir}^8W%r|&lB&(r z_MxdqGF70y;^YUC8E##c`Q@5S`?VSOnv9#QYgT6B6`8)3nVuVd`XNrcE;H~$@VyLW=^Mz8%n9DW)j)T}8nM#{gN z_;&ePKoZ|ox6~g6;?%DNhO}+uNv5t~{*Pe*o)ey!d>xZHL*(x@ssDZ8(anLmuTylf z!AuN#4m(|MR{qAx!sd^O@q>xyA7d3Zzew~CmSeolH;=|0ALgf@DrOvj2Bc;YRcUoh zKWOd*xu|frEFB=12|0^^GPAR~cXJ+Zs5)MKUuQ12)QPcSypqMxc%2Q*N{eJLU*oCB zuw5|kwUVrr2vOwpBxfN@(fXrsOBk`TU}3V!r$qoIftARJqGX;Sa8dQ5^>snuQNz;b z4Q4_bk#?h}1p-yCn4Phie}?l4Ra~8`0Th5OtYGHiRJpgF>8znt-(KfpPjc&P>f-vo zx}IjPZ*iNS7P!|3d)xX&F3C6Sfxx&NjVsa3ha~IU;h;rpID>tt3U7-3EvK9-Ce}{4 zP{3D`jGpr>7( zrTO~EQ2v8CjDojhPZu|5#Vwoey&-#=Se4x(IWyF-8qT~S+qf$0-;zD>)~vX#axw=l z7PHr8#XXhpS^fPuJd_XSa=*?2yMHj3`gN}T)*KebCM-l+JG@UbuRY^cP=Vmywi116 zf2`ovB6~P}2`OT_d4h09nfThOtnK{4giD<)Qd~WrWG(Z7f1JRa`=-FPNeinrFVxIq zCII{n$G1<{Z-z}glcx!fT#d3VZAFb_Y(EfKl|U4k&77vi{Npwv?@gLZI)#BQ=V)Bc za(QvZ$nrQ-IO+-f{VVfhh!%xfYj<j-HD5iG0%rg8F`S#1rHAR--|5CnyA z5PGPtE-YxZ1li=}+p?mp0*8ObG~4ZZs|K(>XZ4`1{>4IXSSAi%ib)vAps}pjXIn7g zlRnKXkpn)_AbtjZmrn7ui7RJFIq~UOEv@+8Uy-fCzh&E1FS2|F2rdlWDfi_)AqIiYcinqt;YDf~Qty+-3(>zr-j-Qm_S=asJcfJ zJhvh`3}GbaQ70gbpDD~*CnwUpUj+ZL2Of6cf{sT?foLE2M_Q*KB zbb&znghM;D_H~cQ%0|D7!J4#zXJzWo&B(#Lf-T)EMCwP>#>Sdt+kQb1M1)yIFJuhl z<-6~S)En4-h~t*URU&nZsIjY2X=>Jq)P16`PPn%SbCs~}(?J6kc|qxAikv(od5I#2 z?`>vxV46eiQScq^Z0=MK94}{kwpoQ|iG&Ddjn{&MzFiF}tQIDNY!QP(Y?ZBHR<1#M zS-jDc(3-m428i#Qz#fxrC$z(&?~rgNA7^+TGMYDJBM*zej@PJ9)e(?Mr^?E4u3LhX zuFijODipF$OvJZxVO{Aq<4&0`2)h$OQ$i?!v79II*)g;Up8h3%bwI zbQ*6_y>W9*ol6iaqOx+TiOw*Cbf}{RLKGh_7-(H5Z*-!nCZbE&SqJKkyF4d$e^$eg z-mT~*`{|Gz)jQFh@U7@CFb!m;U^RKNrdwL;tKAL6Q-*da$cI(Hu|v#XRm3>wb$eqz zqI1GDlRBfOaDGkdyqe4p)eQ2;rYOk32JpgbA5}=?jk0qLA6n4A)2xgwz4Ca*S|H_( zSjYwvf@ID6F`D$!X}%TA#3^QEZNS0*crO0Oy$p4RX?#<&{d+3?p(^~1y0`wK8dSI0 z=f>Wil`#y;t||=a1;SAl>6%^yQ9Mp>j<&1!a0_madB1?c=wt3nqdyC>`F-$6SjOq) zgQYd2%t$27^ej1(eD|aYPtTVN(+lLT;VxZYsOs-j>3h{E-LG*Ok&}cZe4B-Fdhg1M z{-Z>D+l@D!6}#zQK2a!iBA2WuG+>r{ShgdjwkePfyG54Lt32ROQB}UCo_&+S@8m zdz)pf(ofqy@U&gBlcyabhoy(gQR$I#vv6$JC06xvt8|UU(_Ur`JS{SEPZVc1eO{O> za{u*#NzC@s1AqR1c;F{1n$sF=XZsuKM$>qxJQs1Jq4E;AF~zEqwP^@v(+#pUBr*&v znjAseul*{m=}bw5hhk4%;fHExlr)dfBb#fU&g1Wf#PzR=)|DQL7j%Q#ARl+uYjWe8 z%=LJ7mesa%1#Dt|yKOhRwmB#q+}L3?PX)E1>^6X~CJs2lon?2AIh5g@btzl$M>V<4 za=P2@_L=bCf{tmky4@}h#B$({#QCHa#k=AgveN}s93stDrv-acwFNz1Yn&;A6Q~d1 zaYjzHed0)ft6+MqzFL@#iq!S4U5ii3ZJ2FOgWA@Yqg9ZJnN#G^mW_07Ya}8bzEn`K zh^YjDj^}TDr4#(a$AIS=+k_1!=;Ex z%8~8{4`rx5sZge503{rwBAqw*2!@RfI8xV>_<=TL{G)Dnu9(xauyx0H&OR90b1OiZA!m z8C@`gFt%a~(}oJ|Ian;75^{g>0nxlPwo=7DaEKzL?L3(Bu@C67-C6;6ZM9x(X&|&1 ztLhhEhx0>}R9Nk6UAfv#uOV@cC1+I6FsD~a4BDrpfj*OU^Er-Ajhj^dRtOHS)r=Nr z&^}e)IRbBU6?396eyA(^V2P?VEl-+ppYU4}aFL2UsWBKq4C7bG5tL|&JiB5QDf~!& z`0?eT-mt+5{#>CzRqKIU^kYFT7}IoUi(_G%ki|2V&{@4?979`WohmUV6zxzJPh>xn zQPw+2S-jKlMJBYYfEk~NM<@EsES#bsH`ec9rOv#?Og|4DwFf6NgSZ?X*kL;0gfjE? zVAPQs0d&n(&KShkwD3F&%x-^(9BY9eqApis4HFy0==Dqt<69{C;dZkX0l+*>uqp)A z2$#8V_rM9Gpvcll+TjfX(%PScSUWNz<&RE2gsADHVWJ2r29!HzOY40s&wf367Q_a= zJ%WM4{Z3T&!ViNJxB7cwEs?qR#b|TTN5Z)QZhn&6zX=m<@P>$97meQwzs1{_EtS-; zrhH&vI=M=ymjrg)<8UcV)A8V-H6(#X1`!hCaE;txIyz0u?*+G7lT9c zY|fJ}zN?1$b>Bt9jmdA8jdjQ?5!erZOp9zTbjjx3%d%x=n@p3o)xVF&ZC*H-xbJbY z`2^u1N;TUZD6%!OeeWjOJOukkPls$i)*4ZeZSZ5a!ou7+nWID5-o?6+NvQQ2oD8j- zvHw(Pq}zAn%Xq%%TVTp>JpY(X|O`l&LNjEdn5e7>py(Yirh zQwDQH@A#QI7qgxELi2C55L;D;;j5kPR<@h@Z2q@>n;!q)wmbB7KV8ec{(tWGuk-j_ z{aXMeYE&Hyc?HdCcY#BJ>)@L_r3Sg}at8U|S;l0RyNC&4aQlDxL%yeH{QDn!fBM_F z4XTN_E|>h}hT=E11M?HH-fS`^6X$xPHA)W08!;8gs83KQK1PDSq#I|TE!TS2an$5C zmSM|VD0T>hR`${Il57aHjtwy zR6ZNzSvLM$jWeXxHOQHmLU%TE_KsH0-N$NnPqICTOd2*mqMBk3wkI*`PICTYQwAOJ> z`PIF}KA>YG8KxyRk(g5I&yCw73^no?6Ki4ob9r3m*!WbD!=!Mgz^(=HYvvpgUnp`H zfbLIz=}sxs1_T-a#=Ry6g`D$nw6~#HD#swTd~57SDM8Y=2n&Fwk@-04FqF@xe+Z8 ztY6WbVi?2K={QwN0yf8Er zOY(+43My9qH*?06K~#xdNC*;ukm*9Q(!#4m1Z>PXCoY zJvj|rM{?Tsa{R`##+X}I&Uzxb>DSzpB{}<uFCc|djGFF4>jt#Q|>g)5`1ig@DX65nU6Y>;>Jq!a0IQ~Zu1^}n}IZS590Mv6`b?EW&kpR7RLtGuBM(L=P zIyH%ov7Cx*qI1xVV~}9~x(!r8(!_Gm)#6WW&8g)o`{9RW>P zE$cI27)i(I{*+wz>M9Tl z=0uWH*eETzb`$dMFQ*Pz3e=rtzSK$DvY(urx<2>C=tggKfP zK>=xO9RoaWn44?FBHcDL&sE-hhAyT0#!>7Z7SFiXA|8LW@^6I{OEa%wR1d^|R(|Ab z+7*h~5fv7;0}LZeH_`zwEfjO&T)Oqd336f|pWcMLp^zY6BR`vZRz=TYmIQyA^xtDEKHUQpFA^R#XK1z343vJl<8w35>Wau9H5o-WHn+V6&_q(Pe8W{E@Q zpdLET{tQ}YAUMKUUYyyfaW&pTr5Jc#(N z3Y=G=T_g1cpDl?!05XtJ7rO9hmNdu`nfi5L{u0wUL?%PbP}|DRoH`=25>%HJct}az z2MJR)70GB*<*Z4Yyp?9e?W?215b2|0zBs*+TO55r4!B+ckXj+ zMHsRbW*v`t+Q-GI;^ZwH`%C-oFN*zNc!!qd!1(vlcs}(7G2aP5W4}spD+5+Nymga2 zDKOb}mU1Popl3C8OIUK65_CrwiS)%d&s69Q2dO5JcD+)NomYP|_|RwAmi}eIfM7@I z9{nO!5HukOQmI;qSg1$2))>JoByw1+;PG~f`|&|C+WPVQ{2d_lf~yoErvwHA7XYDx zJ)bItqjEc@IH&1iGml)kC%*S!&1}uS1?X&^9AgKuX)}f`(ux0;k zSugw3^c1yD6aHK0*bMNIJI;CZ)94vwY#gPGZF12hGHHNC?VTd5^V^Jz3$Nt`u<`+s zt-nq8Fl@$=!BEV+D1xWr$l$o_UT#DN$KA(kBK^lWGB}qF#?sXi863Cg&)ATQb8ML* z3hgelKu>Oz8N`S*WnxLen_|5ZSH;-u(>GIASZQy~)MJC;iL95^MKX9>0ELE<+BQW@ zk(h39Tp&&am&x%L%YY+z+2rfQ`I+Y_ICy(nJ^(-e1?IR>a-^VSOXW~uu(PGaX^(_mnk3P6K#DF$8tR!ER&I9?Ww#?!v%kixdQI<$|48&%%S{qux zZdeZsAwif^2QR=Jp)zl-S5>XR*ID(3xx^?h*&< za&J6$Ao?;LM_@!4GKL+{+->AZJc-kaz)qA>S;I-mI&JmuK1pUay^^4>Hkiy)bS z^aRMXY1U8WE6;-089bmA$6{i($rt@ncd3Ot5{tQ{J~GjhDfuls!;h)tO}0b2!46c! zWz4st?(c=(plW)eD#EMzKk}ba-cHUKC7vL0;h_6D2euW(#YD~FP`DE8h=Z%8R2fZHpubjQS ztw>`JG698OrtQ`$5ox~=PO9Kcue1NAum+{}zrrdaW7NM5+TW=RWB*0_dv{}q*~DnN zoA!5K+CfbFyM633mi9OGFa&vSgZ4M$)?(V(sxgV;!Q~+FVQ18|QDBjSShA&`ycfgMkJ;ZvkQ1(ipbjP)02vq#C{)=y?gp^~YMO4QX&4 z=VCa9;(Xdx2Vh@~fRVEaSjITkjl|qFnt(2~AhT|ux)ei%Rbp)q3tg2}WNm^(6fBW& za2J-T^RvrOnYmDF5e^&kqK|I+bt&rVvjQk?N?zKkr>qC zP{j>XkH`@jSzz#N7z1Y3jR6&qnbxs!+7HC3GHw`iXdGpxCv8hv#l}3#iwR>qt%sHI zr>=D@lg*DcVhZ%7=2j8iLU-;LKn($nbE}Yi;OGm{L0}AOPKU0W7JX6Iu+i!5!dx%L zkv6aOW5RR}%W88NxzOtYbAc8yC%a(|Oo1&O=M|Dc6eNNwAQ;!%Y%=Bqb1p{(lH%)d$0bF$wr^xI19g)t$AfH{kV zM;uVoPa2BkPTMuSD841)5gMvvRNYIZvmHS*@c^1&^TSGhS9#x2tymgI#uQniY+^Hr2I}xQIiM83)+k$sm~1 zzqofw--e)GPk|}7*^nY~W6~)P#!GxUEDyFt?Kt}o5p|sJnIr^E|vaWLLbihfh-R+I0ei)A7cRk zd5J4ry89<(-Ue;YLm5hFejdo&V(n&{ZU|^AIIv&zSHIwk7yWHAUVO2>=!;hdLFY?^ zU|J7FQkOr3@+6X>JQJyAeHdLY@Q``tef5oJ)i-`vG&lFd%Q<=^rYG?|JVj@JUwGdW zZaiQ2eXBCuC7aie?LGJ1dm;J$jBH*zw)gyZ@8#T2$>xK`_U?J*!{RI7BAZu@?LF_m z&fOuKSB~xd?{jaI%`4R6@L18#GuOQ1y=8ulBtT2n*D}X3T%J%oUY+1GuIiIp{zsp! zFBN8Sa(>}Rd-!>^%rV{~f2uy)U$9}S&S#F&n4itjZO0^z^)&{!ROxJUq^aTYFi(m# zx)gibo8K12w?sv+(fyw3e^=4YY;Nua9t>MAXbc-&tw~eVT(KmtbQ0ual!-QKCoF_C zx8fn;x{NkQC!dhstHM7vI-&v}2t9?Zz*x^@BANWL2vwkhCve5$3>@43b)nDkL!Qce zT$CT9&p^i++qYB7jXtpT&&lL*!F!T-it*n=9#LKrTw5B>2tq-i)EYpif(2`SWnY(bLGBaodU|7d^A5u4=Ix^d-4EiD^j9$;yh7-8o4 zp^z}EJT2vuWB<=cd9}>nAeye1r8!Xk_nArXz7M-Mi`?IY#f~hkULw5rB+l~Q7N#a( zD6eAq@hk`O02aSX$7!UVleMCSZxIyydJ&14o?U%^V-@Wl!X_avvg??`VHld_H)rf7 zY&T<@7Dml@8nBDKvuRegx%{pZ4->PB&8>FRrF$GzY3}&XqpHo_sw=G3@7d{f`v51s z?)4(mnW+^!Rju0D(yM!PFKF0-LVtX@j162>y2l^40ee`cFWcYNm*{U1r5;l=n90oG zi6eTrd89bJT}-t18++T)$K>R2QgL!pdQ<$#(WJ`MWm7ta77ps^q4Z{y_nMiNeg0ms zkEvu|P(uKH=g+@i%*xFy&BAyr{F$wDmd=JY1`O4;`WqHQRf^{=@x1U2d8DJCGS0OM zNR{jR!+Wds;&5Lc{}+LcAL+JiXkYv~%3qJo`I}PzTC7{|{lIzvu$LF0VNH>qEj`ZXI5tAB&H0*k*kFUjifr1w+YB=hTUwavcOOmVbjCz@s7ia6{y z1cP|ia0FlhxdpV#g7}S2;*H>xVL(_FzsqXg0V*7(UVszuSo03sv5Msjlee9)O?}V;%tg-&t zVBSm=_rly3C*0&b!gqmw50D=cP@WF-p95EhWU&$op|(WHrT zm1#feb~W6(l=Gm?_#V5oe-1!Vr5Qxam=Hs6P^2wRxvU=n9F5Orni%G(wuyh#VeoTf zKhn2wFbz53eFj>iZi%$oVe-k)Yqr4+Er{1Gsa9ST9u7^;GeW3R$UFos^5mhe&IxAQ zmRH#;m;vC?5B4Fq0FZE$&_pnav9~RNjUVX}Q4nJUqa!#wL_kpdwPYs@tGv_g-RIX%HX*sJ9AR&(DX&b0;GVrP5X(!EMLm*b